现在的位置: 首页 > 综合 > 正文

Linux上使用AMD的OpenCL开发运行环境

2013年12月05日 ⁄ 综合 ⁄ 共 3270字 ⁄ 字号 评论关闭

关于在Linux上使用AMD的OpenCL开发运行环境, 我有如下重要更新:


1. Linux 上OpenCL的开发运行环境包括两个部分, 一是 AMD 的 AMD SDK APP 开发包,另一部分是AMD的Catalyst驱动软件包.  AMD SDK APP 开发包主要包括开发OpenCL应用所需要的头文件,文档和例子程序.Catalyst驱动包括OpenCL运行库,AMD GPU的私有驱动, 一些工具软件
2. AMD SDK APP 的安装比较简单,这里就不细说了。其当前最新的版本是 2.8.1, 直接从
   http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/downloads/#one下载 64bit 的版本
3. Catalyst 驱动包由于其包括GPU驱动,直接依赖于操作系统,其安装稍微复杂些。 用户可参考我如下的步骤和描述进行安装, 以 Fedora 19 为例
    a) Fedora 19 是红帽最新的社区版Linux, 由于其X Server的结构发生了一定变化,需要安装最新版本的Catalyst驱动包, 即 Catalyst 13.6 Beta版本.  从 http://www2.ati.com/drivers/beta/amd-driver-installer-catalyst-13-6-beta-x86.x86_64.zip 下载
    b) 用 unzip 解压后运行amd-driver-installer-catalyst-13-6-beta-x86.x86_64.run文件, 在图形界面菜单下选择 “Generate Distribution Specific Driver Package", 而不要直接让这个界面进行安装,这点很重要,先产生rpm, 然后用 rpm 安装工具进行安装,比较容易定位安装时出现的问题.  接着在出现的操作系统选择菜单中选择 "Redhat/RHEL6_64a"。图形界面运行的结果会在当前目录下产生一个名为fglrx64_p_i_c-13.101-1.x86_64.rpm的rpm包文件.  下一部安装catalyst就是安装该rpm包. 
    c) 执行 “#> rpm -ihv fglrx64_p_i_c-13.101-1.x86_64.rpm" 安装驱动. 这一步中要做很多工作,包括编译和Linux kernel版本一致的fglrx模块. 第一次执行这个命令通常会失败,报告很多包依赖性问题. 这时你需要用 yum 命令
从Fedora 19 的repository上安装依赖的包,通常既要求这些包的64bit的版本,也要求这些包的32bit的版本。这些包
在Fedora 19 的repository上都是有的, 只要你的机器是连上网络的,你就可以直接安装这些包. 通常如下这些包,特别是其32bit版本可能是需要而你当前的Fedora上是没有安装的(取决于用户安装Fedora的方式):  libgcc, libstdc++, compat-libstdc++-3.0, libXext. 你可用如下命令安装这些包,如以 32bit的 libgcc 为例:
       #> yum install libgcc.i686
这里没法列出所有可能依赖的包,你需要根据 rpm -ihv xxx.rpm 报出的信息确定你需要装哪些包。所有需要的包装完后,"#> rpm -ihv fglrx64_p_i_c-13.101-1.x86_64.rpm" 的执行就会成功了。 执行成功后,你不再需要安装其他包. 
    d) 到这一步,你就可测试一下你的catalayst驱动安装是否真正成功. 方法是先运行 "#> init 3" 切换到控制台模式, 然后执行 "#> aticonfig --adapter=all --initial" 初始化 X Server 的配置文件. 然后运行 "#> init 5" 重新进入图形环境。 如果能成功进入图形环境, 说明你的安装是成功的, 你可以用 "#> clinfo" 命令看一下能否有GPU设备被列出,也可用 "#>glxgears" 看一下安装catalayst驱动后 openGL 应用是否执行得快了很多 (相对于 open-source的Radeon驱动而言)
    e) 如果不能正常进入图形环境,说明你的安装是不成功的,这一般是由于你的 Linux 中 kernel 包和kernel-devel包的版本不一致,导致 fglrx驱动没有编译成功造成的. 你可以用 "#> modinfo fglrx" 检查一下下有没有 fglrx 驱动。可进入 /lib/modules/fglrx/build_mod 目录下执行make.sh 看看报什么错误. 如果是kernel-devel包没安装,就要用 "#> yum install kernel-devel" 安装该包。 如果是 kernel包和kernel-devel包的版本不一致,则最简单的方法是运行 "#> yum update kernel*" 将这些Linux kernel 相关的包都升级到最新版本,然后重启机器后再执行 "#>rpm -ihv fglrx64_p_i_c-13.101-1.x86_64.rpm"安装操作 
   f) 在catalyst 安装没成功的情况下,可在init 3 模式下用 "#> rpm -e fglrx64_p_i_c" 删除已部分安装的内容,恢复开源的 Radeon 驱动,重新进行图形模式(以便你能使用无线网络连接). 执行 "#>rpm -ihv fglrx64_p_i_c-13.101-1.x86_64.rpm" 在图形模式或init 3 模式都可以进行. 

 

关于Linux上Catalyst驱动支持GPU设备的问题, 我有如下更新:
 1. 在很多 AMD的笔记本或台式机上都包括两个GPU设备(一个是AMD APU所继承的GPU, 一个是外置换的独立显卡GPU),用以进行openCL计算或openGL三维图形操作. 以前的回贴中所提到的 "在Linux图形环境下只能看到一个openCL GPU设备是不正确的", 下面的描述进行更正. 
 2. 在一般的比较本配置中,由于硬件或BIOS的限制,只能是用APU内置的GPU进行显示(由X Server进行framebuffer的访问和2D 图形Rendering操作). 这一点可以由aticonfig 产生的 /etc/X11/xorg.conf 看出来。在我的Hp 4436s, A10-4600M 等笔记本上,  Xorg Server 总是要使用 PCI-0:1:0设备,即集成GPU进行显示,即使你强行设置成用独立GPU (PCI-1:0:0) 也不行
 3. 在保留情况下,安装配置完 catalyst 驱动后, clinfo 命令只能看到独立GPU, fglrxinfo命令也只能看到独立GPU, 集成GPU被限制只用于显示, 不能用于openCl计算和3D 图形操作. 
 4. Catalyst包安装后提供了一个 "Catalyst Control Center" 的工具软件,用户运行该软件,在其图形界面下, 在 “3D/Switchable Graphics" 栏目下选择 “Power-Saving GPU for improved battery life" 然后重新启动机器(实际上是重新加载驱动并进入X环境). 在重新启动的环境下,你可以看到 clinfo能显示出两个openCL GPU设备,fglrxinfo也告诉有两个GPU能进行3D图形处理

抱歉!评论已关闭.