2013-08-02 4 views
58

저는 GPU 프로그래밍의 초보자입니다. NVIDIA GeForce GT 640 카드가 장착 된 노트북이 있습니다. 나는 2 가지 딜레마에 직면 해있다. 제안은 가장 환영 받는다. 내가 CUDA 갈 경우GPU 프로그래밍, CUDA 또는 OpenCL?

  1. 은 - 우분투 또는 Windows가 우분투에 설치하는 심각한 문제가 될 수 있지만 분명히 CUDA는 창에 더 적합합니다. CUDA 5를 Ubuntu 11.10Ubuntu 12.04에 설치했다고 주장하는 블로그 게시물을 보았습니다. 그러나, 나는 그들을 일하게 할 수 없었다. 또한 standard CUDA textbooks은 Windows 도메인에서 작업하는 것을 선호하며 Unix/Ubuntu 설치 및 작동에 대한 관심이 다소 줄어 듭니다.

  2. CUDA or OpenCL - 이제 제 첫 질문보다 더 까다 롭습니다. 나는 주로 CUDA/Nvidia를 사용하여 GPGPU 프로젝트를 보았습니다.하지만 OpenCL은 아마 오픈 소스에서 차선책으로 우분투에서 설치하는 것이 아마도 문제가되지 않을 것입니다.하지만 여기에 몇 가지 제안이 가장 유용 할 것입니다. OpenCL을 사용하고 CUDA를 사용하지 않는다면 어떤 기능을 희생합니까?

도움이나 제안이 있으십니까?

+2

첫 번째 질문에 대해서는 Windows가 현재 Linux보다 CUDA에서 더 잘 지원되고 있다는 느낌이 들었습니다. 나는 과거에 리눅스에서 CUDA를 광범위하게 사용했지만 설치는 항상 약간 까다 롭습니다. 귀하의 두 번째 질문에 관해서는, 나는 당신이 간단한 구글 검색, 예를 들어 [CUDA 대 OpenCL : 나는 사용해야합니까?] (http://wiki.tiker.net/CudaVsOpenCL)와 [차이점은 CUDA와 OpenCL의 차이점] 2010] (http://streamcomputing.eu/blog/2010-04-22/difference-between-cuda-and-opencl/). – JackOLantern

+2

Linux에서 CUDA 5.5 Production Release를 쉽게 설치할 수 있습니다 (https://developer.nvidia.com/content/cudacast-episode-5-install-cuda-55-linux-package-manager 참조). 또한 Linux의 CUDA 5.5에서 단일 GPU를 사용하여 디버그 CUDA 코드를 디버깅 할 수 있으며 계산 기능이 3.5 이상일 수 있습니다. 귀하의 경우는 아니지만 그것은 리눅스 사용자를위한 좋은 새로운 :) 윈도우 디버그 요구 사항에 대해 잘 모르겠습니다. – pQB

답변

78
  1. 당신의 OpenCL을 사용하는 경우, 디스플레이 드라이버를 갖는 오픈 CL 프로그램을 실행하기에 충분하기 때문에 쉽게 윈도우와 리눅스에 모두 사용할 수 있으며, 프로그래밍은 단순히 SDK를 설치해야합니다. CUDA는 특정 GCC 버전에 대한 더 많은 요구 사항을 가지고 있습니다. 그러나 Linux에도 설치하기가 그다지 어렵지 않습니다.

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

GPU, CPU 및 가속기의 Nvidia, AMD 및 Intel 하드웨어에서 작동하는 OpenCL 프로그램을 작성할 수 있습니다. 또한 알테라는 FPGA에서 OpenCL을 지원하기 위해 노력하고 있습니다! CUDA를 사용한다면 Nvidia GPU 만 사용하고 다른 플랫폼에서는 OpenCL 또는 다른 언어로 코드를 다시 작성해야합니다. CUDA 사용의 심각한 한계와 장기간에 걸친 심각한 시간 낭비.

누군가가 CUDA와 OpenCL 사이에 오래된 참조를 게시했음을 알았지 만, 그들은 오래되었습니다! 이 문서들이 나오자 AMD 만 OpenCL을 지원했다. OpenCL은 2013 년부터 ARM, Altera, Intel 등에서 지원되며 업계 표준이되었습니다.

유일한 단점은 OpenCL은 매우 유연하므로 프로그램에서 메모리 할당, 전송 등을 코딩하는 옵션과 방법이 더 많이 필요하다는 것입니다. 그러므로 아마 더 복잡하게 느껴질 것입니다.

5

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

컴퓨팅 아키텍처를 전공하는 학생으로서 OpenCL과 CUDA를 모두 배워야한다고 생각합니다. CUDA가 하드웨어 및 런타임 정보를 더 많이 제공하므로 CUDA를 먼저 배워야하며, GPU 코드를 최적화하려면 하드웨어 인식이 매우 중요합니다.