2013-03-08 3 views
3

저는 C++에서 간단한 OpenCL 기반 프로그램을 빌드하고 AMD FirePro V4900 카드가있는 Windows 8 시스템에서 테스트했습니다. AMD APP SDK를 사용하고있었습니다.NVIDIA 하드웨어에서 OpenCL 프로그램 실행

바이너리를 다른 컴퓨터 (NVIDIA Quadro 4000 카드가있는 Windows 8)에 복사 할 때 "프로 시저 엔트리 포인트 clReleaseDevice를 동적 링크 라이브러리 (내 프로그램의 exe)에 위치시킬 수 없습니다"가 표시됩니다. 이 두 번째 머신에는 최신 NVIDIA 드라이버와 CUDA 5가 설치되어 있습니다.

NVIDIA 하드웨어와 함께 작동하게하려면 어떻게해야합니까?

+0

나는 이것이 그 태그를 제거 할 것이므로 쿠다와 관련이 없다고 생각하지 않습니다. –

+0

최소한 1) NVidia OpenCL 개발자 사이트를 확인하고, 2) NVidia SDK를 다운로드 한 다음 3) 필요한 NVidia .dll이 SDK에서 대상 컴퓨터로 모두 설치되었는지 확인하십시오. https : //developer.nvidia .com/opencl. 최근에 NVidia 하드웨어에 대한 AMD의 지원에 대해 AMD가 어색해하고있는 것 같습니다 :) – paulsm4

+0

AMD가 NVidia 하드웨어를 지원해야하는 이유는 무엇입니까? NVIDIA는 자체 하드웨어에 대해 OpenCL 사양을 올바르게 구현해야하며, NVidia OpenCL 구현은 CUDA 코드로 변환 된 씬 래퍼이므로 대부분 작동해야합니다. 내 생각 엔 OpenCL 1.1 구현을 사용하고 있습니다 (clReleaseDevice는 OpenCL 1.2에서만 존재합니다). NVidia가 OpenCL 1.2를 지원하지 않으면 물속에서 죽었습니다. – Thomas

답변

2

OpenCL 1.1 vs 1.2 버전 문제. Nvidia는 OpenCL 버전 1.1에서 계속 사용됩니다. 당신은 AMD의 OpenCL 1.2를 사용했습니다. 두 시스템에서 모두 작동하는 OpenCL 앱을 사용하려면 clReleaseDevice API 호출 및 기타 1.2 호출을 제거하고 1.1 버전 옵션이있는 AMD SDK를 사용하여 다시 컴파일해야합니다.

관련 문제