|
自从 OpenCL 1.0 面世以来,一直希望能亲自在自己的电脑上体验一把它的神奇。等开源方面的支持让人越等越着急,正好最近 AMD 发布了完全支持 OpenCL 1.0 的 ATI Stream SDK 2.0,便萌生了用闭源实现来体验和学习 OpenCL 的想法。电脑的显卡是 ATI Radeon HD 4670,计算能力不算强,但正好还在该 SDK 的支持之列,作为体验与学习足矣。
ATI Stream SDK 2.0 官方支持 OpenSUSE 11.0 和 Ubuntu 9.04,竟然不支持我最爱的 Gentoo;在网上搜索了下 Stream SDK 的 ebuild,也没有找到 2.0 可用的,看来只好 DIY 了。
下面是安装的过程,安装前先去 ATI Stream SDK Download 下载 ATI Stream SDK 2.0,我下载的是 lnx32 版本。因为只是实验性质,我将它安装在自己的家目录下,尽量避免污染系统目录。
1. 首先要安装官方显卡驱动,官方网上推荐的是 Catalyst 9.12 的 HotFix,在上面的网页中可以下载,但经过我自己的实验以及 AMD Developer Forum 上的一些信息,Gentoo Portage 中的 ati-drivers-9.11 就能支持 OpenCL。- 设置使用闭源驱动:/etc/make.conf:
- VIDEO_CARDS="fglrx"
- 安装驱动:emerge -uvDNa world
- 选择 OpenGL 实现:eselect opengl set ati
复制代码 2. 安装 SDK- cd ~/software
- tar -zxvf ${SDKTARBALL}
复制代码 3. 设置环境变量(非常重要)- export ATISTREAMSDKROOT=${HOME}/software/ati-stream-sdk-v2.0-lnx32
- export ATISTREAMSDKSAMPLESROOT=${ATISTREAMSDKROOT}
- export LD_LIBRARY_PATH=${ATISTREAMSDKROOT}/lib/x86:${LD_LIBRARY_PATH}
复制代码 4. 设置 ICD- su
- mkdir -p /usr/lib/OpenCL/vendors
- cd /usr/lib/OpenCL/vendors
- ln -s ${ATISTREAMSDKROOT}/lib/x86/libatiocl32.so .
复制代码 5. 设置内核参数 nopat- /boot/grub/menu.lst:
- kernel ...... nopat ...
复制代码 6. 重新启动后,进入到 SDK 解压缩的目录,make,然后就可以在 samples/opencl/bin/x86 下找到可执行的例子,其中 CLInfo 将输出主机上所有的 OpenCL 设备的信息。
注:1. 驱动因显卡的不同而不同,经自己测试,Linux 下的 Catalyst 9.11 和 9.12 驱动已经支持 OpenCL,不需要那个 HotFix
2. ICD 设置很重要,不然会找不到计算设备。
3. 内核参数 nopat 是对支持 pat 的内核设置的,其目的是禁用内核的 PAT 实现,让 fglrx 使用它自己的实现,否则运行 samples 会段错误。我的内核是 gentoo-sources-2.6.31-r6,网上说 2.6.31+ 的内核都需要这个选项。
参考文献:
1. ATI Stream SDK v2.0 with OpenCL support
2. ATI Stream SDK v2.0 Documentation
3. ATI Developer Forum - OpenCL |
|