development

GPU 프로그래밍, CUDA 또는 OpenCL?

big-blog 2020. 10. 27. 22:46
반응형

GPU 프로그래밍, CUDA 또는 OpenCL?


저는 GPU 프로그래밍의 초보자입니다. NVIDIA GeForce GT 640 카드가 장착 된 노트북이 있습니다. 나는 두 가지 딜레마에 직면 해 있으며, 제안을 환영합니다.

  1. CUDA로 이동하면-Ubuntu 또는 Windows 분명히 CUDA는 Ubuntu에 설치하는 데 심각한 문제가 될 수 있지만 Windows에 더 적합합니다. Ubuntu 11.10Ubuntu 12.04 에 CUDA 5를 설치했다고 주장하는 블로그 게시물을 보았습니다 . 그러나 나는 그들을 일하게 할 수 없었다. 또한 표준 CUDA 교과서 는 Windows 도메인에서 작업하는 것을 선호하며 Unix / Ubuntu 설치 및 작업과 관련하여 다소 조용합니다.

  2. CUDA 또는 OpenCL- 이제 이것은 아마도 첫 번째 질문보다 더 까다로울 것입니다! 저는 주로 CUDA / Nvidia를 사용하는 GPGPU 프로젝트를 접했지만 OpenCL은 아마도 오픈 소스에서 차선책이며 Ubuntu에 설치하는 것은 문제가되지 않을 것입니다. 그러나 여기에 몇 가지 제안이 가장 유용 할 것입니다. CUDA가 아닌 OpenCL로 이동하면 기능이 희생됩니까?

도움이나 제안이 있습니까?


  1. OpenCL을 사용하는 경우 디스플레이 드라이버가 있으면 OpenCL 프로그램을 실행하기에 충분하고 프로그래밍을 위해 SDK를 설치하기 만하면되기 때문에 Windows와 Linux 모두에서 쉽게 사용할 수 있습니다. CUDA는 특정 GCC 버전 등에 대해 더 많은 요구 사항을 가지고 있습니다. 그러나 Linux에도 설치하는 것은 그리 어렵지 않습니다.

  2. Linux에서 CUDA에는 GCC 4.6 또는 4.7 사용과 같은 이상한 요구 사항이 있습니다. 다른 버전의 GCC를 사용하면 더 이상 프로그램을 컴파일 할 수 없습니다. OpenCL을 사용하는 경우 공통 OpenCL 라이브러리와 연결하기 만하면되기 때문에 모든 컴파일러를 사용할 수 있습니다. 따라서 OpenCL은 설정, 사용 및 컴파일이 더 쉽습니다. OpenCL 프로그램을 컴파일하면 다른 브랜드의 OpenCL SDK를 사용하여 컴파일 된 경우에도 모든 하드웨어에서 실행할 수 있습니다 (그렇게 코딩 된 경우).

Nvidia, AMD 및 Intel 하드웨어, GPU, CPU 및 가속기에서 작동하는 OpenCL 프로그램을 작성할 수 있습니다. 더욱이 Altera는 FPGA에서 OpenCL을 지원하기 위해 노력하고 있습니다! CUDA를 사용하는 경우 Nvidia GPU 만 사용하고 OpenCL 또는 다른 플랫폼 용 다른 언어로 코드를 다시 작성해야합니다. CUDA 사용의 심각한 제한 및 장기적으로 심각한 시간 낭비의 원인이됩니다.

누군가가 CUDA와 OpenCL 사이에 오래된 참조를 게시했지만 오래된 것입니다! 이러한 문서가 나오면 AMD만이 OpenCL을 제대로 지원했습니다. 2013 년부터 OpenCL은 ARM, Altera, Intel 등에서 지원되며 업계 표준이되었습니다.

유일한 단점은 OpenCL이 매우 유연하기 때문에 프로그램에서 메모리 할당, 전송 등을 코딩하는 더 많은 옵션과 방법에 직면한다는 것입니다. 따라서 아마도 더 복잡하게 느껴질 수 있습니다.


우분투에서 cuda 환경을 설정하는 것은 그리 어렵지 않다고 생각합니다. 시도해 볼 수 있습니다.

컴퓨팅 아키텍처 학생으로서 저는 OpenCL과 CUDA를 모두 배워야한다고 생각합니다. CUDA는 더 많은 하드웨어 및 런타임 정보를 노출하기 때문에 먼저 cuda를 배워야합니다. GPU 코드를 최적화하려면 하드웨어 인식이 매우 중요합니다.

참고 URL : https://stackoverflow.com/questions/18014327/gpu-programming-cuda-or-opencl

반응형