DE4-530的OpenCL开发环境搭建
简洁完整的文档见DE4-530的OpenCL开发环境搭建(最终版)
背景介绍
传统的硬件开发,需要经过“算法设计->硬件方案设计->代码实现->功能仿真->下板调试”这些步骤,花费的时间会非常长。通过OpenCL在FPGA上开发,可以实现同样的功能,但是少了硬件方案及实现过程(这是最耗时的阶段),可以大大降低硬件开发周期。
如今的主流FPGA厂商只有Altera在大力支持OpenCL,Xilinx只是通过C2H工具将C语言转换成硬件语言,其他厂商还无任何消息。Altera提供的可用于OpenCL开发的FPGA开发板为DE4-530,Altera在今年5月才发行了openCL_13.0_release,作为其正式商用版。
直接用FPGA进行程序开发和调试的话,时间会非常漫长(主要是编译过程)。所以开发流程确定为:
1.通过显卡开发调试程序,确保程序正确性;
1.将正确的程序编译下载到FPGA上运行,并分析其性能。
环境要求
接下来就是搭建OpenCL的开发环境。由于最终是以DE4-530开发板为对象,所以确定软件环境时以DE4-530的要求为基准。
Altera公司提供了一个针对DE4-530进行OpenCL开发的说明文档(Altera SDK for OpenCL Getting Started.pdf),里面介绍了硬件及环境要求。
1.the Altera SDK for OpenCL version 13.0支持的OpenCL version 1.0;(如今OPenCL已经发展到了1.2)
2.电脑硬件:
操作系统为Microsoft 64-bit Windows 7 或 Red Hat Enterprise 64-bit Linux(RHEL)5.6;(CPU需支持64位操作系统)
有eight-lane PCI Express port(PCIe x8)或sixteen-lane PCI Express port(PCIe x16);(考虑到还有显卡,故主板需多个PCIe x8,PCIe x16接口)
只支持单个FPGA开发板;(Only one FPGA accelerator board may be installed in the host machine)
3.软件环境:
FPGA设计软件——the Quartus II software version 13.0;(以前版本不支持OpenCL编程[.aocx])
设备支持——为Stratix V设备安装支持软件;
USB-Blaster驱动——通过USB接口下载hardware kernel program到FPGA的flash memory;
PCIe驱动——主机和设备通过PCIe接口进行通信;
C编译开发环境——Windows系统采用Microsoft Visual Studio version 2010 Professional,Linux系统采用C编译器;
硬件环境
按照上述环境要求,重新配置一台PC(如果是工作站最好),配置如下:
CPU——酷睿i7 3770K(支持64位系统)
显卡——华硕7870-DC2-2GD5铜管直触双风扇(支持OpenCL 1.2)
主板——华硕P8Z77-V PRO(3个PCIe x16插槽)
机箱——游戏悍将刀锋1标准版(可以安装40cm的大显卡,故能容纳DE4开发板)
内存——金士顿 DDR3 1600 8G(KVR16N11/8) *3(可提供足够的运行内存)
考虑到操作的方便性,操作系统采用Windows7 SP1。
Visual Studio安装
该软件是OpenCL开发的平台,故不论是GPU开发还是FPGA开发,都需要安装该软件。机箱DE4文档中要求版本为Microsoft Visual Studio version 2010 Professional,故先到官网下载页面下载对应版本并安装;
破解:百度上很多方法,我采用的是百度文库“Visual Studio 2010下载 + 附破解方法”里的第一种方法,直接输入注册码。
VAssistX安装
该软件是Visual Studio的自动补全插件,当然也可以不安装。自己去百度,下载安装并破解。
AMD显卡驱动安装
显卡驱动是显卡和SDK应用之间的桥梁,故显卡驱动也需支持OpeCL开发。
在AMD的OpenCL系统要求页面内,可以看到是可以支持Microsoft 64-bit Windows 7 的,与DE4-530可以共用一个操作系统,这就解决了操作系统的问题。
在页面底部,有这样一段信息:
显示了AMD公司已经发行的SDK与显卡催化剂版本。其显卡催化剂一般都内置有SDK,只是版本比较老而已。
显卡驱动安装有2种方法:
1.通过下载最新的“Download AMD Catalyst Drivers”来安装,该方法可以选择安装所有的AMD驱动,这样可以省去单独安装SDK(这样可以省去下步的SDK安装,直接检测SDK是否安装成功);该方法有个很不好的缺点就是:安装的时候不容易成功,会很麻烦;
2.直接通过“驱动精灵”把显卡驱动更新为最新版本,该方法只安装显卡驱动,不会安装其他软件,比如声频驱动,SDK之类的。
首先介绍第1种方法,我试了很多次都失败了,所以并不推荐该方法,我先介绍我的安装过程及错误。
点击“Download AMD Catalyst Drivers”进入显卡驱动下载页面,选择自己PC的显卡和操作系统,进入对应的AMD HD7900显卡驱动页面,里面有稳定版,测试版,文档;并描述了其详细信息
在安装该驱动之前,PC已经安有普通驱动,以下是该驱动的软件信息
从这个页面来看,我并不清楚该驱动是否支持OpenCL开发,我的想法是既然没有写明,那么应该就是不支持(安装后也是这个界面,所以说这里是看不出是否安装OpenCL的),毕竟现在OpenCL开发是一个重要的概念。
那么接下来我们就安装新驱动,安装过程会让选择组件
从这里可以看到,有“AMD APP SDK Runtime”这个OpenCL开发必须的支持组件:可勾选的表示电脑现在没有该软件或不是最新版本,可以选择安装;而为勾且不可选择的选项表示已经是最新版,无需安装。这样选择之后安装。
我就是在这里安装的时候,系统提示说有些组件没有安装成功,所以我又重启安装一次,但是安装的时候一直卡在“分析”阶段。我这样进行了很多次,最后在网上查找原因,发现时这个问题经常出现,解决方法是通过AMD的专用卸载软件把AMD的软件全部卸载完毕再进行安装。
在AMD Catalyst Un-install Utility下载页面下载后,点击运行,此处需要注意的是它会把电脑上的所有AMD软件都卸载掉。卸载后再用上述方法安装,还是出错,最后只有再次完全卸载,然后用装机时自带的光盘进行安装。
接下来介绍第2种方法,下载驱动精灵,然后升级显卡驱动即可,该方法只会升级显卡驱动,所以需要单独下载安装SDK,过程很简单,所以就不叙述了。(其实与第1种方法差不多一样的,只是少些步骤而已)
AMD APP SDK安装
我选择了第2种方法安装AMD显卡驱动,所以需要单独安装SDK。(其实已经安装了SDK,这步只是给那些没有安装SDK的朋友看看步骤)
首先下载AMD-APP-SDK-v2.8-Windows-64.exe,下载之后运行安装。(其他的硬件及操作系统环境下载则在SDK下载页面选择下载相应的版本)
其安装流程与上面显卡安装时一样的,只是在选择组件的时候不一样。
从中可以看到,只有3个可选项,其余的都是已经成功安装的,点击继续安装。
安装完成后,我们来检测是否成功安装,其方法有3:
1.查看安装日志,看看所勾选的3个组件是否成功安装;
2.在cmd命令窗口输入“clinfo”:未安装前,只会CPU的信息;安装成功后,会显示GPU的信息;下图是安装后的GPU信息
3.在设备管理器中查看“显卡驱动程序详细信息”
至此,GPU的OpenCL开发环境已经建立起来了,剩下的工作是通过实例检测我们所建立的该GPU开发环境。
这是AMD的资料:AMD的Heterogeneous Computing(关于异构计算的资料,包括性能分析)
AMD CodeXL安装
AMD公司提供的分析工具室CodeXL,其内置了APP KernelAnalyzer,APP Profiler,CodeAnalyst,gDEBugger四个工具,如果不需要全部这些工具那么也可以单独下载安装。
在AMD的Heterogeneous Computing页面选择CodeXL,进入CodeXL下载页面,选择window版本下载安装即可。
安装后CodeXL后,会以两种方式出现:一是单独的软件方式出现,二是以Visual Studio的插件形式出现。
Quartus II 12.0 SP2安装
DE4的OPenCL开发环境花费了太多时间。刚开始是安装了Quartus II 13.0,结果发现这是商业发布版,不支持DE4开发板;后面听说要12.1 SP1才行,SDK要0.9版本,于是从内部渠道拿到0.9的SDK,重新下载12.1 SP1安装,结果还是不行。
通过Altera的OpenCL资料,在cmd命令行里输入aclkc --list-boards,就能找到该SDK支持的开发板,一共应该是6个。可只发现了2个,而且这2个还是之前安装Quartus II 13.0时安装的。最后找到Altera的OpenCL工程师咨询,给我们的建议是完全按照getting_started文件里的步骤来。
由于我们也找不到其他原因,所以就只有试试这个方法。
之前我们的安装步骤是:AMD显卡驱动 -> Visual Studio2010 -> AMD SDK -> CodeXL,这是针对GPU的开发环境,当时的要求是先在GPU上跑通,再做FPGA。跑通之后,其他软件的安装顺序是Quartus II 12.1 SP1 -> USB-Blaster -> PCIe driver -> acl(只需解压)。
再看看Altera文档上的顺序是:Quartus II 12.0 SP2 -> acl -> PCIe driver -> Visual Studio。这个是针对DE4的开发环境的建立顺序。所以打算把相关的软件都先卸载,然后再按顺序安装。
所以,我卸载了所有Quartus软件(12.1和13.0),Visual Studio,PCIe driver,CodeXL(作为VS的插件,故也需重新安装方可),acl(USB-Blaster和AMD SDK是没有卸载的)。
接下来的安装顺序是:Quartus II 12.0 SP2(重新下载的) -> acl -> PCIe driver -> Visual Studio -> CodeXL。
安装之后,再次在cmd里输入aclkc --list-boards,可以看到闪过一列信息,由于闪过之后马上消失,所有截屏了很多次才成功,就是下图
接下来就是运行Altera给的实例,先开FPGA的电,然后再开机。
下载sof到FPGA(怎么弄还不知道),接下来是在Visual Studio里编译程序,生成exe文件,运行该文件。可以看到成功执行。
我把DE4的电源断掉,继续运行exe文件,发现还是成功运行,感觉挺怪异的,排查之后发现是PCIe接口再给DE4供电。直接把DE4拔掉之后,运行则发生错误,而且此时进行调试也是不成功的,这个说明调试也是在对应的设备上进行的,而不是在CPU上。
现在的问题是如何生存sof文件?
以下都是以前的错误安装,记录在此,以备不时之需。
Quartus II 12.1SP1安装
由于Quartus II 13.0不支持Stratix IV,导致前面的13.0安装工作完全浪费(连下载话费了1天多时间)。通过professor黄跟Altera的中国区大学计划经理沟通后才最终确认这件事,没办法只能重新下载12.1SP1安装。
进入Quartus II订购版的下载页面,下载并安装相应的软件。这里提供了3种方式,我采用的是第1种,通过下载管理器自动下载并安装软件,该方法非常耗时,我下载了1天多才安装成功(之前还由于电源管理导致多次下载失败)。
在这里我同时使用了第2种方法,直接下载各个安装文件进行安装,下图中用红色方框圈中的是需要下载的文件
Quartus II 13.0安装
在Altera下载中心下载软件,按照其提示信息,将所需要的文件下载到同一个文件夹中,运行QuartusSetup.exe安装,然后嵌入License(需要支持OpenCL)。
这是我下载的软件列表
安装成功后,我把我的License嵌入到软件中。下图是该License的授权范围,可以看出是支持OpenCL的。
我所选择的这些软件安装空间需要20G左右。
后续安装参照面向OpenCL的Altera SDK开始设计指南。
Altera SDK安装
在Altera SDK for OpenCL下载软件,并进行安装,需要已经安装有Quartus II 13.0和Stratix V器件支持。
安装之后进行环境变量的确认及添加,下图是Altera SDK for OpenCL Getting Started.pdf里的环境变量图
首先,确认ALTERAAOCLSDKROOT,QUARTUS_ROOTDIR是否正确
接下来就是PATH变量,因为在用户变量或者系统变量里都只能各自存在一个PATH变量,所以其值是写在一起的,选择用户变量的Path变量,进行编辑,即可看到里面的值
下面2个图是Path变量里的2个值
最后一个变量LM_LICENSE_FILE是没有的,所以需要自己添加,变量值是License的路径
按照参考,环境变量设置完毕后,则可以检查该SDK是否安装成功
方法是:
打开cmd,输入“where aoc”,能够返回aoc.bat的路径则表明安装成功
其实,我还有个小疑问,安装AMD的SDK后,可以通过在cmd里输入clinfo来查看是否有OpenCL设备;而在这里,即使上面的都正确,输入clinfo也不会出现关于Altera的设备信息(是有些东西没有安装完全么,还是本来就不会出现这样一个信息?)
USB-Blaster安装
通过USB-Blaster将一块Altera开发板与电脑相连,在设备管理器中检测到未知的usb设备,手动安装该驱动,驱动路径是:%QUARTUS_ROOTDIR%\drivers\usb-blaster。
PCIe驱动安装
进入如下目录%ALTERAOCLSDKROOT%\windows64\driver,点击其中的install.bat进行安装。
成功安装后,插入DE4-530开发板,再重启电脑(PCIe接口是不支持热插拔的)。按照Altera SDK for OpenCL Getting Started.pdf的说明,此时在设备管理器应该能看到2个新增的设备,如下
我安装后,先关闭电脑,再打开DE4的电源,然后开机,看到的只有最下面那个PCIe的驱动WinDriver,并没有出现上面那个加速器设备Accelerators。还不知道原因