GPU 프로그래밍 소개 [닫기]


176

모든 사람은이 거대한 병렬화 된 슈퍼 컴퓨터를 데스크탑에 그래픽 카드 GPU 형태로 가지고 있습니다.

  • GPU 커뮤니티와 "hello world"는 무엇입니까?
  • 주요 GPU 공급 업체를위한 GPU 프로그래밍을 시작하려면 어떻게해야합니까?

-아담


1
GPGPU 또는 그래픽 코딩에 대해 이야기하고 있습니까?
Menkboy

5
CUDA (nVidia GPU 용 API) 및 기타 기술에 대해 이야기하고 있습니다. 비 그래픽 코딩을 위해 GPU에서 사용 가능한 FPU 장치 사용.
Wedge

1
참고로, 최신 GeForce 8800에는 ~ 1.3GHz에서 작동하는 128 개의 스트림 프로세서가 있고 GTX 280의 상단에는 240 개의 스트림 프로세서가 있으며이 GPU의 이론적 인 성능은 각각 0.5 및 0.9 TeraFLOPS입니다.
Wedge

답변:


70

GPU 프로그래밍을 수행하는 가장 쉬운 플랫폼 인 NVidia, IMO CUDA를 확인하십시오. 읽을 멋진 자료가 많이 있습니다. http://www.nvidia.com/object/cuda_home.html

Hello world는 GPU를 사용하여 모든 종류의 계산을 수행하는 것입니다.

희망이 도움이됩니다.


17
  1. 프로그래밍 가능한 정점 및 픽셀 셰이더를 통해 GPU에서 직접 코드를 실행하여 그려 질 버퍼를 조작 할 수 있습니다. 이 언어들 (즉, OpenGL의 GL Shader Lang 및 High Level Shader Lang 및 DirectX의 등가물)은 C 스타일 구문이며 사용이 매우 쉽습니다. XNA 게임 스튜디오와 Direct X에 대한 HLSL의 몇 가지 예를 여기 에서 찾을 수 있습니다. 적절한 GLSL 참조는 없지만 많은 것이 있습니다. 이 쉐이더 언어는 그래픽 카드에서 직접 정점 또는 픽셀 단위로 그려지는 것을 조작하여 그림자, 조명 및 꽃과 같은 것들을 구현하기가 매우 힘이 큽니다.
  2. 두 번째로 고려해야 할 것은 openCL 을 사용 하여 새로운 범용 GPU 라인을 코딩하는 것입니다. 이 사용법을 잘 모르겠지만 OpenCL은 그래픽 카드와 일반 CPU 모두에서 프로세서에 액세스 할 수있는 시작을 제공한다는 것을 이해합니다. 이것은 아직 주류 기술이 아니며 Apple이 주도한 것으로 보입니다.
  3. CUDA 는 뜨거운 주제 인 것 같습니다. CUDA는 nVidia가 GPU 성능에 액세스하는 방식입니다. 여기 소개가 있습니다

9

다른 사람들이 당신의 두 번째 질문에 대답했다고 생각합니다. CUDA의 첫 번째 "Hello World"에 관해서는 표준이 있다고 생각하지 않지만 개인적으로 병렬 가산기 (즉, N 정수를 합산하는 프로그램)를 권장합니다.

NVIDIA SDK에서 "축소"예제를 살펴보면 표면적으로 간단한 작업을 확장하여 통합 읽기, 메모리 뱅크 충돌 및 루프 언 롤링과 같은 수많은 CUDA 고려 사항을 보여줄 수 있습니다.

자세한 내용은이 프레젠테이션을 참조하십시오.

http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf



7

OpenCL 은 무엇보다도 GPU에 적합한 코드를 프로그래밍 할 수있는 크로스 플랫폼 라이브러리를 만들기위한 노력입니다. 어떤 GPU에서 실행 될지 몰라도 코드를 작성할 수 있으므로 특정 유형의 GPU를 대상으로하지 않고도 GPU 성능을보다 쉽게 ​​사용할 수 있습니다. 네이티브 GPU 코드만큼 성능이 떨어지거나 GPU 제조업체가 허용하는 네이티브 성능이라고 생각하지만 일부 응용 프로그램에서는 그만한 가치가 있습니다.

여전히 초기 단계이지만 (이 답변의 1.1)이 산업에서 약간의 인기를 얻었습니다. 예를 들어 OS X 10.5 이상에서 기본적으로 지원됩니다.


6

CUDA는 시작하기에 훌륭한 프레임 워크입니다. C로 GPGPU 커널을 작성할 수 있습니다. 컴파일러는 코드에서 GPU 마이크로 코드를 생성하고 CPU에서 실행되는 모든 것을 일반 컴파일러로 보냅니다. NVIDIA에만 해당되며 8 시리즈 카드 이상에서만 작동합니다. CUDA 영역 을 확인하여 해당 영역 으로 수행 할 수있는 작업을 확인할 수 있습니다. CUDA SDK 에는 훌륭한 데모가 있습니다 . SDK와 함께 제공되는 설명서는 실제로 코드를 작성하기위한 좋은 출발점입니다. 매트릭스 곱셈 커널을 작성하는 과정을 안내합니다. 시작하기 좋은 곳입니다.


5

CUDA 또는 OpenCL에 들어 가지 않고 GPU 프로그래밍에 들어가는 또 다른 쉬운 방법은 OpenACC 를 통해 수행하는 입니다.

OpenACC는 OpenMP와 같이 작동하며 컴파일러 지시문 (예 :) #pragma acc kernels을 사용하여 GPU로 작업을 보냅니다. 예를 들어, 큰 루프가있는 경우 (더 큰 루프 만 실제로 도움이 됨) :

int i;
float a = 2.0;
float b[10000];
#pragma acc kernels
for (i = 0; i < 10000; ++i) b[i] = 1.0f;
#pragma acc kernels
for (i = 0; i < 10000; ++i) {
  b[i] = b[i] * a;
}

편집 : 불행히도 PGI 컴파일러만이 NVIDIA GPU 카드에서 현재 OpenACC를 실제로 지원합니다.


3

GPU ++libSh 사용해 보기

LibSh 링크는 프로그래밍 언어를 그래픽 프리미티브 (그리고 프리미티브 자체)에 바인딩하는 방법에 대해 잘 설명하고 있으며, GPU ++는 코드 예제와 함께 그 모든 것을 설명합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.