Buka cl in intel

9

Bagaimana cara mengkompilasi dan menjalankan kode cl terbuka pada prosesor intel i5 memiliki unit intel hd 4000 gpu ??? Open cl telah diinstal di / opt / intel / opencl dan versionis ubuntu 12.04. Bantuan apa pun akan sangat membantu ... Terima kasih

Piyush Kumar
sumber
Masalah apa yang kamu temui?
Thomas
jadi emulator ini berfungsi untuk intel ....
Piyush Kumar
@ Thomas, ketika saya menjalankan file, tidak menemukan file atau pustaka ... kesalahan mengatakan bahwa tidak ada file atau direktori CL / cl.h tidak ditemukan. Juga ada satu file bernama kernelBuilder, ketika saya mencoba menjalankannya, satu prompt muncul tetapi berhenti dan mengatakan bahwa GCOnf memperingatkan, klien gagal terhubung ke Daemon bus D dan tidak menerima balasan ....
Piyush Kumar
@ PiyushKumar sudo apt-get install opencl-headersmungkin. Setelah itu harus menemukan libOpenCL.so, tapi saya punya masalah besar di masa lalu dengan Intel gagal mendaftarkan perpustakaan dan menyebabkan kesalahan penautan.
Thomas
@ Thomas, akan mencobanya ... Kurasa aku bisa menggunakan pengalamanmu
Piyush Kumar

Jawaban:

10

Pertama:
sudo apt-get install beignet opencl-headers

Tambahkan folder beignet ke jalur pencarian perpustakaan Anda:

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

Dapatkan biner uji sederhana:

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

Edit makefile agar terlihat lebih seperti ini:

all: capsbasic

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

clean:
    rm -f capsbasic

Ini dia. OpenCL working-ish untuk keluarga kartu video HD intel ...

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
sumber
1
Terima kasih, tetapi menurut Intel mereka tidak mendukung OpenCL pada HD 4000 untuk Linux: OpenCL SDK 1.2 untuk Linux, tanpa Xeon? . Performa seperti apa yang Anda dapatkan?
nealmcb
1
Aha - sekarang saya melihat bahwa README.txt untuk beignet menjelaskan bahwa ini adalah alternatif dari OpenCL SDK Intel, yang memang mendukung HD 4000. Terima kasih !! Perhatikan bahwa orang-orang benar-benar harus menjalankan makejuga .... Apakah perlu menjalankan ldconfigbukti masalah dengan paket?
nealmcb
2
Performa, seperti yang terjadi, sangat buruk dan cukup glitchy. Kode yang berjalan pada implementasi opencl lain terkadang hanya crash atau error. Itu membiarkan Anda membangun hal-hal uji sepele tanpa mendorong ke rig komputasi.
RobotHumans
Saya rasa tidak perlu menambahkannya ke jalur pencarian perpustakaan Anda adalah masalah dengan perpustakaan. Jika Anda menggunakan OpenCL, asumsinya adalah Anda memiliki pengetahuan teknis. Secara pribadi, saya akan suka jika paket OpenCL semuanya dapat diinstal bersamaan dan Anda hanya bisa mengganti perpustakaan mana yang termasuk dalam jalur pencarian Anda dan menjalankan kembali ldconfig untuk menunjuk ke yang berbeda. Ini bisa berguna jika Anda memiliki kotak uji dengan ketiga "merek" chipset video sebagai lingkungan pengujian dan Anda menemukan cara untuk melakukan tolok ukur atau hanya menjalankan-uji kode Anda pada semua target yang mungkin.
RobotHumans
1
Itu masuk akal. Saya akan lebih siap dengan sesuatu seperti menampar joki, memperbarui-alternatif, atau apa pun. Beralih perpustakaan dengan sesuatu yang seharusnya mengganti perpustakaan? Tentu, itu sepertinya ide yang bagus untuk situasi yang tidak dapat dipertahankan.
RobotHumans
0

Untuk mengkompilasi Anda memerlukan kompiler seperti gcc. Anda dapat mengunduh gcc dari repositori-nya. (pilih nomor versi terbesar untuk lebih banyak fitur C ++ 11).

$> sudo apt-get install gcc-4.7

Setelah itu Anda harus menautkan pustaka OpenCL Anda ke aplikasi yang Anda kompilasi. Katakanlah kode aplikasi Host (main.c) dan kode aplikasi kernel (kernel.cl) berada di folder bernama test. Anda harus melakukan hal berikut:

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

Itu harus mengurus kompilasi. Anda harus menjalankan output sebagai:

$ test> ./ a.out

dan urus setiap kesalahan runtime yang mungkin Anda dapatkan (termasuk mengoreksi path ke Anda kernel.cl dll).

pengguna1855051
sumber