说明:因为是刚开始接触OpenCL,所以想先在CPU上试一试,感受一下,所以没有买带GPU的显卡。系统是Fedora19。

首先是下载,我下载的是AMD提供的AMDAPPSDK:http://developer.amd.com/tools-and-sdks/opencl-zone/amd-accelerated-parallel-processing-app-sdk/,这个英文网站上有各种版本供下载。(ps:如果你直接在网页上搜AMD,第一个就是AMD的中文网站,我在这里找半天也没找到可下载的AMDAPPSDK的链接,所以还是去正宗的英文网站吧)。我下的是:

AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2

3.0

187 MB

3/23/2016

Linux

64-Bit


其次是安装:http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/AMD_APP_SDK_InstallationNotes.pdf,这是教给如何安装的,可能是版本跟教程不一致吧,我安装的时候根本没遇到那么多问题,几乎是傻瓜式安装。所以还是写下我怎么安装的吧。

1、解压:# tar -xvjf AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2.(解压出来的是一个.sh文件:AMD-APP-SDK-v3.0.130.136-GA-linux64.sh)

2、运行该文件进行安装:# ./AMD-APP-SDK-v3.0.130.136-GA-linux64.sh  (解压出一堆东西,不用看,直接往下直到出现:Do you accept the licence (y/n)? )

3、输入y:这时候它问你Enter the Installation directory. Press ENTER for choosing the default directory: [/opt],就是说如果你要直接按Enter,就给你安装到默认目录了(就的当前目录),如果有自己想按的路径,就输入自己的路经,我就直接安到它建议的路径/opt下了。然后等待安装.....

4、配置环境变量: 如果你在普通用户下安装的,会在/home/edw/.bashrc里自动给你配置好,如果你是在root下安装的,会在/etc/profile.d/下自动生成AMDAPPSDK.sh,并自动配置好,我是在root下安装的。所以我们做的只是需要在配置/etc/profile文件后面加上:

      export LD_LIBRARY_PATH=/opt/AMDAPPSDK-3.0/lib/x86_64/sdk/ ,(这是libOpenCL.so.1的路径,如果写成export LD_LIBRARY_PATH=/opt/AMDAPPSDK-3.0/lib         /x86_64/,是找不到libOpenCL.so.1的)

      然后#source /etc/profile以下,让其生效。

5、用clinfo命令验证安装是否正确:#clinfo     (安装正确会打印出设备信息)。

      按说clinfo命令都通过了,肯定安装正确了,可以随便运行程序了,那我们去人家给的samples里去找helloworld运行下试试

# cd /opt/AMDAPPSDK-3.0/samples/opencl/cl/1.x/ 
      # cd HelloWorld/
      # cmake CMakeLists.txt   (所以需要实现安装好cmake)
      # make

     这时候会报错:make[2]:***没有规则可以创建“bin/x86_64/Release/HelloWorld”需要的目标“/opt/AMDAPPSDK-3.0/lib/x86_64/libOpenCL.so”。停止。

     就是说在路径# /opt/AMDAPPSDK-3.0/lib/x86_64/下找不到libOpenCL.so。在这里我纠结了很长时间,因为我明明看到有这个库啊, 为啥找不到,结果还是第二天捣鼓一天后,突然想起来了。因为我看到的并不的库的原文件,而是一个软链接,那就顺藤摸瓜,看看它链接到哪了,

     #ll libOpenCL.so   (显示的是链接的是/usr/lib/libOpenCL.so.1,我去路径下找了,根本没有那个库,这就是问题的所在了,可能这是它的默认设置吧,不管了,在/opt/AMDAPPSDK-3.0/lib/x86_64/sdk/下有libOpenCL.so.1。那就链接这个吧)

    然后,重新链接:# ln -s -f /opt/AMDAPPSDK-3.0/lib/x86_64/sdk/libOpenCL.so.1  /opt/AMDAPPSDK-3.0/lib/x86_64/libOpenCL.so  (-f是在创建的同时删除同名文件)

6、然后再进入HelloWorld,运行:#make

      输出:Linking CXX executable bin/x86_64/Release/HelloWorld
                  [100%] Built target HelloWorld

7、按照输出信息的指引,找到我们编译的可执行软件:

# cd bin/x86_64/Release/
       # ./HelloWorld
 No GPU device available.
 Choose CPU as default device.
 input string:
 GdkknVnqkc

 output string:
 HelloWorld
 Passed!

终于成功了!今晚要庆祝以下

对我来说太不容易了!