Intel'de açık cl


9

Intel HD 4000 GPU Ünitesine sahip Intel i5 işlemcilerde açık cl kodları nasıl derlenir ve çalıştırılır? Açık cl / opt / intel / opencl ve versionis ubuntu 12.04 içine yerleştirilmiştir. Herhangi bir yardım çok yardımcı olurdu ... Teşekkürler


Hangi problemle karşılaşıyorsunuz?
Thomas

yani bu emülatör intel için çalışıyor ....
Piyush Kumar

@homas, dosyayı çalıştırırken, herhangi bir dosya veya kütüphane bulamıyor ... hata böyle bir dosya veya dizin CL / cl.h bulunamadı diyor. Ayrıca, kernelBuilder adlı bir dosya var, ben çalıştırmayı denediğimde, bir istem geliyor ama durur ve GCOnf uyarısı, istemci D otobüsü Daemon'a bağlanamadı ve bir cevap almadı diyor ....
Piyush Kumar

@PiyushKumar sudo apt-get install opencl-headersbelki. Bundan sonra bulmak gerekir libOpenCL.so, ama geçmişte Intel kitaplığı kaydettirme başarısız ve bağlantı hataları neden büyük sorunları vardı.
Thomas

@Thomas, deneyeceğim ... Sanırım ur deneyimlerini kullanabilirsiniz
Piyush Kumar

Yanıtlar:


10

İlk:
sudo apt-get install beignet opencl-headers

Beignet klasörünü kitaplık arama yolunuza ekleyin:

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

Basit bir test ikili dosyası edinin:

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

Makefile'ı aşağıdaki gibi görünecek şekilde düzenleyin:

all: capsbasic

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

clean:
    rm -f capsbasic

İşte böyle. Intel HD ekran kartları ailesi için OpenCL çalışma programı ...

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
Teşekkürler, ancak Intel'e göre Linux için HD 4000'de OpenCL'yi desteklemiyorlar: Linux için OpenCL SDK 1.2, Xeon olmadan? . Ne tür bir performans elde ediyorsunuz?
nealmcb

1
Aha - şimdi görüyorum ki beignet için README.txt, Intel'in HD 4000'i gerçekten destekleyen OpenCL SDK'sına bir alternatif olduğunu açıklıyor. Teşekkürler !! Not millet de gerçekten çalıştırmak zorunda make.... ldconfigPaket ile ilgili bir sorun kanıt çalıştırmak için gerek var mı ?
nealmcb

2
Opencl'in yaptığı gibi performans oldukça zayıf ve oldukça glitchy. Diğer opencl uygulamalarında çalışan kod bazen çöküyor veya hata veriyor. Bir hesaplama donanımına zorlamadan önemsiz test şeyleri oluşturmanıza izin verir.
RobotHumans

Bunu kütüphane arama yolunuza eklemenin kitaplıkla ilgili bir sorun olduğunu düşünmüyorum. OpenCL kullanıyorsanız, bazı teknik bilgi birikimine sahip olduğunuz varsayımı. Şahsen, OpenCL paketleri aynı anda yüklenebilseydi ve arama yolunuza dahil edilen kütüphaneyi değiştirebilir ve ldconfig dosyasını farklı bir yere işaret edecek şekilde yeniden çalıştırabilirsiniz. Test ortamı olarak 3 video yongaseti "markası" nı içeren bir test kutunuz varsa ve kodunuzu olası tüm hedeflerde karşılaştırmak veya çalıştırmak için bir yol bulduysanız bu yararlı olabilir.
RobotHumans

1
Mantıklı. Daha çok jokey, güncelleme alternatifleri ya da her neyse onu tokatlamak gibi bir şeyle uğraşırdım. Kitaplıkları, kitaplıkları değiştirmek için gereken bir şeyle değiştirmek mi istiyorsunuz? Elbette bu savunulamaz bir durum için iyi bir fikir gibi görünüyor.
RobotHumans

0

Derlemek için gcc gibi bir derleyici gerekir. Gcc'yi deposundan indirebilirsiniz. (daha fazla C ++ 11 özelliği için en büyük sürüm numarasını seçin).

$> sudo apt-get install gcc-4.7

Bundan sonra OpenCL kütüphanenizi derlediğiniz uygulamaya bağlamanız gerekir. Diyelim ki Host uygulama (main.c) kodu ve çekirdek uygulama (kernel.cl) kodu test adlı bir klasörde bulunuyor. Aşağıdaki gibi yapmanız gerekir:

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

Derleme ile ilgilenmelidir. Çıkışı şu şekilde çalıştırmalısınız:

$ Test> ./ a.out

ve alabileceğiniz tüm çalışma zamanı hatalarına dikkat edin (kernel.cl yolunun düzeltilmesi dahil).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.