Linux上使用AMD的OpenCL开发运行环境 (经验分享)

本人电脑系统Centos6.6
首先确定自己的显卡类型,如果是集显就不要装catalyst驱动了,不然会进不去图形界面。
双显卡中有一个是集显的,慎重考虑下,因为为了正常使用,你的集显会不能使用,只能使用独显的。
独显可以直接往下进行
安装步骤可以根据这个网址安装:http://blog.csdn.net/zhangoi391/article/details/9613117
 AMD SDK APP安装基本就是下载->解压->运行.sh文件 就OK了
现在我要说的几个问题一定要注意了,这是我在安装的时候遇到了:
1.按照步骤,如果你要创建rpm包,首先确定你的机器已经安装了rpmbuild,如果没有就先yum installrpmbuild,然后再执行。
2.在步骤中会有这么一条指令执行#>aticonfig –adapter=ALL–initial,该指令产生一个/etc/X11/xorg.conf文件,并修改这个文件让图形系统使用正确的AMD显卡。若你并不确定这是否会导致你的机器图形界面出问题,则在执行该命令之前将原来的xorg.conf文件使用cp命令拷贝到其他的位置,这样当你执行这个命令后无法回到图形界面时还可以替换回原来的文件。 执行#>aticonfig–adapter=ALL–initial这一步对OpenCL用户通常来说不是必要的,对OpenGL的用户,则希望使用Catalyst的驱动来提升其3D应用的性能。用户可以用#>lspci-vn |grep “VGA”命令显示系统中的GPU及对应的PCIID。配置X-windows系统使用Catalyst驱动的另外一个好处是可以让普通用户(non-root)的OpenCL程序使用GPU,而root用户的OpenCL程序则不需要依赖X-windows 可直接使用catalyst驱动支持的OpenCL功能。
3.如果在执行aticonfig –adapter=ALL–initial后无法进入图形界面,证明现在你的显卡工作在集显上,这时要想使用图形界面,则需切换到独显进行显示即可,输入下列命令:
#>aticonfig --initial
#>aticonfig --px -dgpu
reboot
重启后唯一有个小问题就是:如果你默认启动的是字符模式启动后再切换到图形界面没有任何问题,如果你本身默认启动的就是图形界面,你会发现以前酷炫的开机动画都没有了,这是什么原因呢?
因为你开机运行用的是集显,运行程序用的是独显,所以开机时集显不工作,就看不到酷炫的效果,如果你觉着这样不够爽,你也可以试试下面的方法.从某大牛的帖子里看来的:
1.在Linux上如何使用一个保留的GPU进行X-Window图形显示,而其他GPU用于OpenCl开发

很多进行OpenCL开发的用户希望使用系统主板中自带的一个能力相对较弱GPU做图形显示,而用外插的高端显卡做OpenCL计算。下面的步骤以一个带有AMD的Radeon集成GPU和Radeon独立GPU的笔记本(笔者笔记本就是这样的)为例,让X-windows使用集成GPU并使用vesa驱动做显示。在Linux上, vesa 驱动能被几乎所有图形卡支持。另外在CentOS,RHEL等企业级Linux上,matrox, ast等显卡驱动都不被支持,需要用vesa驱动来运行X-windows。下面的配置步骤也适合集成显卡是非AMD的GPU的情况,X-windows 可以用vesa也可用Linux自带的开源显卡驱

动:

1)修改/etc/modprobe.d/blacklist-fglrx.conf,将radeon和fglrx加入驱动的blacklist中。这个设置是必须的,因为现在的Linux上Xorg提供的vesa驱动,只有当其他驱动没有关联到用于显示的GPU时,才能正常启动;否则,如果radeon或fglrx已经被加载了,vesa就会认为自己不能去驱动那个GPU。将radeon和fglrx加入blacklist能阻止Linux的驱动自动加载机制主动加载radeon或fglrx,这样我们可以让X-windows用vesa运行起来后再加载fglrx。

2)创建一个/etc/X11/xorg.conf文件,具体可参考下图的内容。这里只使用了一个Device,Monitor和Screen,更复杂的情况需要修改该内容。当然,由于这里是使用vesa驱动,Device部分的驱动是vesa,如果是使用intel的设备,则驱动名也可以是intel。配置该文件时需要注意所使用的GPU的PCI ID。 一般用#>lspci-vn |grep “VGA” 确认一下你的GPU的PCI ID。Linux上使用AMD的OpenCL开发运行环境 (经验分享)_第1张图片

3)执行两个命令 #>/usr/lib64/fglrx/switchlibGL intel和#>/usr/lib64/fglrx/switchlibglxintel。fglrx_p_i_c的包在安装过程中会将系统中的libGL.so及libGLX.so库链接到AMD提供的fglrx私有库上。由于现在配置的X-windows要使用非AMD的驱动,所以需要将这些库还原成系统原有的库。上述命令的参数intel就是指Linux系统自带的开源的库,如果使用参数amd,则是指AMD提供的fglrx私有库。如果不恢复到系统自带的库,则使用vesa的X-windows环境下,某些桌面应用的启动就会导致问题。

4)重启系统。重启后的系统进入桌面环境后,AMD的fglrx

驱动不会主动加载,这时无法使用

OpenCL,用户可以用#>modprobe fglrx 命令手工加载fglrx模块,或者将该命令加入到/root/.bashrc 中,在root用户登录时会自动加载fglrx模块。

5)fglrx模块加载后,用户可以在字符console或远程程通过ssh登录到系统上运行OpenCL程序,当然只能使用root用户。普通用户登录到图形环境后,也可su切换到root用运行OpenCL程序,但需要运行#>unset DISPLAY 命令关闭DISPLAY的设置,否则运行OpenCL程序时会出现故障。用户可以将 unsetDISPLAY这个命令加入到 /root/.bashrc脚本中

2. 如何用CodeXL远程测试OpenCL程序
 
CodeXL工具具有远程测试OpenCL程序的能力, 这一点在服务器环境部署OpenCL应用时非常重要, 因为让单个的服务器连接显示器,启动图形再在其本地运行CodeXL工具可能会很不方便。CodeXL的远程测试能力可以让我们在个人的笔记本电脑的图形环境下开发OpenCL程序,远程部署到服务器上,利用服务器上性能强大的AMD独立显卡进行性能测试。用CodeXL进
行远程OpenCL程序测试的步骤如下:
 
1) 在客户端笔记本及服务器端直接安装从developer.amd.com下载的CodeXL的rpm包。这个安装过程很简单,如果有依赖的包,直接用
#>yum installl 命令进行安装解决依赖。CodeXL的安装不要求任何AMD的环境,完全可以在只有Intel或Nvidia图形卡的环境安装。但我们要求在客户端安装的 CodeXL 和服务器端安装的 CodeXL 版本必须一致, 否则CodeXL启动远程测试时会报错。
 
2) 将客户端开发好的 OpenCL代码传到服务器端root用户的某目录下(通常在服务器上需要以root 用户运行OpenCl 代码)。服务其端需要已经建立好OpenCL 代码的运行环境,包括OpenCL程序可能依赖的库,如clAmdBlas等。
 
3) 在客户端启动的CodeXL 图形界面上创建一个项目。项目设置中选择 Remote Host 模式,并设置服务器端的IP 地址和端口号27015。Executable Path, Working Directory, Kernel Source
Files Directory的设置都应该指向服务器端的目录或文件位置。命令行参数的设置和通常情况一样。
 
4) 关闭服务器端的防火墙。目前的Red Hat系列的Linux上可能有两个防火强软件,firewalld和iptables,要确保两个防火墙软件都处于关闭状态。运行#>systemctl disable firewalld 和#>systemctl stop firewalld 命令可确保firewalld防火墙完全关闭,iptables防火墙操作类似。用#>systemctl status firewalld 可查看firewalld的状态。当然会配置防火墙的用户也可以不用关闭防火墙, 直接配置防火墙开放27015端口即可。
 
5) 在服务器端以root用户执行CodeXLRemoteAgent程序启动用于远程CodeXL测试的Agent。该Agent保留情况会使用端口号27015。CodeXLRemoteAgent是由安装的CodeXL包提供的,
在安装CodeXL包后一般需要在/root/.bashrc中设置PATH变量以确保CodeXLRemoteAgent程序可被bash找到。
 
6) 在客户端的CodeXL 下选择GPU:Performance Counters 或GPU:Application Trace 可进行用户需要的远程profiling。如果有异常,客户端的CodeXL 会报告故障信息,服务器端的
CodeXLRemoteAgent输出中也会报告信息,用户可根据这个解决配置上的问题。


如有更好的方法,欢迎大神助攻!

你可能感兴趣的:(linux)