인텔에서 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.