2011-04-08 1 views
3

OpenCL로 할 수있는 멋진 것들을 동료에게 보여 주려고했으나 임원이 그녀의 컴퓨터에서 실행되지 않습니다. 일부 libopencl.so (또는 이와 유사한) 파일이 누락되었습니다 (예 : 그녀는 OpenCL이 설치되지 않았습니다). 그래서 아마도 다소 기본적인 (리눅스) 질문은, 내 작은 C + OpenCL 프로그램이 OpenCL 없이도 컴퓨터에서 실행될 수있는 모든 필요한 so 파일을 어떻게 포함시킬 수 있습니까?OpenCL 라이브러리를 포함하여 독립 실행 형 응용 프로그램을 만드는 방법은 무엇입니까?

+2

적어도 원격으로 이식 가능하거나 신뢰할 수있는 방법이 아닙니다. OpenCL은 다양한 하드웨어 구성 요소에서 (그리고 이질적으로도) 실행될 수 있기 때문에 대상 시스템에 OpenCL이 제대로 설치되어 있어야합니다. _some library_를 복사하는 것으로는 충분하지 않습니다. 종종 OpenCL은 디스플레이 드라이버와 함께 "보너스 설치"로 제공됩니다. 그렇지 않은 경우 친구는 최후의 수단으로 AMD에서 자유롭게 사용할 수있는 x86 소프트웨어 구현 (스트림 SDK 검색)을 설치할 수 있습니다. – Damon

답변

2

Damon의 의견에 이미 언급했듯이 각 종류의 장치에는 자체 공급 업체가 있고 해당 공급 업체에는 자체 OpenCL 구현이 있기 때문에 일반적인 방법으로는 불가능합니다. 그러나, 당신이하고 싶은 것이 단순히 대부분의 리눅스 컴퓨터에서 실행될 OpenCL 응용 프로그램의 "휴대용"사본을 가지고 있다면 그것을 달성 할 수있는 방법이 있습니다.

  1. AMD APP SDK (현재 버전 2.4)를 다운로드하십시오. 필자는 64 비트 버전을 가정하고 있지만 32 비트 또는 다른 버전 번호와 거의 동일해야하며 해당 문자열을 변경하면됩니다.

  2. 응용 프로그램 실행 파일의 하위 디렉토리로 SDK를 추출하십시오. 따라서 애플리케이션이 $ HOME/myapp에있는 경우 SDK 파일은 $ HOME/myapp/AMD-APP-SDK-v2.4-lnx64에 있어야합니다.

  3. ICD 파일을 icd-registration.tgz 아카이브에서 icd라는 폴더로 추출하십시오. 따라서 $ HOME/myapp/AMD-APP-SDK-v2.4-lnx64/icd/amdocl32.icd (및 amdocl64.icd)가 있어야합니다.

이제 우리는 대부분의 x86 프로세서에서 작동하는 AMD APP SDK의 휴대용 설치 작업을 수행했습니다. 응용 프로그램을 시작하기 전에 적절한 환경 변수를 설정하기 만하면됩니다. 나는 GNU/Linux 사용자가 아니기 때문에 bash에 대해 잘 모르기 때문에 휴대용 디렉토리에 대한 경로를 하드 코드했습니다. 아마도 현재 위치를 자동으로 가져 오는 것이 가능할 것입니다. 이는 분명 훨씬 더 좋을 것입니다.

#!/bin/bash 
DIRECTORY=$HOME/myapp 
export OPENCL_VENDOR_PATH=$DIRECTORY/AMD-APP-SDK-v2.4-lnx64/icd 
export AMDAPPSDKROOT=$DIRECTORY/AMD-APP-SDK-v2.4-lnx64 
export LD_LIBRARY_PATH=$AMDAPPSDKROOT/lib/x86_64:$LD_LIBRARY_PATH 
./myapp 

위의 스크립트는 응용 프로그램의 루트 디렉토리 (예 : $ HOME/myapp/scriptname)에 있어야합니다. 따라서 ./scriptname을 사용하여 이식 가능한 응용 프로그램을 시작할 수 있습니다. 위의 스크립트가 프로그램에 대한 인수를 처리하고 스크립트 위치를 자동으로 파악하는 것은 훨씬 더 좋을 것입니다. 그러나이를 수행하는 일반적인 방법을 보여 주어야합니다.

+0

안녕 Quantumboredom, 노력을 기울여 주셔서 감사합니다. NVIDIA를 사용하여 개발했지만 NVIDIA SDK에 단계를 적용하려고 노력할 것입니다. – Framester

+1

Nvidia 카드가 없지만 AFAIK Nvidia는 CUDA/OpenCL 런타임 구성 요소를 해당 드라이버와 번들로 제공하며 OpenCL이 Nvidia GPU에서 작동하려면 Nvidia의 드라이버를 설치해야하므로이 방법은 없습니다. 응용 프로그램을 Nvidia GPU에서 실행하려면 Nvidia의 드라이버를 정상적으로 설치해야합니다. 그러나 Nvidia의 OpenCL SDK를 사용하여 개발되고 컴파일 된 OpenCL 응용 프로그램은 필자가 설명한 것처럼 (그러나 분명히 대신 CPU를 사용하는) 휴대용 솔루션에서 실행해야합니다. – Quantumboredom

관련 문제