版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章OpenCL入门与应用9.1OpenCL简介9.2构建OpenCL环境9.3基于OpenCL的实例编译测试9.4OpenCL参考资料说明
9.1OpenCL简介
1.OpenCL简介
OpenCL(OpenComputingLanguage,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等领域都有广阔的发展前景。OpenCL支持在不同的平台上使用基于C的语言来开发代码--从CPU、GPU、数字信号处理(DSP)器件到FPGA。
Altera的OpenCL主要面向信号处理类应用的客户,是用C语言开发FPGA的利器。开放运算语言(OpenCL)联盟著名的公司有FPGA巨头Altera、两大显卡GPU巨头AMD和英伟达、CPU巨头Intel、软件和服务器巨头IBM以及全世界最大的公司Apple(苹果)等。不过AMD和英伟达是用GPU实现OpenCL并行运算,Altera是用FPGA实现并行运算。
(1)使用户的产品能够更迅速面市。
①与传统的FPGA设计流程相比,产品能够更迅速地面市。
②使用OpenCLC(基于ANSIC)并行编程语言而不是传统的底层硬件描述语言(HDL)来描述用户的算法。
③在更高层的设计抽象环境中迅速进行设计开发。
④针对目前和未来的FPGA重新定位OpenCLC代码,设计不会过时。
⑤跳过耗时的手动时序收敛以及FPGA、主机和外部存储器之间的通信接口设计工作,一个步骤中就可以在FPGA上实现用户的OpenCLC代码。
(2)能获得性能更好、功效更高的解决方案。
①把对性能要求较高的功能从主处理器中卸载到FPGA上,从而提高了性能。
②与其他硬件方案相比,显著降低了功耗,提高了性能。采用FPGA的精细粒度体系结构,Altera面向OpenCL的SDK只生成用户需要的逻辑,功耗只有硬件方案的1/5。
2.OpenCL的AlteraSDK介绍
OpenCL的AlteraSDK(SoftwareDevelopmentKit(简称AOCL)是应用于AlteraFPGA的基于OpenCL的混合并行编程环境。AOCL13.1版本提供了逻辑元件、驱动程序、AOCL专用库及文件。
1)逻辑元件(LogicComponents)
(1) Altera离线编译器(AlteraOfflineCompiler,AOC)将用户OpenCL设备代码翻译成系统可以加载到AlteraFPGA中的硬件配置文件。
(2)
AOCL应用程序(AOCLUtility)中包含了一组用来完成高级任务的命令。
(3)主机runtime提供了OpenCL主机平台API及runtimeAPI所需的静态链接库(Lib)和动态链接库(DLL),可用于OpenCL主机应用程序。
2)驱动程序、AOCL专用库及文件
在Windows及Linux计算机上,AOCL软件安装了AOCL到ALTERAOCLSDKROOT环境变量中所设定的目录。AOCL13.1版本所包含的内容如表9.1所示。
3.AOCLFPGA程序设计流程
AOCL使用OpenCL应用程序编程FPGA通过两步完成。首先AOC编译OpenCL内核,然后主机上的C编译器编译用户主机应用程序并连接OpenCL内核。图9.1所示为AOCLFPGA程序设计流程。
图9.1AOCLFPGA程序设计流程
AOC编译内核文件并产生以下文件及目录:
(1)
Altera离线编译器目标文件(.aoco),其中包含在runtime中必需的内核及配置信息。
(2)
Altera离线编译器可执行文件(.aocx),即硬件配置文件。
(3)
<内核文件名>文件夹或子目录,其中包含创建.aocx文件所必需的数据。
4.AOC内核编译流程
1)简单内核的一步编译(One-StepCompilation)流程
默认情况下,AOC编译OpenCL内核并创建硬件配置文件采用此单步流程方式,如图9.2所示。当OpenCL应用程序需要最小优化时可以选择该编译流程。在cmd命令行输入命令:
aoc<内核文件名>.cl
即可产生硬件配置文件。在编译过程中,AOC产生 .aoco和 .aocx文件。需要注意的是,创建 .aocx文件的过程需要几个小时才能完成。
图9.2AOC一步编译流程
2)复杂内核的两步编译(Two-StepCompilation)流程
如果想通过优化来改善OpenCL应用程序的性能,用户可以选择两步编译(Two-StepCompilation)流程。图9.3所示为两步编译流程图。
图9.3AOC两步编译流程
5.OpenCL标准介绍
OpenCL应用程序分为两个部分:一个是主机端应用程序,另一个是OpenCL内核程序。OpenCL主机端应用程序(主程序)是纯软件例程,以标准C/C++编写,可以运行在任何类型的微处理器上。例如,这类处理器可以是FPGA中的嵌入式软核处理器、硬核ARM处理器或者外置的x86处理器等。图9.4所示为OpenCL应用程序的两个部分。
图9.4OpenCL应用程序
在主程序例程执行期间的某一时间点,某一功能有可能需要很大的计算量,这时就受益于并行器件的高度并行加速功能,例如CPU、GPU、FPGA等器件。要加速的功能即称为OpenCL内核。采用标准C编写这些内核,但是采用结构对其进行注释,以设定并行处理操作和存储器等级。图9.5中的例子对两个数组a和b进行矢量加法,将结果写回输出数组应答中。矢量的每一元素都采用了并行线程,当采用像FPGA这类具有大量精细粒度并行单元的器件进行加速时,能够很快计算出结果。主程序使用标准OpenCL应用程序接口(API),支持将数据传送至FPGA,调用FPGA内核,传回得到的数据。
图9.5在FPGA上实现的OpenCL应用程序
与CPU和GPU不同,其并行线程可以在不同的内核中执行,而FPGA能够提供不同的策略。可以把内核功能传送到专用深度流水线硬件电路中,它使用了流水线并行处理的概念,在本质上就是多线程的。这些流水线的每一条都可以复制多次,与一条流水线相比,可以提供更强的并行处理功能。如图9.5所示,可以通过级联功能单元实现矢量加法内核,在OpenCL描述中实现每一操作,进行复制以满足实际应用的吞吐量和延时要求。虽然所显示的只是一个简单表征,但每个功能单元都可以是深度流水线,以保证最终电路的工作频率足够高。
此外,编译器可以建立电路来管理与外部系统的通信。在这个例子中,DDRx控制器和PHY连接至内核,使其能够高效访问片外阵列。类似地,PCIExpress(PCIe)IP自动例化,连接至内核,这样x86主机能够通过OpenCLAPI与FPGA加速器进行通信。有关OpenCL标准的详细介绍,请读者参考Khronos集团网站/opencl/。
使用OpenCL描述来开发FPGA设计,与基于HDL设计的传统方法相比,具有很多优势,如图9.6所示。开发可编程器件上OpenCL应用软件的流程一般包括算法构思,在C等高级语言中对算法编程,使用自动编译器来建立指令流。
图9.6FPGA上实现OpenCL应用程序的软件思想
与传统基于FPGA的设计方法相比,设计人员的主要工作是对硬件按照每个周期进行描述,用于实现其算法。传统流程涉及建立数据通路,如图9.7所示,通过状态机来控制这些数据通路,使用系统级工具(例如SOPCBuilder、PlatformStudio)连接至底层IP内核。由于必须要满足外部接口带来的约束,因此,需要处理时序收敛问题。OpenCL编译器的目的是帮助设计人员自动完成所有步骤,使他们能够集中精力定义算法,而不是重点关注乏味的硬件设计。以这种方式进行设计,设计人员很容易移植到新FPGA,性能更好,功能更强,这是因为OpenCL编译器将相同的高级描述转换为流水线,从而发挥了FPGA新器件的优势。
图9.7传统FPGA上实现算法设计方法
利用FPGA上的OpenCL标准,与目前的硬件体系结构(CPU、GPU等)相比,能够大幅度提高算法设计的性能,同时降低系统功耗。此外,与使用Verilog或者VHDL等底层硬件描述语言(HDL)的传统FPGA开发算法设计的方法相比,使用OpenCL标准、基于FPGA的混合系统(CPU+FPGA)具有明显的产品及时面市优势。
9.2构建OpenCL环境
1.OpenCL系统要求
(1)
Microsoft64-bitWindows7专业版或者更高。
(2)对于Windows操作系统,要安装微软公司的VisualStudio2010或者2012专业版(推荐)。或者:
(1)
RedHatEnterprise64-bitLinux(RHEL)5或者6。
(2)对于Linux操作系统,安装操作系统过程中要把C编译器包括GCC勾选上。
2.安装Altera的软件和搭建OpenCL环境(以Windows为例,Linux方法类似)
(1)安装Quartus
Ⅱ13.1。
(2)安装AlteraOpenCL13.1。
安装好以上两个软件后,需要设置Windows系统的环境变量(这里是基于默认的安装路径,读者需要根据自己的软件安装目录进行设置)。
在桌面计算机图标上点击鼠标右键,在右键菜单中选择属性,如图9.8所示。或者在Windows操作系统中选择开始→控制面板→系统,在弹出的控制面板系统界面中,点击高级系统设置,弹出系统属性对话框,如图9.8所示。在系统属性对话框中点击环境变量按钮,则弹出如图9.9所示的环境变量设置对话框,点击系统变量下方的新建按钮,在弹出的新建系统变量对话框中,按照表9.2所示分别建立三个系统变量,并根据实际安装目录设置相应的变量值。
图9.8系统属性中的环境变量设置图9.9环境变量设置对话框
注意:PATH环境变量在系统变量中可能已经存在,在设置其变量值的时候,需要将表9.2中PATH后的变量值添加到原PATH变量值后面,用分号“;”隔开,如:
C:\Windows\System32;C:\Windows\System;C:\Windows;C:\altera\13.1\hld\windows64\bin;
然后在Windows操作系统的命令行(用cmd命令启动)里面运行whereaoc命令,测试一下软件是否安装正确以及环境变量是否设置正确,如果正确,则在cmd窗口显示结果如图9.10所示,如果不正确,则根据提示修改错误重新测试。
图9.10环境变量测试
9.3基于OpenCL的实例编译测试
1.准备工作
从台湾友晶科技网站上下载DE5-Net开发板的全套软件安装包(136MB),下载网站地址为/downloads/cd-rom/de5-net/DE5NET_openCL_BSP.zip。把里面的terasic文件夹解压缩到<Quartus
Ⅱ安装目录>\hld\board文件夹中。设置DE5-Net开发板的环境变量名和变量值分别为AOCL_BOARD_PACKAGE_ROOT和C:\altera\13.1\hld\board\terasic\de5net,如图9.11所示。
图9.11设置DE5-Net开发板环境变量
然后在Windows的cmd命令行中输入命令:
aoclinstall
来安装DE5-Net开发板驱动。输入命令后如图9.12所示,在弹出如图9.13所示的Windows安全提示对话框时,点击“始终安装此驱动程序软件”继续安装。安装结束后根据cmd命令行提示按任意键返回cmd命令窗口。
图9.12输入aoclintall命令后安装开发板驱动图9.13Windows安全提示信息上
上述操作完成后,关闭计算机,安装和连接开发板硬件后,重新开机,在Windows的cmd命令行里面运行aoc--list-boards命令。如果硬件安装连接成功,则会显示开发板名字de5net_a7;如果开发板不存在,则显示nonefound。
2.测试开发板
在cmd命令行中运行cdC:\altera\13.1\hld\board\terasic\
tests\blank命令,进入该子目录后,在cmd中运行aoclprogramblank.aocx命令,如果DE5-Net开发板已经安装连接好并上电,则 .aocx里面的 .sof文件会通过PCI-E接口下载,并且会返回成功的信息,如果开发板不存在或者没有安装连接好,则会自动解压出reprogram_temp.sof,用户可以通过USB下载电缆去下载。
1)编译和测试OpenCL工程(需要开发板)
(1)编译OpenCL工程,创建OpenCL内核FPGA硬件配置文件。在Windows的cmd命令行中输入命令:
cdC:\altera\13.1\hld\board\terasic\tests\boardtest
进入OpenCL工程文件夹,然后在cmd命令行中输入命令:
aocboardtest.cl--sw-dimm-partition
开始编译工程。编译时间大约为几个小时,最终产生的boardtest.aocx文件里面包含了 .sof文件,可以用来给开发板编程。
aoc命令主要完成以下任务:
①从OpenCL源码产生Quartus
Ⅱ设计工程文件。
②检查初始化语法错误。
③完成基本的优化。
④在<OpenCL内核文件>目录或子目录中创建必要的中间文件。
⑤创建Altera离线编译器目标文件(AlteraOfflineCompilerObjectfile,扩展名为 .aoco)。
⑥创建 .aocx硬件配置文件。
根据OpenCL内核的复杂性不同,创建 .aocx文件可能需要花费几个小时的时间。
(2)测试OpenCL工程(通过开发板)。在cmd命令行里面输入命令:
cdC:\altera\13.1\hld\board\terasic\tests\boardtest
进入OpenCL工程文件夹,然后输入命令:
aoclprogramboardtest.aocx
如果开发板已经安装连接好,则 .aocx里面的 .sof文件会通过PCI-E接口下载,并且会返回成功的信息;如果开发板不存在或者没有安装连接好,则会自动解压缩出reprogram_temp.sof,用户可以通过USB下载电缆去下载。
2)编译和测试OpenCL工程(不需要开发板)
下面完全脱离真实的开发板来运行<QuartusII安装目录>\hld\board\c5soc中的OpenCL工程。
(1)设置“虚拟”板的环境变量(替换上面设置的环境变量)。新的环境变量名和变量值为
AOCL_BOARD_PACKAGE_ROOT
和 C:\altera\13.1\hld\board\c5soc
设置结果如图9.14所示。
图9.14“虚拟”板的环境变量设置
(2)编译OpenCL工程,创建OpenCL内核FPGA硬件配置文件。在/support/examples/opencl/opencl.html网站下载Hello_world实例的Windowspackage(zip)文件,下载的文件名为exm_opencl_hello_world_windows64.zip,如图9.15所示。
图9.15下载相关文件网站
将下载的exm_opencl_hello_world_windows64.zip文件解压后,将hello_world\device目录中的hello_world.cl文件复制到<Quartus Ⅱ安装目录>\hld\board文件夹下,如图9.16所示。
图9.16board文件夹包含内容
(3)脱离实际开发板的OpenCL工程实例演示。按照上面的方法,在
.cn/support/examples/opencl/opencl.html网站下载另外三个OpenCL工程实例,如图9.15所示,分别是VectorAddition(exm_opencl_vector_add_windows64.zip)、MatrixMultiplication(exm_opencl_matrix_mult_windows64.zip)和FFT(1D)(exm_opencl_fft1d_windows64.zip)。
分别解压缩3个zip实例工程到<Quartus Ⅱ安装目录>\hld\board\(也可以是其他目录),然后分别在cmd命令行里面输入以下命令:
①编译VectorAddition实例工程:
cd<Quartus Ⅱ安装目录>\hld\board\vector_add\device
aoc-vvectorAdd.cl
②编译MatrixMultiplication实例工程:
cd<Quartus Ⅱ安装目录>\hld\board\matrix_mult\device
aoc-vmatrix_mult.cl
③编译FFT(1D)实例工程:
cd<Quartus
Ⅱ安装目录>\hld\board\fft1d\device
aoc-vfft1d.cl
这三个OpenCL实例之间没有任何联系,可以单独运行,如果读者的PC内存足够大,也可以一起运行。
在产生的不同Quartus
Ⅱ工程中,可以分别找到matrix_mult.v、vectorAdd.v和fft1d.v这些转换出的源码。需特别注意的是,这些最终的源码是acl_kernel_interface接口格式,这种接口比较简单,和FIFO差不多,只不过多了几个启动结束控制线,如start、valid等。
3.编译Host程序
在计算机上启动微软的V
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年认知症非药物干预技师考试试卷及答案
- 2025年3月福建漳州台商投资区资产运营集团有限公司招聘人力资源服务外包人员13人笔试历年参考题库附带答案详解
- 2025山东石油化工学院招聘100人查看职位笔试历年参考题库附带答案详解
- 2025山东威海桃威铁路有限公司招聘24人笔试历年参考题库附带答案详解
- 2025安徽安庆同安控股有限责任公司选聘中层管理人员1人笔试历年参考题库附带答案详解
- 2025天津和平联通10010招聘50人笔试历年参考题库附带答案详解
- 2025国家电投集团中国电力招聘7人笔试历年参考题库附带答案详解
- 2025四川成都九洲迪飞科技有限责任公司招聘射频工程师等岗位81人笔试历年参考题库附带答案详解
- 2025呼伦贝尔五九煤炭集团招聘26人笔试历年参考题库附带答案详解
- 2025内蒙古锡林郭勒盟锡林浩特市机场招聘18人笔试历年参考题库附带答案详解
- 厨房用具购销合同样本
- 国开作业《公共关系学》实训项目1:公关三要素分析(六选一)参考552
- 中心传动浓缩机安装方案
- 西医三基-基础医学综合-诊断学-实验诊断
- 城市道路桥梁工程施工质量验收规范 DG-TJ08-2152-2014
- 结构的弹性稳定计算演示文稿
- 岗位经验萃取与案例
- 2023学年完整公开课版剪切计算
- 海天味业产品(按产品分类)
- GB/T 13871.1-2022密封元件为弹性体材料的旋转轴唇形密封圈第1部分:尺寸和公差
- GB/T 4798.6-2012环境条件分类环境参数组分类及其严酷程度分级船用
评论
0/150
提交评论