Otwórz cl w Intel

9

Jak skompilować i uruchomić otwarte kody CL na procesorach Intel i5 posiadających jednostkę Intel HD 4000 GPU ??? Open cl został zainstalowany w / opt / intel / opencl i versionis ubuntu 12.04. Każda pomoc byłaby bardzo pomocna ... Dzięki

Piyush Kumar
źródło
Z czym masz problem?
Thomas
więc ten emulator działa dla wywiadu ....
Piyush Kumar
@ Thomas, kiedy uruchamiam plik, nie można znaleźć żadnego pliku ani biblioteki ... błąd mówi, że nie znaleziono takiego pliku lub katalogu CL / cl.h. Jest też jeden plik o nazwie kernelBuilder, kiedy próbuję go wykonać, pojawia się jeden monit, ale zatrzymuje się i mówi, że ostrzeżenie GCOnf, klient nie nawiązał połączenia z demonem magistrali D i nie otrzymał odpowiedzi ....
Piyush Kumar
@PiyushKumar sudo apt-get install opencl-headersbyć może. Potem powinno się znaleźć libOpenCL.so, ale w przeszłości miałem poważne problemy z tym, że Intel nie zarejestrował biblioteki i spowodował błędy linkowania.
Thomas
@Thomas, spróbuje ... Chyba mógłbym użyć twoich eksperymentów
Piyush Kumar

Odpowiedzi:

10

Pierwszy:
sudo apt-get install beignet opencl-headers

Dodaj folder beignet do ścieżki wyszukiwania w bibliotece:

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

Uzyskaj prosty testowy plik binarny:

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

Edytuj plik makefile, aby wyglądał mniej więcej tak:

all: capsbasic

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

clean:
    rm -f capsbasic

Proszę bardzo. OpenCL działa dla rodziny kart Intel HD ...

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
RobotHumans
źródło
1
Dzięki, ale według Intela nie obsługują OpenCL na HD 4000 dla Linux: OpenCL SDK 1.2 dla Linux, bez Xeon? . Jakiego rodzaju wydajność otrzymujesz?
nealmcb
1
Aha - teraz widzę, że plik README.txt for beignet wyjaśnia, że ​​jest to alternatywa dla OpenCL SDK Intela, który rzeczywiście obsługuje HD 4000. Dziękuję !! Zauważ, że ludzie też muszą biec make… Czy potrzeba ldconfigdowodu na problem z pakietem?
nealmcb
2
Wydajność, jak mówi opencl, jest dość słaba i dość błędna. Kod, który działa na innych implementacjach opencl, czasami po prostu powoduje awarie lub błędy. Pozwala budować trywialne rzeczy testowe bez pchania się na platformę komputerową.
RobotHumans
Nie sądzę, że potrzeba dodania go do ścieżki wyszukiwania w bibliotece jest problemem w bibliotece. Jeśli używasz OpenCL, założeniem jest, że masz trochę wiedzy technicznej. Osobiście chciałbym, aby wszystkie pakiety OpenCL były instalowalne jednocześnie i można było po prostu zmienić bibliotekę, która była uwzględniona w ścieżce wyszukiwania i ponownie uruchomić ldconfig, aby wskazać inną. Może to być przydatne, jeśli masz środowisko testowe ze wszystkimi 3 markami chipsetu wideo jako środowisko testowe i opracowałeś sposób na przetestowanie lub po prostu przetestowanie kodu na wszystkich możliwych celach.
RobotHumans
1
To ma sens. Byłbym bardziej na pokładzie z czymś takim, jak uderzenie w dżokeja, alternatywy aktualizacji lub cokolwiek innego. Zamieniać biblioteki na coś, co powinno zamieniać biblioteki? Jasne, wydaje się, że to dobry pomysł na niemożliwą do utrzymania sytuację.
RobotHumans
0

Do kompilacji potrzebujesz kompilatora takiego jak gcc. Możesz pobrać gcc z jego repozytorium. (wybierz największy numer wersji, aby uzyskać więcej funkcji C ++ 11).

$> sudo apt-get install gcc-4.7

Następnie musisz połączyć bibliotekę OpenCL z kompilowaną aplikacją. Powiedzmy, że kod aplikacji hosta (main.c) i kod aplikacji jądra (kernel.cl) znajdują się w folderze o nazwie test. Powinieneś wykonać następujące czynności:

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

Powinien zająć się kompilacją. Powinieneś uruchomić dane wyjściowe jako:

$ test> ./ a.out

i zadbaj o ewentualny błąd środowiska wykonawczego (w tym poprawienie ścieżki do pliku kernel.cl itp.).

użytkownik1855051
źródło