모든 사람은이 거대한 병렬화 된 슈퍼 컴퓨터를 데스크탑에 그래픽 카드 GPU 형태로 가지고 있습니다.
- GPU 커뮤니티와 "hello world"는 무엇입니까?
- 주요 GPU 공급 업체를위한 GPU 프로그래밍을 시작하려면 어떻게해야합니까?
-아담
모든 사람은이 거대한 병렬화 된 슈퍼 컴퓨터를 데스크탑에 그래픽 카드 GPU 형태로 가지고 있습니다.
-아담
답변:
GPU 프로그래밍을 수행하는 가장 쉬운 플랫폼 인 NVidia, IMO CUDA를 확인하십시오. 읽을 멋진 자료가 많이 있습니다.
http://www.nvidia.com/object/cuda_home.html
Hello world는 GPU를 사용하여 모든 종류의 계산을 수행하는 것입니다.
희망이 도움이됩니다.
다른 사람들이 당신의 두 번째 질문에 대답했다고 생각합니다. CUDA의 첫 번째 "Hello World"에 관해서는 표준이 있다고 생각하지 않지만 개인적으로 병렬 가산기 (즉, N 정수를 합산하는 프로그램)를 권장합니다.
NVIDIA SDK에서 "축소"예제를 살펴보면 표면적으로 간단한 작업을 확장하여 통합 읽기, 메모리 뱅크 충돌 및 루프 언 롤링과 같은 수많은 CUDA 고려 사항을 보여줄 수 있습니다.
자세한 내용은이 프레젠테이션을 참조하십시오.
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
ATI Stream Computing SDK를 살펴보십시오 . 스탠포드에서 개발 된 BrookGPU를 기반으로 합니다.
앞으로 모든 GPU 작업은 OpenCL을 사용하여 표준화 될 것 입니다. 그래픽 카드 공급 업체 중립적 인 애플 후원 이니셔티브입니다.
OpenCL 은 무엇보다도 GPU에 적합한 코드를 프로그래밍 할 수있는 크로스 플랫폼 라이브러리를 만들기위한 노력입니다. 어떤 GPU에서 실행 될지 몰라도 코드를 작성할 수 있으므로 특정 유형의 GPU를 대상으로하지 않고도 GPU 성능을보다 쉽게 사용할 수 있습니다. 네이티브 GPU 코드만큼 성능이 떨어지거나 GPU 제조업체가 허용하는 네이티브 성능이라고 생각하지만 일부 응용 프로그램에서는 그만한 가치가 있습니다.
여전히 초기 단계이지만 (이 답변의 1.1)이 산업에서 약간의 인기를 얻었습니다. 예를 들어 OS X 10.5 이상에서 기본적으로 지원됩니다.
CUDA는 시작하기에 훌륭한 프레임 워크입니다. C로 GPGPU 커널을 작성할 수 있습니다. 컴파일러는 코드에서 GPU 마이크로 코드를 생성하고 CPU에서 실행되는 모든 것을 일반 컴파일러로 보냅니다. NVIDIA에만 해당되며 8 시리즈 카드 이상에서만 작동합니다. CUDA 영역 을 확인하여 해당 영역 으로 수행 할 수있는 작업을 확인할 수 있습니다. CUDA SDK 에는 훌륭한 데모가 있습니다 . SDK와 함께 제공되는 설명서는 실제로 코드를 작성하기위한 좋은 출발점입니다. 매트릭스 곱셈 커널을 작성하는 과정을 안내합니다. 시작하기 좋은 곳입니다.
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를 실제로 지원합니다.
MATLAB을 사용하면 GPU를 기술 컴퓨팅 (매트릭스 계산 및 많은 수학 / 숫자 크 런칭)에 사용하는 것이 매우 간단 해집니다. 게임 이외의 GPU 카드 사용에 유용합니다. 아래 링크를 확인하십시오.