인텔에서 cl 열기


9

인텔 HD 4000 GPU 장치가있는 인텔 i5 프로세서에서 열린 cl 코드를 컴파일하고 실행하는 방법은 무엇입니까 ?? Open cl은 / opt / intel / opencl에 게시되었으며 versionis ubuntu 12.04입니다. 어떤 도움이라도 큰 도움이 될 것입니다 ... 감사합니다


어떤 문제가 발생 했습니까?
Thomas

그래서이 에뮬레이터는 인텔에서 작동합니다 ....
Piyush Kumar

@thomas, 파일을 실행할 때 파일이나 라이브러리를 찾지 못했습니다 ... 오류는 해당 파일이나 디렉토리 CL / cl.h를 찾을 수 없음을 나타냅니다. 또한 kernelBuilder라는 파일이 있는데, 실행하려고 할 때 하나의 프롬프트가 나오지만 GCOnf 경고가 중지되고 클라이언트가 D 버스 데몬에 연결하지 못하고 응답을받지 못했다고 말합니다 ....
Piyush Kumar

sudo apt-get install opencl-headers아마 @PiyushKumar . 그 후에는을 찾아야 libOpenCL.so하지만 이전에는 인텔에서 라이브러리를 등록하지 못하고 연결 오류를 일으키는 주요 문제가있었습니다.
Thomas

@ 토마스, 그것을 시도합니다 ... 내가 경험을 사용할 수있을 것 같아요
Piyush Kumar

답변:


10

먼저:
sudo apt-get install beignet opencl-headers

라이브러리 검색 경로에 beignet 폴더를 추가하십시오.

sudo su
echo "/usr/lib/beignet/" > /etc/ld.so.conf.d/beignet.conf
ldconfig
exit

간단한 테스트 바이너리를 얻으십시오.

git clone https://github.com/vpereira/CapsBasic-beignet

다음과 같이 makefile을 편집하십시오.

all: capsbasic

capsbasic: capsbasic.cpp Makefile
    g++ capsbasic.cpp -lcl -ocapsbasic -I/usr/include -L/usr/lib/beignet

clean:
    rm -f capsbasic

당신은 간다. 인텔 HD 비디오 카드 제품군에 적합한 OpenCL ...

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)

./capsbasic

Number of available platforms: 1
Platform names:
    [0] Experiment Intel Gen OCL Driver [Selected]
Number of devices available for each type:
    CL_DEVICE_TYPE_CPU: 0
    CL_DEVICE_TYPE_GPU: 1
    CL_DEVICE_TYPE_ACCELERATOR: 0

*** Detailed information for each device ***

CL_DEVICE_TYPE_GPU[0]
    CL_DEVICE_NAME: Intel HD Graphics Family
    CL_DEVICE_AVAILABLE: 1
    CL_DEVICE_VENDOR: Intel
    CL_DEVICE_PROFILE: FULL_PROFILE
    CL_DEVICE_VERSION: OpenCL 1.1
    CL_DRIVER_VERSION: 0.2
    CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.1
    CL_DEVICE_MAX_COMPUTE_UNITS: 128
    CL_DEVICE_MAX_CLOCK_FREQUENCY: 1000
    CL_DEVICE_MAX_WORK_GROUP_SIZE: 512
    CL_DEVICE_ADDRESS_BITS: 32
    CL_DEVICE_MEM_BASE_ADDR_ALIGN: 32
    CL_DEVICE_MAX_MEM_ALLOC_SIZE: 134217728
    CL_DEVICE_GLOBAL_MEM_SIZE: 4
    CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 65536
    CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: 8192
    CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 128
    CL_DEVICE_LOCAL_MEM_SIZE: 65536
    CL_DEVICE_PROFILING_TIMER_RESOLUTION: 80
    CL_DEVICE_IMAGE_SUPPORT: 1
    CL_DEVICE_ERROR_CORRECTION_SUPPORT: 0
    CL_DEVICE_HOST_UNIFIED_MEMORY: 0
    CL_DEVICE_EXTENSIONS: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_fp64 cl_khr_icd cl_khr_gl_sharing
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: 0
    CL_DEVICE_NATIVE_VECTOR_WIDTH_INT: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE: 16

1
고맙지 만 Intel에 따르면 Linux 용 HD 4000에서 OpenCL을 지원하지 않습니다. Linux 용 OpenCL SDK 1.2는 Xeon이 없습니까? . 어떤 종류의 성능을 얻고 있습니까?
nealmcb

1
Aha-이제 beignet 용 README.txt가 실제로 HD 4000을 지원하는 Intel OpenCL SDK의 대안이라고 설명합니다. 감사합니다 !! 사람들 make도 실제로 실행 해야합니다 .... ldconfig패키지에 문제가 있다는 증거 를 실행해야 합니까?
nealmcb

2
opencl과 마찬가지로 성능은 매우 열악하고 결함이 있습니다. 다른 opencl 구현에서 실행되는 코드는 때때로 충돌하거나 오류가 발생합니다. 컴퓨팅 장비를 사용하지 않고도 사소한 테스트 작업을 수행 할 수 있습니다.
RobotHumans

라이브러리 검색 경로에 추가해야 할 필요는 없다고 생각합니다. OpenCL을 사용하는 경우 기술적 인 노하우가 있다고 가정합니다. 개인적으로 OpenCL 패키지를 모두 동시에 설치할 수 있고 검색 경로에 포함 된 라이브러리를 전환하고 다른 라이브러리를 가리 키도록 ldconfig를 다시 실행할 수 있으면 좋겠습니다. 테스트 환경으로 3 개의 비디오 칩셋 "브랜드"가 모두 포함 된 테스트 상자가 있고 가능한 모든 대상에서 코드를 벤치마킹하거나 실행 테스트하는 방법을 고안 한 경우에 유용 할 수 있습니다.
RobotHumans 12

1
말이 되네요 나는 기수, 업데이트 대안, 또는 무엇이든 그것을 때리는 것과 같은 일을 더 많이 할 것입니다. 라이브러리를 전환해야하는 것으로 라이브러리를 전환 하시겠습니까? 물론, 그것은 참을 수없는 상황에 대한 좋은 생각처럼 보입니다.
RobotHumans

0

컴파일하려면 gcc와 같은 컴파일러가 필요합니다. 저장소에서 gcc를 다운로드 할 수 있습니다. (더 많은 C ++ 11 기능을 위해서는 가장 큰 버전 번호를 선택하십시오).

$> sudo apt-get 설치 gcc-4.7

그 후 OpenCL 라이브러리를 컴파일중인 응용 프로그램에 연결해야합니다. 호스트 응용 프로그램 (main.c) 코드와 커널 응용 프로그램 (kernel.cl) 코드가 test라는 폴더에 있다고 가정 해 봅시다. 다음과 같이해야합니다.

$ test> gcc -I / opt / intel / include -L / opt / intel / lib / [x86 또는 x86_64] /main.c -o a.out

컴파일을 처리해야합니다. 다음과 같이 출력을 실행해야합니다.

$ test> ./ a.out

그리고 당신이 얻을 수있는 런타임 오류를 처리하십시오 (kernel.cl 등의 경로 수정 포함).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.