2016-07-20 7 views
0

나는 최적화 목적으로 코어에서 OpenCL을 사용하는 소프트웨어를 가지고 있으며 모든 것이 잘 돌아가고 있으며, 이제이 소프트웨어를 다른 머신에 설치하기 위해 포장하고 있습니다.OpenCL 소프트웨어 배포

예를 들어 소프트웨어가 빌드 된 머신에서 CPU와 GPU가 두 개 있고 소프트웨어가 OpenCL 초기화에 의해 반환 된 모든 장치를 감지하는 것으로 혼란 스럽습니다 ... so ... 모든 다른 공급 업체를 위해 모든 OpenCL Dll 및 라이브러리를 배포해야합니까?

누구나 시스템 유형을 사용하는 소프트웨어를 배포하는 가장 좋은 방법은 무엇입니까?

도움이 될 것입니다.

종류 감사합니다.

답변

0

코드가 대상 시스템에서 컴파일됩니다. 사용 가능한 장치에서만 커널을 파견해야합니다. 따라서 런타임시 커널은 OpenCL을 지원하는 장치에서만 실행됩니다. 물론이 말은 OpenCL을 인식하는 장치가있는 컴퓨터에서만 최적화를 활용한다는 의미입니다.

+0

하지만이 소프트웨어가 게임이라면? 이 소프트웨어는 커널과 장치를 동적으로 매핑하지만 사용자 중 한 명은 NVIDIA를 사용하고 다른 한 명은 AMD 만 사용합니까? 나는 사용자 컴퓨터에서 컴파일 할 수있는 옵션이 없다. 그래서 사용자가 자신의 시스템 용 드라이버를 설치하도록 요청해야합니까? –

+0

HW가 OpenCL을 지원하는 한 괜찮습니다. 그렇지 않으면 사용자 (또는 사용자)가 느슨합니다. ARM에서 인텔 컴파일 코드를 실행할 것으로 예상되지는 않습니까? –

1

OpenCL 공급 업체 라이브러리는 이제 각 GPU 공급 업체의 그래픽 드라이버 패키지의 일부입니다. 또한 OpenCL 또는 해당 공급 업체 라이브러리를 배포 할 필요가 없도록 그래픽 드라이버를 설치할 때 일반 OpenCL.dll을 설치하고 등록합니다.

이것은 AMD/ATI, nVidia 및 Intel GPU에서 작동합니다. 그러나 다른 GPU 공급 업체에서는 작동하지 않을 수 있습니다. 불행히도 이것은 합리적으로 새로운 GPU와 최신 드라이버에만 적용됩니다. 지난 12-18 개월을 가정 해 봅시다. 다음과 같은 시나리오를 조사해야한다 :

윈도우는 일반 드라이버없이 공급 업체 특정 드라이버와 GPU를 실행할 수 있습니다
    1. 이 드라이버는 몇 년 구식이되어 새로운 드라이버가
    2. 를 설치하지
    3. 설치되어 새로운 드라이버
    4. GPU가 오픈 CL을 모든 경우에

    사용자가 최신 GPU 드라이버를 설치해야 사용할 수없는 경우는 다음 보통의 OpenCL 어쨌든 사용할 수 없습니다를 지원하지 않습니다이다. 이것은 일부 설치 프로그램 논리/상호 작용에 의해 수행되어야하는 시나리오입니다.

    두 가지 문제가 남아 있습니다. 첫째, SIMD (SSE2/AVX)가있는 CPU를 OpenCL 플랫폼으로 사용하려면 OpenCL 패키지가있는 Intel CPU를 수동으로 설치해야합니다. 이 작업은 GPU 드라이버 설치와 비슷하며이 시나리오는 일부 설치 프로그램 논리로 처리해야합니다. Intel에서 공급 업체 DLL을 배포하는 것을 권장하지 않으며 Intel에서 적절한 OpenCL CPU 패키지 설치 프로그램을 제안합니다.

    두 번째 문제는 공급 업체 또는 드라이버 패키지에서 OpenCL이 설치되어 있지 않으면 보통 OpenCL.dll도 누락 된 것입니다. 거의 항상이 라이브러리는 동적으로 연결되며 주문형이 아닙니다 (GetProcAddress). 따라서 OpenCL을 사용하는 모든 응용 프로그램은로드되지 않고 DLL을 찾을 수 없습니다. 메시지 상자로 중지됩니다. 응용 프로그램이보고하거나 도움을 줄 수있는 변경조차 없습니다. 이를위한 가장 좋은 해결책은 load-delay (링커 설정에서 OpenCL.lib을로드 지연으로 지정)를 사용하고 첫 번째 OpenCL API가 사용되기 전에 응용 프로그램에서 시스템에 일반적인 dll-in-check를 수행하는 것입니다 라는. 그런 다음 합리적인 사용자 상호 작용 및 지원을 제공하십시오.

    또한 모든 3 개 시장 공급 업체는 최종 사용자 OpenCL 배포 패키지를 가지고 있습니다. 비록 최신 드라이버를 대신 설치하는 것이 좋습니다.

  • 관련 문제