그래픽스 처리 장치에서의 범용 컴퓨팅

General-purpose computing on graphics processing units

GPGPU(General-Purpose Computing on Graphics Processing Unit)는 GPU(Graphics Processing Unit)를 사용하는 것으로, 통상은 컴퓨터 그래픽스 전용의 연산을 처리해, 종래의 중앙 처리 장치([1][2][3][4]CPU)에 의해서 처리되는 애플리케이션에서의 연산을 실시합니다.1대의 컴퓨터에 복수의 비디오 카드를 사용하는 것, 또는 다수의 그래픽 칩을 사용하는 것은, 그래픽 [5]처리의 기존의 병렬성을 한층 더 강화합니다.

기본적으로 GPGPU 파이프라인은 1개 이상의 GPU와 CPU 간의 병렬 처리로 데이터를 이미지 또는 다른 그래픽 형태로 분석합니다.GPU는 낮은 주파수로 동작하지만 일반적으로 코어 는 몇 배입니다.따라서 GPU는 기존의 CPU보다 훨씬 더 많은 사진과 그래픽 데이터를 초당 처리할 수 있습니다.데이터를 그래픽 형식으로 이행한 후 GPU를 사용하여 스캔 및 분석하면 처리 속도가 크게 향상됩니다.

GPGPU 파이프라인은 21세기 초에 그래픽 처리(예: 더 나은 셰이더)를 위해 개발되었습니다.이러한 파이프라인은 과학적 컴퓨팅 요구에 잘 부합하는 것으로 밝혀졌으며, 이후 이러한 방향으로 개발되어 왔습니다.

역사

원칙적으로 덧셈, 곱셈 및 기타 수학 함수를 포함한 임의의 부울 함수는 기능적으로 완전한 논리 연산자 집합에서 구축될 수 있습니다.1987년 Conway의 Game of Life는 비트 [6]벡터에 특별한 일련의 논리 연산을 호출하는 블리터라고 불리는 초기 스트림 프로세서를 사용한 범용 컴퓨팅의 첫 번째 예가 되었습니다.

GPU에서의 범용 컴퓨팅은 2001년경부터 프로그램 가능한 셰이더그래픽 프로세서의 부동소수점 지원의 등장으로 더욱 실용적이고 널리 보급되었습니다.특히 매트릭스나 벡터(특히 2차원, 3차원 또는 4차원 벡터)와 관련된 문제는 GPU로 쉽게 변환할 수 있었습니다.GPU는 표준 속도와 지원 기능을 갖추고 있습니다.GPGPU의 중요한 이정표는 2003년 [7][8]두 연구 그룹이 CPU보다 빠르게 실행되는 GPU의 일반적인 선형 대수 문제를 해결하기 위한 GPU 기반 접근방식을 독립적으로 발견한 것입니다.GPU를 범용 프로세서로 사용하기 위한 이러한 초기 노력에는 그래픽 프로세서의 두 가지 주요 API인 OpenGL과 DirectX에서 지원되는 그래픽 프리미티브 측면에서 계산상의 문제를 재구성해야 했습니다.이러한 번거로운 번역은 Sh/RapidMind, Brook,[9][10] Accelerator와 같은 범용 프로그래밍 언어와 API의 출현으로 사라졌습니다.

그 후 Nvidia의 CUDA는 프로그래머가 보다 일반적인 고성능 컴퓨팅 [11]개념을 위해 기본 그래픽 개념을 무시할 수 있도록 했습니다.하드웨어 벤더에 의존하지 않는 새로운 제품에는 Microsoft의 Direct Compute와 Apple/Khronos 그룹의 OpenCL[11]있습니다.즉, 최신 GPGPU 파이프라인은 데이터를 그래픽 형식으로 완전히 명시적으로 변환할 필요 없이 GPU의 속도를 활용할 수 있습니다.

GPGPU.org의 설립자인 Mark Harris가 GPGPU라는 용어만들었습니다.

실장

CPU에서 실행 중인 코드가 GPU 셰이더에서 반환 값을 폴링할 수 있도록 하는 모든 언어는 GPGPU 프레임워크를 만들 수 있습니다.
병렬 컴퓨팅의 프로그래밍 표준에는 OpenCL(벤더에 의존하지 않음), OpenACC, OpenMPOpenHMPP있습니다.

2016년 현재 OpenCL은 지배적인 오픈 범용 GPU 컴퓨팅 언어이며 Khronos [citation needed]Group에 의해 정의된 오픈 표준입니다.OpenCL은 CPU에서 데이터 병렬 컴퓨팅을 추가로 지원하는 크로스 플랫폼 GPGPU 플랫폼을 제공합니다.OpenCL은 Intel, AMD, Nvidia 및 ARM 플랫폼에서 적극적으로 지원됩니다.Kronos Group은 순수 C++11에 기반한 단일 소스 도메인 고유의 임베디드 언어로서 OpenCL의 상위 레벨 프로그래밍 모델인 SYCL도 표준화 및 구현하고 있습니다.

주요 독자 프레임워크는 Nvidia [12]CUDA입니다.Nvidia는 2006년에 CUDA를 출시했습니다.CUDA는 프로그래밍 언어 C를 사용하여 GeForce 8 시리즈 이후의 GPU에서 실행되는 알고리즘을 코드화할 수 있는 소프트웨어 개발 키트(SDK) 및 애플리케이션 프로그래밍 인터페이스(API)입니다.

2016년에 출시된 ROCm은 AMD의 CUDA에 대한 오픈 소스 대응으로, 2022년 현재 CUDA와 동등한 기능을 가지고 있으며, 아직 소비자 지지가 부족합니다.

Xcelerit[14]의해 개발된 Xcelerit [13]SDK는 GPU 상의 기존의 대규모 C++ 또는 C# 코드 베이스를 최소한의 노력으로 고속화할 수 있도록 설계되었습니다.심플한 프로그래밍 모델을 제공하고 병렬화를 자동화하며 디바이스와 메모리를 관리하고 CUDA 바이너리로 컴파일합니다.또, 멀티 코어 CPU나 그 외의 액셀러레이터는, 같은 소스 코드에서 타겟이 됩니다.

OpenVIDIA는 2003~[15]2005년 토론토 대학에서 Nvidia와 공동으로 개발되었습니다.

Altimesh가 작성한 Altimesh Hybridizer는 Common Intermediate [16][17]Language를 CUDA 바이너리로 컴파일합니다.범용 기능과 가상 [18]기능을 지원합니다.디버깅 및 프로파일링은 Visual Studio 및 Nsight와 [19]통합됩니다.Visual Studio Marketplace에서 Visual Studio 확장 기능으로 사용할 수 있습니다.

MicrosoftDirectX 11 API와 함께 출시된 Direct Compute GPU 컴퓨팅 API를 발표했습니다.

QuantAlea가[21] 작성한 Alea[20] GPU는 Microsoft의 네이티브 GPU 컴퓨팅 기능을 도입하고 있습니다.NET 언어 F#[22]C#.또한 Alea GPU는 대리인과 자동 메모리 [23]관리를 사용하여 GPU 병렬 및 병렬 애그리게이트를 기반으로 한 심플한 GPU 프로그래밍 모델을 제공합니다.

MATLAB병렬 컴퓨팅 도구 상자 및 MATLAB 분산 컴퓨팅 서버 [24]및 Jacket과 같은 서드파티 패키지를 사용하여 GPGPU 가속을 지원합니다.

GPGPU 프로세싱은 물리 [25]엔진에 의한 뉴턴 물리 시뮬레이션에도 사용됩니다.상업적인 구현에는 Havok Physics, FXPhysX가 포함됩니다.이것들은 모두 일반적으로 컴퓨터와 비디오 게임에 사용됩니다.

C++ Accelerated Massive Parallelism(C++ AMP)은 GPU 상의 데이터 병렬 하드웨어를 이용하여 C++ 코드의 실행을 가속화하는 라이브러리입니다.

모바일 컴퓨터

모바일 GPU의 전력화 추세에 따라 주요 모바일 운영체제를 실행하는 모바일 기기에서도 범용 프로그래밍이 가능해졌다.

구글 안드로이드 4.2는 모바일 디바이스 [26]GPU에서 RenderScript 코드를 실행할 수 있도록 했다.애플iOS 어플리케이션 전용 Metal API를 도입하여 애플의 GPU 컴퓨팅 셰이더를 통해 임의의 코드를 실행할 수 있도록 했다.

하드웨어 지원

컴퓨터 비디오 카드는 Nvidia, AMD다양한 벤더가 생산하고 있습니다.이러한 벤더의 카드는 정수 및 부동소수점 형식(32비트 및 64비트) 의 데이터 형식 지원을 구현하는 방법이 다릅니다.Microsoft는 그래픽 카드의 다양한 기능을 단순한 Shader Model 버전 번호(1.0, 2.0, 3.0 등)로 분류하기 위해 Shader Model 표준을 도입했습니다.

정수

DirectX 9 이전의 비디오 카드는 팔레트형 또는 정수형만을 지원했습니다.빨간색 요소, 녹색 요소 및 파란색 [citation needed]요소를 포함하는 다양한 형식을 사용할 수 있습니다.투명성을 위해 다른 알파 값이 추가되는 경우도 있습니다.일반적인 형식은 다음과 같습니다.

  • 픽셀당8비트– 팔레트모드일 수 있습니다.각 값은 테이블 내의 인덱스이며 다른 형식 중 하나로 실제 색상 값이 지정됩니다.빨간색은 3비트, 녹색은 3비트, 파란색은 2비트인 경우가 있습니다.
  • 픽셀당 16비트– 보통 비트는 빨강5비트, 초록6비트, 파랑5비트로 할당됩니다.
  • 픽셀당 24비트– 빨강, 초록, 파랑 각각8비트가 있습니다.
  • 픽셀당 32비트– 빨강, 초록, 파랑 및 알파 각각8비트가 있습니다.

부동 소수점 수

초기 고정 기능 또는 제한된 프로그래밍 가능 그래픽스(DirectX 8.1 준거 GPU까지 포함)의 경우 디스플레이에 사용되는 표현이기 때문에 충분했습니다.이 표현에는 일정한 제한이 있습니다.그래픽 처리 능력이 충분하다면 그래픽 프로그래머도 부동소수점 데이터 형식과 같은 더 나은 형식을 사용하여 하이 다이내믹 레인지 이미징 등의 효과를 얻고자 합니다.많은 GPGPU 애플리케이션에는 DirectX 9 사양에 준거한 비디오 카드가 부속된 부동 소수점 정확도가 필요합니다.

DirectX 9 Shader Model 2.x에서는 완전 정밀도와 부분 정밀도의 두 가지 정밀도 유형을 지원할 것을 제안했습니다.완전 정밀도 지원은 FP32 또는 FP24(컴포넌트당 부동소수점 32비트 또는 24비트) 이상이며 부분 정밀도는 FP16입니다.ATI의 Radeon R300 시리즈의 GPU는 프로그램 가능한 프래그먼트 파이프라인에서만 FP24 정밀도를 지원했습니다(단, FP32는 정점 프로세서에서 지원됨). NVIDIA의 NV30 시리즈는 FP16과 FP32를 모두 지원했습니다.S3 Graphics와 XGI와 같은 다른 벤더는 FP24까지 다양한 형식을 지원했습니다.

Nvidia GPU에서의 부동소수점 실장은 대부분 IEEE에 준거하고 있습니다.다만,[27] 이것은 모든 벤더에 대해서 적용되는 것은 아닙니다.이는 일부 과학적 응용 분야에서 중요하게 여겨지는 정확성에 영향을 미칩니다.64비트 부동소수점 값(이중 정밀도 부동소수점)은 CPU에서 일반적으로 사용 가능하지만 GPU에서는 일반적으로 지원되지 않습니다.일부 GPU 아키텍처는 IEEE 컴플라이언스를 희생하는 반면 다른 아키텍처는 2배의 정밀도가 없습니다.GPU에서 2배의 정밀도의 부동 소수점 값을 에뮬레이트하기 위한 노력이 이루어졌지만, 이 속도 저하는 컴퓨팅을 GPU에 오프로드하는 것의 이점을 [28]우선 무효로 합니다.

벡터화

GPU의 대부분의 조작은 벡터화된 방식으로 동작합니다.한 번에 최대 4개의 값에 대해1개의 조작을 실행할 수 있습니다.GPU는, 예를 들면, 어느 색상의 「R1, G1, B1」을 다른 색상의 「R2, G2, B2」로 변조하면, 그 결과 얻을 수 있는 색상의 「R1*R2, G1*G2, B1*B2」를 1회의 조작으로 생성할 수 있다.이 기능은 거의 모든 기본 데이터 유형이 벡터(2차원, 3차원 또는 4차원)[citation needed]이기 때문에 그래픽에서 유용합니다.예를 들어 정점, 색상, 법선 벡터 및 텍스처 좌표가 있습니다.다른 많은 응용 프로그램이 이를 유용하게 사용할 수 있으며, 그 고성능 때문에 SIMD(single instruction, multiple data)라고 불리는 벡터 명령이 CPU에서 [citation needed]오랫동안 사용 가능했습니다.

GPU와 CPU의 비교

원래 데이터는 중앙처리장치(CPU)에서 그래픽처리장치(GPU)로 단방향으로 전달된 후 표시장치로 전달되었습니다.그러나 시간이 경과함에 따라 GPU는 처음에는 단순하고 그 다음에는 복잡한 데이터 구조를 비디오 카드가 인식할 수 있는 2D 또는 3D 형식으로 표현된 일련의 과학 데이터나 이미지를 분석하는 CPU에 다시 전달하는 것이 중요해졌다.GPU는 모든 드로우 조작에 액세스 할 수 있기 때문에, 이러한 형식의 데이터를 신속히 분석할 수 있습니다.한편 CPU는 모든 픽셀 또는 데이터 요소를 폴링하는 속도가 훨씬 느립니다.이는 CPU와 랜덤 액세스 메모리 풀(더 나쁜 경우 하드 드라이브) 간의 액세스 속도가 일반적으로 다음을 포함하는 GPU 및 비디오 카드보다 느리기 때문입니다.더 적은 양의 더 비싼 메모리를 훨씬 더 빠르게 사용할 수 있습니다.능동적으로 분석해야 할 데이터 세트의 일부를 텍스처 또는 기타 읽기 쉬운 GPU 형태로 GPU 메모리에 전송하면 속도가 향상됩니다.GPGPU 설계의 특징은 GPU에서 CPU로 양방향으로 정보를 전송하는 기능입니다.일반적으로 양방향의 데이터 스루풋이 이상적으로 높기 때문에 사용률이 높은 특정 알고리즘의 속도에 승수 효과가 발생합니다.GPGPU 파이프라인은 특히 대규모 데이터 세트 및/또는 2D 또는 3D 이미지를 포함하는 데이터의 효율성을 개선할 수 있습니다.복잡한 그래픽스 파이프라인 및 과학적 컴퓨팅에 사용됩니다.게놈 매핑과 같은 대규모 데이터 세트를 가진 분야나 2차원 또는 3차원 분석이 유용한 분야, 특히 현재 생체분자 분석, 단백질 연구 및 기타 복잡한 유기화학 분야에서 많이 사용됩니다.이러한 파이프라인은, 화상 처리컴퓨터 비전등의 효율도 큰폭으로 향상할 수 있을 뿐만 아니라, 일반적으로 병렬 처리도 실시할 수 있습니다.매우 최적화된 일부 파이프라인은 사용률이 높은 하나의 작업에서 원래 CPU 기반 파이프라인의 수백 배 속도를 향상시켰습니다.

간단한 예로는 카메라 또는 컴퓨터 그래픽 프로그램에서 CPU의 메인 프로그램으로 일부 뷰를 렌더링할 때 평균 조명 값에 대한 데이터를 수집하여 CPU가 전체 화면 보기를 조정할 수 있도록 하는 GPU 프로그램을 들 수 있습니다.보다 고도의 예에서는, 예를 들면 모바일 로봇을 제어하는 컴퓨터 비전 프로그램에 수치 정보와 윤곽을 나타내는 처리 화상을 모두 되돌리기 위해서 에지 검출을 사용할 수 있습니다.GPU는 이미지 내의 모든 픽셀 또는 다른 화소에 로컬로 고속으로 액세스 할 수 있기 때문에 분석 및 평균화를 실시할 수 있습니다.또한 CPU보다 훨씬 빠른 속도로 Sobel 엣지 필터 또는 기타 컨볼루션필터를 적용할 수도 있습니다.이 필터는 일반적으로 그래픽의 저속 랜덤 액세스 메모리 복사본에 액세스해야 합니다.질문.

GPGPU는 기본적으로 소프트웨어 개념이지 하드웨어 개념이 아닙니다.이것은 알고리즘의 일종으로 기기의 일부가 아닙니다.그러나 특수 장비 설계는 GPGPU 파이프라인의 효율성을 더욱 높일 수 있습니다. GPGPU 파이프라인은 전통적으로 매우 많은 양의 데이터에 대해 비교적 적은 수의 알고리즘을 수행합니다.따라서 대규모 병렬화된 거대한 데이터 수준의 태스크는 랙 컴퓨팅(에 내장된 많은 유사하고 고도로 맞춤화된 머신)과 같은 특수한 셋업을 통해 더욱 병렬화할 수 있습니다.이러한 셋업에서는 세 번째 레이어(각 유닛은 다수의 CPU를 사용하여 다수의 GPU에 대응합니다.일부 Bitcoin "마이너"는 대량 처리를 위해 이러한 설정을 사용했습니다.

캐시

지금까지 CPU는 하드웨어 관리 캐시를 사용했지만 이전 GPU는 소프트웨어 관리 로컬 메모리만 제공했습니다.그러나 GPU가 범용 애플리케이션에 점점 더 많이 사용됨에 따라 최첨단 GPU는 하드웨어 관리 멀티 레벨 캐시를 사용하여 설계되고 있으며, GPU는 메인스트림 컴퓨팅으로 이행할 수 있게 되었습니다.예를 들어 GeForce 200 시리즈 GT200 아키텍처 GPU에는 L2 캐시가 없고, Fermi GPU에는 768 KiB 라스트 레벨 캐시가 있으며, Kepler GPU에는 1.5 MiB 라스트 [29]레벨 캐시가 있으며, Maxwell GPU에는 2 MiB 라스트 레벨 캐시가 있으며, Pascal GPU에는 4 MiB 라스트 레벨 캐시가 있습니다.

파일 등록

GPU에는 매우 큰 레지스터 파일이 있기 때문에 컨텍스트 스위칭 지연을 줄일 수 있습니다.또한 레지스터 파일 크기는 Maxwell(GM200), Pascal 및 Volta GPU의 총 레지스터 파일 크기는 각각 [30][31]6MiB, 14MiB 및 20MiB 등 GPU 세대별로 증가하고 있습니다.이에 비해 CPU의 레지스터 파일 크기는 일반적으로 수십 또는 수백 킬로바이트로 작습니다.

에너지 효율

GPU의 하이 퍼포먼스에는 높은 소비전력이 수반됩니다.이것에 의해, 실제로는, 최대 부하가 걸렸을 경우, PC 시스템의 나머지 부분을 [32]합친 만큼의 소비전력이 발생합니다.Pascal 시리즈 GPU(Tesla P100)의 최대 소비전력은 250W로 [33]정해져 있습니다.

스트림 처리

GPU는 그래픽스 전용으로 설계되어 있기 때문에 조작과 프로그래밍에 매우 제약이 있습니다.GPU는 설계상 스트림 처리를 사용하여 해결할 수 있는 문제에만 유효하며 하드웨어는 특정 방법으로만 사용할 수 있습니다.

정점, fragment 및 텍스처에 대한 다음 설명은 주로 GPGPU 프로그래밍의 레거시 모델에 관한 것으로, 그래픽 API(OpenGL 또는 DirectX)는 범용 계산을 수행하기 위해 사용되었다.CUDA(Nvidia, 2007) 및 OpenCL(벤더에 의존하지 않는, 2008) 범용 컴퓨팅 API의 도입으로 새로운 GPGPU 코드에서는 계산을 그래픽 프리미티브에 매핑할 필요가 없어졌습니다.GPU의 스트림 처리 특성은 사용되는 API에 관계없이 유효합니다.(예:[34]

GPU는 독립된 정점과 조각만 처리할 수 있지만, 많은 부분을 병렬로 처리할 수 있습니다.이것은 프로그래머가 같은 방법으로 많은 정점이나 단편들을 처리하고자 할 때 특히 효과적입니다.이 점에서 GPU는 스트림 프로세서입니다.한 번에 스트림 내의 여러 레코드에서 1개의 커널을 실행함으로써 병렬로 동작할 수 있는 프로세서입니다.

스트림은 단순히 유사한 계산이 필요한 레코드 세트입니다.스트림은 데이터 병렬 처리를 제공합니다.커널은 스트림의 각 요소에 적용되는 함수입니다.GPU에서 정점과 fragment는 스트림과 정점의 요소이며 fragment shader는 이들 [dubious ]위에서 실행되는 커널입니다.각 요소에 대해 입력에서 읽고, 해당 요소에 대한 작업을 수행하고, 출력에 쓸 수만 있습니다.복수의 입력과 복수의 출력을 가지는 것은 허용되지만, 판독 가능한 [vague]메모리와 기입 가능한 메모리는 사용할 수 없습니다.

산술 강도는 전송된 메모리의 워드당 수행된 연산 수로 정의됩니다.GPGPU 애플리케이션에서는 높은 산술 강도를 갖는 것이 중요합니다.그렇지 않으면 메모리 액세스 지연으로 인해 계산 [35]속도가 제한됩니다.

이상적인 GPGPU 애플리케이션은 대규모 데이터 세트, 높은 병렬 처리 및 데이터 요소 간의 의존성이 최소화됩니다.

GPU 프로그래밍 개념

계산 자원

GPU에는 다음과 같은 다양한 계산 리소스가 있습니다.

  • 프로그래머블 프로세서– 정점, 프리미티브, 프래그먼트 및 주로 컴퓨팅 파이프라인을 통해 프로그래머는 데이터 스트림 상에서 커널을 실행할 수 있습니다.
  • 래스터라이저 – 조각 생성 및 텍스처 좌표 및 색상 등의 버텍스 단위 상수 보간
  • 텍스처 유닛– 읽기 전용 메모리 인터페이스
  • 프레임 버퍼– 쓰기 전용 메모리 인터페이스

실제로 프로그램은 프레임 버퍼 대신 쓰기 전용 텍스처를 출력으로 대체할 수 있다.이 작업은 Render to Texture(RTT), Render-To-Backbuffer-Copy-To-Texture(RTBCTT) 또는 최신 스트림아웃을 통해 수행됩니다.

스트림으로서의 텍스처

GPGPU에서 스트림의 가장 일반적인 형태는 GPU에 내장된 렌더링 모델에 자연스럽게 적합하기 때문에 2D 그리드입니다.매트릭스 대수, 이미지 처리, 물리 기반 시뮬레이션 등 많은 계산이 그리드에 자연스럽게 매핑됩니다.

텍스처가 메모리로 사용되므로 텍스처 룩업이 메모리 읽기로 사용됩니다.따라서 특정 작업은 GPU에 의해 자동으로 수행될 수 있습니다.

커널

컴퓨팅 커널은 루프의 본체라고 할 수 있습니다.예를 들어 CPU의 그리드에서 작동하는 프로그래머의 코드는 다음과 같습니다.

// 입력 및 출력 그리드에는 10000 x 10000 또는 1억 개의 요소가 있습니다.  무효 transform_10k_by_10k_grid(흘러가다 [10000][10000], 흘러가다 나가.[10000][10000]) {     위해서 (인트 x = 0; x < > 10000; x++) {         위해서 (인트 y = 0; y < > 10000; y++) {             // 다음 행은 1억 번 실행됩니다.             나가.[x][y] = 힘든 일을 하다([x][y]);         }     } } 

GPU에서 프로그래머는 루프의 본체를 커널로 지정하고 지오메트리 처리를 호출하여 루프오버할 데이터를 지정합니다.

흐름 제어

순차 코드에서는 if-then-else 문과 다양한 형태의 루프를 사용하여 프로그램의 흐름을 제어할 수 있습니다.이러한 흐름 제어 구조는 최근에야 [36]GPU에 추가되었습니다.적절하게 조작된 일련의 산술/비트 연산을 사용하여 조건부 쓰기를 수행할 수 있었지만 루프 및 조건부 분기는 수행할 수 없었습니다.

최신 GPU에서는 분기를 사용할 수 있지만 일반적으로 성능 저하가 발생합니다.일반적으로 내부 루프에서는 CPU 코드든 GPU 코드든 분기는 피해야 합니다.또한 하드웨어 지원이 존재하지 않는 경우에는 정적 분기 해결, 사전 계산, 프레딕션,[37] 루프 분할, Z컬[38] 등의 다양한 방법을 사용하여 분기를 실현할 수 있습니다.

GPU 방식

지도

맵 조작은 지정된 함수(커널)를 스트림 내의 모든 요소에 적용합니다.간단한 예는 스트림의 각 값에 상수를 곱하는 것입니다(이미지의 밝기 증가).지도 조작은 GPU 상에서 간단하게 실행할 수 있습니다.프로그래머는 화면상의 각 픽셀에 대해 fragment를 생성하고 fragment 프로그램을 적용합니다.같은 크기의 결과 스트림이 출력 버퍼에 저장됩니다.

줄이자

일부 계산에서는 더 큰 스트림에서 더 작은 스트림(아마도 하나의 요소로만 구성된 스트림)을 계산해야 합니다.이것은 스트림의 감소라고 불립니다.일반적으로 여러 단계로 감량을 수행할 수 있습니다.이전 단계의 결과는 현재 단계의 입력으로 사용되며, 작업이 적용되는 범위는 스트림 요소가 하나만 남을 때까지 줄어듭니다.

스트림 필터링

스트림 필터링은 본질적으로 불균일한 감소입니다.필터링에는 일부 기준에 따라 스트림에서 항목을 제거하는 작업이 포함됩니다.

스캔

병렬 접두사 합이라고도 하는 스캔 연산은 데이터 요소의 벡터(스트림)와 ID 요소 'i'를 가진 (임의) 연관 이진 함수 '+'를 가져옵니다.입력이 [a0, a1, a2, a3, ...]인 경우, 배타적 스캔은 출력[i, a0, a0 + a1, a0 + a1, a0 + a1, a0 + a1, a0 + a1, a0 + a0 + a3, ...]를 생성하는 반면, 배타적 스캔은 출력[a0, a0 +1 + a2, a0 +2 + a3, ...]을 생성하며, a0 + a3, ...]을 필요로 하지 않습니다.언뜻 보기에는 이 조작이 본질적으로 직렬로 보일 수 있지만 효율적인 병렬 스캔 알고리즘이 가능하며 그래픽 처리 장치에 구현되어 있습니다.스캔 작업은 퀵소트 및 스파스 매트릭스-벡터 [34][39][40][41]곱셈과 같은 용도로 사용됩니다.

흩어지다

산란 연산은 정점 프로세서에서 가장 자연스럽게 정의됩니다.정점 프로세서는 정점의 위치를 조정할 수 있으며, 이를 통해 프로그래머는 그리드에 정보가 저장되는 위치를 제어할 수 있습니다.정점이 영향을 미치는 영역의 크기를 제어하는 등 다른 확장도 가능합니다.

fragment 프로세서는 그리드 상의 각 fragment의 위치는 fragment 작성 시 고정되며 프로그래머에 의해 변경될 수 없기 때문에 직접 산란 작업을 수행할 수 없습니다.단, 논리적인 산란 연산은 다른 수집 단계를 사용하여 재캐스트하거나 구현할 수 있습니다.산란 실장은 먼저 출력값과 출력 주소 모두를 방출합니다.직후의 수집 조작에서는, 주소의 비교를 사용하고, 출력 값이 현재의 출력 슬롯에 매핑 되고 있는지를 확인합니다.

전용 컴퓨팅 커널에서는 인덱스 기입을 통해 산포를 수행할 수 있습니다.

모이다

집결은 흩어지는 것의 반대이다.지도에 따라 산란 요소를 정렬한 후, 개더(gather)를 통해 사용된 지도 산란도에 따라 요소의 순서를 복원할 수 있습니다.전용 컴퓨팅 커널에서는 인덱스된 읽기로 수집을 수행할 수 있습니다.다른 셰이더에서는 텍스처 룩업을 사용하여 수행됩니다.

종류

정렬 작업은 순서가 없는 요소 집합을 순서가 지정된 요소 집합으로 변환합니다.GPU에서 가장 일반적인 구현은 정수와 부동소수점 데이터의 경우 기수 정렬을 사용하고 일반 비교 데이터의 경우 [42][43]거친 병합 정렬과 세분화된 정렬 네트워크를 사용하는 것입니다.

서치

검색 조작을 통해 프로그래머는 스트림 내에서 특정 요소를 찾거나 지정된 요소의 인접 요소를 찾을 수 있습니다.GPU는 개별 요소의 검색 속도를 높이기 위해 사용되는 것이 아니라 여러 검색을 [citation needed]병렬로 실행하는 데 사용됩니다.주로 사용되는 검색 방법은 정렬된 요소에 대한 이진 검색입니다.

데이터 구조

GPU에는 다음과 같은 다양한 데이터 구조를 표시할 수 있습니다.

적용들

GPU가 범용 컴퓨팅에 사용되고 있는 분야는 다음과 같습니다.

생물정보학

생물정보학에서의 [58][82]GPGPU 사용:

어플 묘사 지원되는 기능 예상되는 속도 향상 » GPU † 멀티 GPU 지원 릴리스 상태
바라쿠다 후생유전학을 포함한 DNA, 배열매핑[83] 소프트웨어 짧은 시퀀싱 판독치 정렬 6~10배 T 2075, 2090, K10, K20, K20X 네. 현재 버전 0.7.107f 사용 가능
CUDASW++ GPU에서 Smith-Waterman 단백질 데이터베이스 검색을 위한 오픈 소스 소프트웨어 Smith-Waterman 데이터베이스의 병렬 검색 10 ~ 50배 T 2075, 2090, K10, K20, K20X 네. 현재 버전 2.0.8 이용 가능
쿠쇼 병렬화된 짧은 읽기 얼라이너 병렬로 정확한 장시간 판독 얼라이너– 큰 게놈에 대한 정렬이 가능합니다. 10배 T 2075, 2090, K10, K20, K20X 네. 현재 버전 1.0.40 사용 가능
GPU-블라스트 빠른 k-tuple 휴리스틱을 사용한 로컬 검색 다중 CPU 스레드에 따른 단백질 정렬 3~4배 T 2075, 2090, K10, K20, K20X 싱글만 현재 버전 2.2.26 사용 가능
GPU-HMER 프로파일이 숨겨진 마르코프 모델을 사용한 로컬 및 글로벌 병렬 검색 숨겨진 마르코프 모델의 로컬 및 글로벌 병렬 검색 60~100배 T 2075, 2090, K10, K20, K20X 네. 현재 버전 2.3.2 사용 가능
mCUDA-MEME MEME 기반의 초고속 확장 가능한 모티브 검출 알고리즘 MEME 기반의 확장 가능한 모티브 검출 알고리즘 4 ~ 10 배 T 2075, 2090, K10, K20, K20X 네. 현재 버전 3.0.12 사용 가능
SeqNFind GPU 가속 시퀀스 분석 도구 세트 기준 조립체, 블라스트, Smith-Waterman, 흠, de novo 조립체 400배 T 2075, 2090, K10, K20, K20X 네. 지금 바로 이용 가능
우겐 SSE/CUDA, 접미사 배열 기반 반복 검색기 및 점도표용 Smith-Waterman 오픈소스 고속의 짧은 읽기 위치 맞추기 6~8배 T 2075, 2090, K10, K20, K20X 네. 현재 버전 1.11 사용 가능
와이드LM 고정 설계 및 반응에 여러 선형 모델을 적합시킵니다. 유사한 모양의 여러 모형에 대한 병렬 선형 회귀 분석 150배 T 2075, 2090, K10, K20, K20X 네. 현재 버전 0.1-1 사용 가능

분자역학

어플 묘사 지원되는 기능 예상되는 속도 향상 » GPU † 멀티 GPU 지원 릴리스 상태
전복 단백질, DNA 및 배위자의 시뮬레이션을 위한 생체 고분자 분자 역학 모델링 명시적 및 암묵적 용제, 하이브리드 몬테카를로 4~120배 T 2075, 2090, K10, K20, K20X 싱글만 현재 버전 1.8.88 이용 가능
ACEMD 분자역학력장, 암묵적 및 명시적 용제의 GPU 시뮬레이션 GPU에서 사용하기 위해 작성됨 160 ns/day GPU 버전만 T 2075, 2090, K10, K20, K20X 네. 지금 바로 이용 가능
오렌지 생체 분자에 대한 분자 역학 시뮬레이션을 위한 프로그램 세트 PMEMD: 명시적 및 암묵적 용제 89.44 ns/day JAC NVE T 2075, 2090, K10, K20, K20X 네. 현재 버전 12 + bugfix 9 이용 가능
DL-폴리 분산 메모리 병렬 컴퓨터에서 고분자, 폴리머, 이온 시스템 등을 시뮬레이션합니다. 2체력, 링크 셀 쌍, Ewald SPME력, Shake VV 4배 T 2075, 2090, K10, K20, K20X 네. 현재 버전 4.0 소스만 사용 가능
문자 생체 분자에 대한 분자 역학 시뮬레이션을 위한 MD 패키지. 암묵적(5배), 명시적(2배) 용매(오픈 경유)음. 미정 T 2075, 2090, K10, K20, K20X 네. 2012년 4분기 개발 중
그로맥스 복잡한 결합 상호작용을 가진 생화학 분자 시뮬레이션 암묵적(5배), 명시적(2배) 용제 165 ns/day DHFR T 2075, 2090, K10, K20, K20X 싱글만 버전 4.6은 2012년 4분기부터 이용 가능
HoOMD-Blue GPU용 파티클 다이내믹스 패키지 작성 완료 GPU용으로 작성 2배 T 2075, 2090, K10, K20, K20X 네. 지금 바로 이용 가능
램프 고전 분자 역학 패키지 Lennard-Jones, Morse, Buckingham, CHARMM, 표 형식, 코스 곡물 SDK, 이방성 Gay-Bern, RE-제곱, "하이브리드" 조합 3~18배 T 2075, 2090, K10, K20, K20X 네. 지금 바로 이용 가능
대규모 분자 시스템의 고성능 시뮬레이션을 위해 설계됨 1억 아톰 지원 6.44 ns/일 STMV 585 x 2050s T 2075, 2090, K10, K20, K20X 네. 현재 버전 2.9 사용 가능
오픈MM GPU 탑재 HPC용 분자역학 라이브러리 및 응용 프로그램 암묵적이고 명시적인 솔벤트, 커스텀 포스 암묵적: 127~213ns/일, 명시적: 18~55ns/일 DHFR T 2075, 2090, K10, K20, K20X 네. 현재 버전 4.1.1 사용 가능

§ 예상되는 속도 향상은 시스템 구성에 크게 의존합니다.GPU 퍼포먼스와 멀티코어 x86 CPU 소켓 비교.GPU 퍼포먼스는 GPU 지원 기능을 기반으로 벤치마킹되며 커널과 커널의 퍼포먼스 비교가 될 수 있습니다.사용되는 구성에 대한 자세한 내용은 응용 프로그램 웹 사이트를 참조하십시오.Nvidia 사내 테스트 또는 ISV 문서에 따라 속도 향상

§ Q=Guro GPU, T=Guro GPU. 이 어플리케이션에는 Nvidia가 GPU를 권장합니다.인증 정보를 얻으려면 개발자 또는 ISV에 문의하십시오.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Fung, et al., "컴퓨터 비전에 컴퓨터 그래픽 하드웨어를 사용하는 중급 현실" 아카이브, 2012년 4월 2일, 웨어러블 컴퓨팅에 관한 국제 심포지엄 2002(ISWC2002), 미국 시애틀, 2002년 10월 7-10일, 페이지 83-89.
  2. ^ Springer Verlag, Vol.7, Iss.3, 2003년에 출판된 ACM Personal and Ubitiquitous Computing, 웨어러블 컴퓨터 매개 현실을 위한 자이로스코프 추적 기능을 지원하는 EyeTap 비디오 기반 투영 모션 추정.
  3. ^ 「그래픽 처리 장치의 컴퓨터 비전 신호 처리」, IEEE 국제 음향, 음성, 신호 처리에 관한 회의(ICASSP 2004)의 속행, 2011년 8월 19일 웨이백 머신에 아카이브:몬트리올, 퀘벡, 캐나다, 2004년 5월 17일 ~ 21일, 페이지V-93 – V-96
  4. ^ 치티, D.M. (2007년, 7월)프로그래밍 가능한 그래픽 하드웨어사용한 유전자 프로그래밍에 대한 데이터 병렬 접근 2017년 8월 8일 Wayback Machine에서 보관.제9회 유전자 및 진화 계산에 관한 연례 회의의 계속에서 (1566-1573페이지).ACM.
  5. ^ 「여러 그래픽 카드를 범용 병렬 컴퓨터로 사용하는 경우: Applications to Computer Vision", 제17회 패턴인식에 관한 국제회의(ICPR2004)의 속행, 2011년 7월 18일 영국 케임브리지의 웨이백 머신에서 아카이브, 2004년 8월 23-26일, 제1권, 805-808페이지.
  6. ^ Hull, Gerald (December 1987). "LIFE". Amazing Computing. 2 (12): 81–84.
  7. ^ Krüger, Jens; Westermann, Rüdiger (July 2003). "Linear algebra operators for GPU implementation of numerical algorithms". ACM Transactions on Graphics. 22 (3): 908–916. doi:10.1145/882262.882363. ISSN 0730-0301.
  8. ^ Bolz, Jeff; Farmer, Ian; Grinspun, Eitan; Schröder, Peter (July 2003). "Sparse matrix solvers on the GPU: conjugate gradients and multigrid". ACM Transactions on Graphics. 22 (3): 917–924. doi:10.1145/882262.882364. ISSN 0730-0301.
  9. ^ Tarditi, David; Puri, Sidd; Oglesby, Jose (2006). "Accelerator: using data parallelism to program GPUs for general-purpose uses" (PDF). ACM SIGARCH Computer Architecture News. 34 (5). doi:10.1145/1168919.1168898.
  10. ^ Che, Shuai; Boyer, Michael; Meng, Jiayuan; Tarjan, D.; Sheaffer, Jeremy W.; Skadron, Kevin (2008). "A performance study of general-purpose applications on graphics processors using CUDA". J. Parallel and Distributed Computing. 68 (10): 1370–1380. CiteSeerX 10.1.1.143.4849. doi:10.1016/j.jpdc.2008.05.014.
  11. ^ a b Du, Peng; Weber, Rick; Luszczek, Piotr; Tomov, Stanimire; Peterson, Gregory; Dongarra, Jack (2012). "From CUDA to OpenCL: Towards a performance-portable solution for multi-platform GPU programming". Parallel Computing. 38 (8): 391–407. CiteSeerX 10.1.1.193.7712. doi:10.1016/j.parco.2011.10.002.
  12. ^ "OpenCL Gains Ground on CUDA". 28 February 2012. Archived from the original on 23 April 2012. Retrieved 10 April 2012. GPU 컴퓨팅의 양대 프로그래밍 프레임워크로서 OpenCL과 CUDA는 지난 몇 년간 개발자 커뮤니티에서 마인드 셰어를 놓고 경쟁해 왔습니다.
  13. ^ "Xcelerit SDK". XceleritSDK. 26 October 2015. Archived from the original on 8 March 2018.
  14. ^ "Home page". Xcelerit. Archived from the original on 8 March 2018.
  15. ^ James Fung, Steve Mann, Chris Aimone, "OpenVID"IA: Parallel GPU Computer Vision", ACM Multimedia 2005 진행 (싱가포르), 2005년 11월 6일 ~ 11월 11일 (849 ~ 852페이지)
  16. ^ "Hybridizer". Hybridizer. Archived from the original on 17 October 2017.
  17. ^ "Home page". Altimesh. Archived from the original on 17 October 2017.
  18. ^ "Hybridizer generics and inheritance". 27 July 2017. Archived from the original on 17 October 2017.
  19. ^ "Debugging and Profiling with Hybridizer". 5 June 2017. Archived from the original on 17 October 2017.
  20. ^ "Introduction". Alea GPU. Archived from the original on 25 December 2016. Retrieved 15 December 2016.
  21. ^ "Home page". Quant Alea. Archived from the original on 12 December 2016. Retrieved 15 December 2016.
  22. ^ "Use F# for GPU Programming". F# Software Foundation. Archived from the original on 18 December 2016. Retrieved 15 December 2016.
  23. ^ "Alea GPU Features". Quant Alea. Archived from the original on 21 December 2016. Retrieved 15 December 2016.
  24. ^ "MATLAB Adds GPGPU Support". 20 September 2010. Archived from the original on 27 September 2010.
  25. ^ a b 조셀리, 마크 등[dead link]
  26. ^ "Android 4.2 APIs - Android Developers". developer.android.com. Archived from the original on 26 August 2013.
  27. ^ GPU에 대한 컴퓨터 개념 매핑: Mark Harris.GPU에 컴퓨팅 개념을 매핑합니다.ACM SIGGRAPH 2005 코스 (로스앤젤레스, 캘리포니아, 2005년 7월 31일~8월 4일)J. 후지이, 에드SIGGRAPH '05. ACM 프레스, 뉴욕, 뉴욕, 50
  28. ^ GPU의 2배 정밀도 (ASIM 2005의 진행)Wayback Machine에서 2014년 8월 21일 아카이브:도미닉 고데케, 로버트 스트조드카, 스테판 투렉입니다(GPU)를 사용한 2배 정밀도(FEM) 시뮬레이션 가속.ASIM 2005 – 제18회 시뮬레이션 테크닉 심포지엄, 2005.
  29. ^ "Nvidia-Kepler-GK110-Architecture-Whitepaper" (PDF). Archived (PDF) from the original on 21 February 2015.
  30. ^ "Pascal 내부: 2017년 5월 7일 Wayback Machine에서 아카이브된 Nvidia 최신 컴퓨팅 플랫폼"
  31. ^ "Inside Volta: 세계 최첨단 데이터센터 GPU, 웨이백 머신에 2020년 1월 1일 아카이브 완료"
  32. ^ "https://www.tomshardware.com/reviews/geforce-radeon-power,2122.html 그래픽 카드에 필요한 전력은?"
  33. ^ "https://images.nvidia.com/content/tesla/pdf/nvidia-tesla-p100-PCIe-datasheet.pdf Nvidia Tesla P100 GPU 액셀러레이터, 2018년 7월 24일 웨이백 머신에 보관"
  34. ^ a b "D. Göddeke, 2010. Fast and Accurate Finite-Element Multigrid Solvers for PDE Simulations on GPU Clusters. Ph.D. dissertation, Technischen Universität Dortmund". Archived from the original on 16 December 2014.
  35. ^ Asanovic, K.; Bodik, R.; Demmel, J.; Keaveny, T.; Keutzer, K.; Kubiatowicz, J.; Morgan, N.; Patterson, D.; Sen, K.; Wawrzynek, J.; Wessel, D.; Yelick, K. (2009). "A view of the parallel computing landscape". Commun. ACM. 52 (10): 56–67. doi:10.1145/1562764.1562783.
  36. ^ "GPU Gems – Chapter 34, GPU Flow-Control Idioms".
  37. ^ 미래 칩스"가지 제거 튜토리얼", 2011
  38. ^ GPGPU 앙케이트 페이퍼 2007년 1월 4일 Wayback Machine에서의 아카이브: John D.오웬스, 데이비드 루브케, 나가 고빈다라주, 마크 해리스, 옌스 크뤼거, 애런 ELefohn과 Tim Purcell입니다.「그래픽·하드웨어의 범용 컴퓨팅에 관한 조사」.컴퓨터 그래픽스 포럼, 제26권, 제1호, 2007년, 페이지 80~113.
  39. ^ "S. Sengupta, M. Harris, Y. Zhang, J. D. Owens, 2007. Scan primitives for GPU computing. In T. Aila and M. Segal (eds.): Graphics Hardware (2007)". Archived from the original on 5 June 2015. Retrieved 16 December 2014.
  40. ^ Blelloch, G. E. (1989). "Scans as primitive parallel operations" (PDF). IEEE Transactions on Computers. 38 (11): 1526–1538. doi:10.1109/12.42122. Archived from the original (PDF) on 23 September 2015. Retrieved 16 December 2014.
  41. ^ "M. Harris, S. Sengupta, J. D. Owens. Parallel Prefix Sum (Scan) with CUDA. In Nvidia: GPU Gems 3, Chapter 39".[영구 데드링크]
  42. ^ 메릴, 듀안 GPU 컴퓨팅에 응용한 할당 지향 알고리즘 설계.버지니아 대학 컴퓨터 과학부 박사 학위 논문입니다.2011년 12월
  43. ^ 션 백스터. 2013년 Wayback Machine에서 2016년 10월 7일 최신 GPU 아카이브.
  44. ^ 렁, 앨런, 온데이지 로탁, 굴람 라사리."그래픽 처리 장치의 자동 병렬화"제7회 자바 프로그래밍 원칙 및 실천에 관한 국제회의의 진행.ACM, 2009.
  45. ^ 헨리슨, 트롤스, 마틴 엘스만, 코스민 E.오언사.사이즈 슬라이싱: 미래에서의 사이즈 추론을 위한 하이브리드 어프로치」제3회 ACM SIGPLAN 워크숍의 진행.고성능 기능 컴퓨팅에 관한 것입니다.ACM, 2014.
  46. ^ 바스카란, 무투 마니칸단 등"GPGPU를 위한 아핀 루프 최적화를 위한 컴파일러 프레임워크." 제22회 슈퍼컴퓨팅 국제회의 진행.ACM, 2008.
  47. ^ "K. Crane, I. Llamas, S. Tariq, 2008. Real-Time Simulation and Rendering of 3D Fluids. In Nvidia: GPU Gems 3, Chapter 30".[영구 데드링크]
  48. ^ "M. Harris, 2004. Fast Fluid Dynamics Simulation on the GPU. In Nvidia: GPU Gems, Chapter 38". Archived from the original on 7 October 2017.
  49. ^ 블록, 벤자민, 피터 비르나우, 그리고 토바이어스 프레이스."2D 이징 모델의 멀티 GPU 가속 멀티 스핀 몬테 카를로 시뮬레이션"컴퓨터 물리 통신 181.9 (2010): 1549-1556.
  50. ^ Sun, Shanhui, Christian Bauer, Reinhard Beichel."새로운 견고한 활성 형상 모델 접근방식을 사용하여 CT 데이터에서 폐암에 걸린 폐의 자동 3D 분할." 의료 영상 31.2(2011년): 449-460.
  51. ^ Jimenez, Edward S. 및 Laurel J. Orr. "컴퓨터 단층촬영 재구성과 GPGPU 컴퓨팅의 결합에 대해 생각합니다."관통 방사선 시스템 및 응용 프로그램 XIV. Vol. 8854.국제광학회, 2013.
  52. ^ 쇠렌센, 토마스 상길드 등"일반 그래픽 하드웨어의 고속 푸리에 변환 가속화." IEEE Transactions on Medical Imaging 27.4 (2008) : 538-547.
  53. ^ GPU를 사용한 빠른 k-근접 네이버 검색.미국 알래스카주, 앵커리지 GPU에 관한 컴퓨터 비전에 관한 CVPR 워크숍의 속행, 2008년 6월.V. 가르시아와 E.드브뢰브와 M. Barlaud.
  54. ^ M. Coccioni, R. Grasso, M. Rixen, 2011년 4월 11일 ~ 15일 파리, 2011년 4월 11일, 보안 및 방어 애플리케이션을 위한 계산 인텔리전스에 관한 IEEE 심포지엄에서 해양 운영 지원을 위한 고급 GPU 프로그래밍을 사용하여 고성능 퍼지 컴퓨팅 애플리케이션의 신속한 프로토타이핑
  55. ^ 와렌, 션"오디오와 그래픽 처리 장치"작성자 리포트, 캘리포니아 대학교 데이비스 47 (2005) : 51.
  56. ^ Wilson, Ron (3 September 2009). "DSP brings you a high-definition moon walk". EDN. Archived from the original on 22 January 2013. Retrieved 3 September 2009. Lowry is reportedly using Nvidia Tesla GPUs (graphics-processing units) programmed in the company's CUDA (Compute Unified Device Architecture) to implement the algorithms. Nvidia claims that the GPUs are approximately two orders of magnitude faster than CPU computations, reducing the processing time to less than one minute per frame.
  57. ^ Alerstam, E.; Svensson, T.; Andersson-Engels, S. (2008). "Parallel computing with graphics processing units for high speed Monte Carlo simulation of photon migration" (PDF). Journal of Biomedical Optics. 13 (6): 060504. Bibcode:2008JBO....13f0504A. doi:10.1117/1.3041496. PMID 19123645. Archived (PDF) from the original on 9 August 2011.
  58. ^ a b c Hasan, Khondker S.; Chatterjee, Amlan; Radhakrishnan, Sridhar; Antonio, John K. (2014). "Performance Prediction Model and Analysis for Compute-Intensive Tasks on GPUs" (PDF). Advanced Information Systems Engineering (PDF). Lecture Notes in Computer Science. Vol. 7908. pp. 612–617. doi:10.1007/978-3-662-44917-2_65. ISBN 978-3-642-38708-1.
  59. ^ "Computational Physics with GPUs: Lund Observatory". www.astro.lu.se. Archived from the original on 12 July 2010.
  60. ^ Schatz, Michael C; Trapnell, Cole; Delcher, Arthur L; Varshney, Amitabh (2007). "High-throughput sequence alignment using Graphics Processing Units". BMC Bioinformatics. 8: 474. doi:10.1186/1471-2105-8-474. PMC 2222658. PMID 18070356.
  61. ^ Svetlin A. Manavski; Giorgio Valle (2008). "CUDA compatible GPU cards as efficient hardware accelerators for Smith-Waterman sequence alignment". BMC Bioinformatics. 9 (Suppl. 2): S10. doi:10.1186/1471-2105-9-s2-s10. PMC 2323659. PMID 18387198.
  62. ^ Olejnik, M; Steuwer, M; Gorlatch, S; Heider, D (15 November 2014). "gCUP: rapid GPU-based HIV-1 co-receptor usage prediction for next-generation sequencing". Bioinformatics. 30 (22): 3272–3. doi:10.1093/bioinformatics/btu535. PMID 25123901.
  63. ^ 왕, 궈후이 등"모바일 GPU에서 OpenCL 프레임워크를 사용한 컴퓨터 비전 알고리즘 가속화 - 사례 연구." 2013 IEEE 국제 음향, 음성 및 신호 처리 컨퍼런스IEEE, 2013.
  64. ^ GPU 컴퓨팅은 2015년 1월 13일 Wayback Machine Vincent Boyer, Didier El Baz에서 아카이브되었습니다.「운용 연구에서의 GPU 컴퓨팅의 최근의 진보」.병렬 및 분산 프로세싱 심포지엄 워크숍 및 PhD 포럼(IPDPSW), 2013 IEEE 27th International, 페이지: 1778–1787
  65. ^ Bukata, Libor; Sucha, Premysl; Hanzalek, Zdenek (2014). "Solving the Resource Constrained Project Scheduling Problem using the parallel Tabu Search designed for the CUDA platform". Journal of Parallel and Distributed Computing. 77: 58–68. arXiv:1711.04556. doi:10.1016/j.jpdc.2014.11.005. S2CID 206391585.
  66. ^ Bäumelt, Zdeněk; Dvořák, Jan; Šůcha, Přemysl; Hanzálek, Zdeněk (2016). "A Novel Approach for Nurse Rerostering based on a Parallel Algorithm". European Journal of Operational Research. 251 (2): 624–639. doi:10.1016/j.ejor.2015.11.022.
  67. ^ CTU-IIG는 2016년 1월 9일 산업정보학 그룹 프라하에 있는 웨이백 기계 체코 기술대학에 보관되었습니다(2015년).
  68. ^ NRRPGPU 2016년 1월 9일 산업정보학 그룹 프라하의 Wayback Machine 체코 기술대학에 보관(2015년).
  69. ^ Naju Mancheril. "GPU-based Sorting in PostgreSQL" (PDF). School of Computer Science – Carnegie Mellon University. Archived (PDF) from the original on 2 August 2011.
  70. ^ Manavski, Svetlin A. "AES 암호화에 효율적인 하드웨어 액셀러레이터로서의 CUDA 호환 GPU." 2007년 IEEE 신호 처리 및 통신에 관한 국제 회의.IEEE, 2007.
  71. ^ Harrison, Owen; Waldron, John (2007). "AES Encryption Implementation and Analysis on Commodity Graphics Processing Units". Cryptographic Hardware and Embedded Systems - CHES 2007. Lecture Notes in Computer Science. Vol. 4727. p. 209. CiteSeerX 10.1.1.149.7643. doi:10.1007/978-3-540-74735-2_15. ISBN 978-3-540-74734-5.
  72. ^ SM4.0 준거 GPU에서의 AES 및 동작 모드.2010년 8월 21일 Wayback Machine Owen Harrison, John Waldron, Modern Graphics Hardware의 Practical Symmetric Key Cryptography에서 아카이브 완료.USENIX Security 2008 절차에서.
  73. ^ Harrison, Owen; Waldron, John (2009). "Efficient Acceleration of Asymmetric Cryptography on Graphics Hardware". Progress in Cryptology – AFRICACRYPT 2009. Lecture Notes in Computer Science. Vol. 5580. p. 350. CiteSeerX 10.1.1.155.5448. doi:10.1007/978-3-642-02384-2_22. ISBN 978-3-642-02383-5.
  74. ^ "Teraflop Troubles: The Power of Graphics Processing Units May Threaten the World's Password Security System". Georgia Tech Research Institute. Archived from the original on 30 December 2010. Retrieved 7 November 2010.
  75. ^ "Want to deter hackers? Make your password longer". NBC News. 19 August 2010. Retrieved 7 November 2010.
  76. ^ Lerner, Larry (9 April 2009). "Viewpoint: Mass GPUs, not CPUs for EDA simulations". EE Times. Retrieved 3 May 2009.
  77. ^ "W2500 ADS Transient Convolution GT". accelerates signal integrity simulations on workstations that have Nvidia Compute Unified Device Architecture (CUDA)-based Graphics Processing Units (GPU)
  78. ^ Gravity: Wayback Machine에서 2010년 7월 27일 아카이브된 대규모 병렬 안티바이러스 엔진.Giorgos Vasiliadis 및 Sotiris Ioannidis, Gravity: 대규모 병렬 안티바이러스 엔진.RAID 2010의 진행에 대해서.
  79. ^ "Kaspersky Lab utilizes Nvidia technologies to enhance protection". Kaspersky Lab. 14 December 2009. Archived from the original on 19 June 2010. During internal testing, the Tesla S1070 demonstrated a 360-fold increase in the speed of the similarity-defining algorithm when compared to the popular Intel Core 2 Duo central processor running at a clock speed of 2.6 GHz.
  80. ^ Gnort: 그래픽스 프로세서사용한 고성능 네트워크 침입 탐지 2011년 4월 9일 웨이백 머신에 아카이브.Giorgos Vasiliadis 등, Gnort: 그래픽 프로세서를 사용한 고성능 네트워크 침입 탐지.RAID 2008 의 순서로.
  81. ^ 침입 검지위한 그래픽 하드웨어 정규 표현 일치 2010년 7월 27일 웨이백 머신에 아카이브되었습니다.Giorgos Vasiliadis 등, 침입 검지를 위한 그래픽 하드웨어의 정규 표현 매칭.RAID 2009 의 순서로.
  82. ^ "Archived copy" (PDF). Archived (PDF) from the original on 25 March 2013. Retrieved 12 September 2013.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  83. ^ Langdon, William B; Lam, Brian Yee Hong; Petke, Justyna; Harman, Mark (2015). "Improving CUDA DNA Analysis Software with Genetic Programming". Proceedings of the 2015 on Genetic and Evolutionary Computation Conference - GECCO '15. pp. 1063–1070. doi:10.1145/2739480.2754652. ISBN 9781450334723. S2CID 8992769.