C++로 OpenCL2를 배우려고합니다. kubuntu 16.04.1 LTS 및 저장소의 beignet을 사용하고 있습니다. 내 노트북은 nvidia 또는 이와 유사한 인텔 i5-5200U가 포함 된 lenovo입니다. clinfo
명령은 플랫폼을 인식합니다. 내가 예에서 발견 첫 번째 버그는 내가 그것을 언급하지만, 여전히 많은 링크 오류가 발생하는 것을 시도했다 선언되지 않은 변수 output2
입니다 ... 예는이 최소한의 예입니다이 http://github.khronos.org/OpenCL-CLHPP/index.html#exampleOpenCL에서 예제를 컴파일 할 수 없습니다. C++ 바인딩 문서 (cl2.hpp)
입니다
MAIN.CPP :
// Defines the target OpenCL runtime version to build the header against.
// Defaults to 200, representing OpenCL 2.0.
#define CL_HPP_TARGET_OPENCL_VERSION 200
#include <CL/cl2.hpp>
int main()
{
return 0;
}
CMakeLists.txt :
cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
set(CMAKE_CXX_STANDARD 11) # C++11...
set(CMAKE_CXX_STANDARD_REQUIRED ON) #...is required...
set(CMAKE_CXX_EXTENSIONS OFF) #...without compiler extensions like gnu++11
project(exampleopencl2)
add_executable(exampleopencl2 main.cpp)
install(TARGETS exampleopencl2 RUNTIME DESTINATION bin)
링크 오류의 일부를 재현
내가이 코드를 컴파일 할 때 나는 KDevelop을 사용하고 난이 출력을 얻을 :
/home/deglans/ExampleOpenCL2/build> make -j2 mytests
Scanning dependencies of target mytests
[ 50%] Building CXX object CMakeFiles/mytests.dir/main2.cpp.o
[100%] Linking CXX executable mytests
CMakeFiles/mytests.dir/main2.cpp.o: In function `cl::detail::ReferenceHandler<_cl_device_id*>::release(_cl_device_id*)':
/usr/include/CL/cl2.hpp:1438: undefined reference to `clReleaseDevice'
CMakeFiles/mytests.dir/main2.cpp.o: In function `cl::detail::ReferenceHandler<_cl_context*>::release(_cl_context*)':
/usr/include/CL/cl2.hpp:1473: undefined reference to `clReleaseContext'
CMakeFiles/mytests.dir/main2.cpp.o: In function `cl::detail::ReferenceHandler<_cl_command_queue*>::release(_cl_command_queue*)':
/usr/include/CL/cl2.hpp:1482: undefined reference to `clReleaseCommandQueue'
collect2: error: ld returned 1 exit status
CMakeFiles/mytests.dir/build.make:94: recipe for target 'mytests' failed
make[3]: *** [mytests] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/mytests.dir/all' failed
make[2]: *** [CMakeFiles/mytests.dir/all] Error 2
CMakeFiles/Makefile2:116: recipe for target 'CMakeFiles/mytests.dir/rule' failed
make[1]: *** [CMakeFiles/mytests.dir/rule] Error 2
Makefile:175: recipe for target 'mytests' failed
make: *** [mytests] Error 2
*** Errore: Codice di uscita 2 ***
OpenCL 라이브러리와 연결하고 있습니까? [mcve]를 게시하십시오. 또한 OpenCL C++ 바인딩은 나를 슬프게 만듭니다. –