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


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

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.).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.