在英特尔中打开cl


9

如何在具有Intel HD 4000 gpu单元的Intel i5处理器上编译和运行开放cl代码???Open cl已在/ opt / intel / opencl和versionis ubuntu 12.04中进行了标记。任何帮助将是极大的帮助...谢谢


您遇到什么问题?
2014年

所以这个仿真器适用于英特尔....
的Piyush库马尔

@托马斯,当我运行文件时,找不到任何文件或库...错误提示未找到此类文件或目录CL / cl.h。也有一个名为kernelBuilder一个文件,当我米试图执行它,一个提示来,但是它停止并说GConf信息预警,客户端无法连接到d总线端口监督程序,并没有收到答复....
的Piyush库马尔

@PiyushKumar sudo apt-get install opencl-headers。之后,它应该找到libOpenCL.so,但是过去我遇到了主要问题,因为英特尔未能注册该库并导致链接错误。
2014年

@Thomas,将尝试一下...猜猜我可以用我们的经验
Piyush Kumar

Answers:


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

妳去 OpenCL适用于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
谢谢,但是据英特尔称,他们不支持Linux HD 4000上的OpenCL:没有Xeon的 Linux OpenCL SDK 1.2?。您获得什么样的表现?
nealmcb

1
啊哈-现在我看到beignet的README.txt解释说它是英特尔OpenCL SDK的替代产品,后者确实支持HD4000。谢谢!!请注意,人们确实也必须运行make。...是否需要运行ldconfig证明软件包有问题的证据?
nealmcb

2
正如opencl所说的那样,性能是很差的而且很毛刺。在其他opencl实现上运行的代码有时会崩溃或出错。它确实使您无需借助计算平台即可构建琐碎的测试内容。
RobotHumans

我不认为需要将其添加到您的图书馆搜索路径中是图书馆的问题。如果您使用的是OpenCL,则假定您具有一些技术知识。就个人而言,我希望OpenCL软件包都可以同时安装,并且您只需切换搜索路径中包含的库,然后重新运行ldconfig即可指向另一个库。如果您有一个包含所有3个视频芯片组“品牌”的测试箱作为测试环境,并且您想出了一种方法来对所有可能的目标进行基准测试或只是对您的代码进行运行测试,则这可能会很有用。
RobotHumans

1
这就说得通了。我会更喜欢使用骑师,更新替代品或其他任何东西。用应该切换库的东西切换库?当然,对于不可持续的情况,这似乎是个好主意。
RobotHumans 2015年

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等的路径)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.