opencl 用户手册 - speed- · pdf file4.4.3 编译host程序: 启 动 visual studio 2010...

22
Rev.1.5 OpenCl 用户手册 OpenCL 用户手册 2017/12/12 Rev.1.5

Upload: dangdung

Post on 06-Feb-2018

294 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

Rev.1.5

OpenCl用户手册

OpenCL用户手册

2017/12/12

Rev.1.5

Page 2: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

Rev.1.5

OpenCl用户手册

变更履历

日期 版本 修订说明

2016-06-13 1.0 First Release

2016-07-29 1.1 Updata 4.2

2017-01-04 1.2 Support quartus 16.0 && 16.1,support SC-OPM_660 board

2017-09-27 1.3 Support quartus 17.0

2017-11-14 1.4 Support quartus 17.1

2017-12-08 1.5 结构修订

Page 3: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

Rev.1.5

OpenCl用户手册

目 录

1 简介................................................................................................................................................................1

2 硬件加速平台介绍....................................................................................................................................... 2

3 系统要求:................................................................................................................................................... 3

3.1 操作系统........................................................................................................................................... 3

3.2 软件安装........................................................................................................................................... 3

3.2.1 下载....................................................................................................................................... 3

3.2.2 安装....................................................................................................................................... 4

4 搭建 OpenCL 环境......................................................................................................................................5

4.1 设置环境变量................................................................................................................................... 5

4.1.1 WINDOWS 系统.................................................................................................................5

4.1.2 LINUX 系统.......................................................................................................................... 6

4.2 确认环境变量................................................................................................................................... 6

4.2.1 更新板卡环境....................................................................................................................... 6

4.2.2 确认软件安装....................................................................................................................... 7

4.3 编译 OpenCL 工程:......................................................................................................................8

4.3.1 编译 OpenCL 工程:..........................................................................................................8

4.3.2 加载 bit 文件........................................................................................................................8

4.4 测试 OPENCL 工程......................................................................................................................... 8

4.4.1 驱动安装............................................................................................................................... 8

4.4.2 板卡工作状态诊断...............................................................................................................9

4.4.3 编译 Host 程序:..............................................................................................................10

4.4.4 查看结果:.........................................................................................................................11

Page 4: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

Rev.1.5

OpenCl用户手册

4.5 RTL library 的使用........................................................................................................................11

4.5.1 生成 library 文件...............................................................................................................12

4.5.2 编译 opencl 工程..............................................................................................................14

4.5.3 查看结果.............................................................................................................................14

4.5.4 Example 例子....................................................................................................................14

5 常用 aoc/aocl 命令总结...........................................................................................................................15

6 常见问题总结:.........................................................................................................................................16

7 参考:.........................................................................................................................................................16

8 附录:.........................................................................................................................................................16

Page 5: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

Rev.1.5

OpenCl用户手册

图目录

图 1 pencl 应用场景.................................................................................................................................. 1

图 2 SC-OPM 加速板卡实物图................................................................................................................ 2

图 3 SC-OPM 高性能计算加速卡系统结构图........................................................................................2

图 4 操作系统选择.....................................................................................................................................3

图 5 下载程序包和器件库.........................................................................................................................4

图 6 下载 OpenCL SDK 包.......................................................................................................................4

图 7 环境变量_1..........................................................................................................................................5

图 8 环境变量_2..........................................................................................................................................5

图 9 环境变量_3..........................................................................................................................................5

图 10 board 目录下文件...........................................................................................................................6

图 11 确认环境变量安装............................................................................................................................7

图 12 获取到的板卡列表............................................................................................................................7

图 13 设备管理器获取到的板卡信息_windows 系统............................................................................9

图 14 aocl diagnose 校验结果............................................................................................................. 10

图 15 Hello_world 运行结果................................................................................................................. 11

图 16 Library 的使用关系.......................................................................................................................11

图 17 Xml 基本语法.................................................................................................................................13

图 18 Cos IP 运行结果............................................................................................................................15

Page 6: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

Rev.1.5

OpenCl用户手册

表目录

表 1 环境变量设置......................................................................................................................................5

表格 2 常用 aoc/aocl 命令..................................................................................................................... 15

Page 7: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 1

1 简介

Altera 的 OpenCL 主要面向信号处理类应用的客户,是用 C 语言开发 FPGA 的利器,开放计算语

言(OpenCL)联盟著名的公司有 FPGA 巨头 Altera、两大显卡 GPU 巨头 AMD、英伟达、CPU 巨头 Intel、

软件和服务器巨头 IBM 以及全世界最大的公司 Apple(苹果)等等。不过 AMD 和英伟达是用 GPU

实现的 OpenCL 并行运算,Altera 是用 FPGA 实现并行运算。

OpenCL 应用程序含有两部分。OpenCL 主程序是纯软件例程,以标准 C/C++ 编写,可以运行

在任何类型的微处理器上。例如,这类处理器可以是 FPGA 中的嵌入式软核处理器、硬核 ARM 处理

器或者外置 x86 处理器。

图 1 pencl应用场景

在这一主软件例程执行期间的某一点,某一功能有可能需要很大的计算量,这就可以受益于并行

器件的高度并行加速功能,例如 CPU、GPU、FPGA 等器件。要加速的功能被称为 OpenCL 内核。

采用标准 C 编写这些内核;但是,采用结构对其进行注释,以设定并行处理操作和存储器等级。矢量

的每一元素都采用了并行线程,当采用像 FPGA 这类具有大量精细粒度并行单元的器件进行加速时,

能够很快的计算出结果。主程序使用标准 OpenCL 应用程序接口(API),支持将数据传送至 FPGA,调

Page 8: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 2

用 FPGA 内核,传回得到的数据。

2 硬件加速平台介绍

图 2 SC-OPM加速板卡实物图

SC-OPM 是加速云专为计算加速领域研发的新一代高性能计算加速卡,板卡尺寸 56x167mm。

采用 Altera Arria 10 GX660/1150 芯片,集成 660k/1150k LE 和 1.5T/1.3T FLOPS 单精度浮点处理

能力,支持 2 个 40G 电口可配置为 4x1GE/4x10GE/SRIO/Infiniband。最大支持三组 DDR4 2133MHz

64bit 颗粒,最大支持 24GB 内存容量和 409Gbps 内存访问带宽。支持 OpenCL 开发,支持 SCIDE

开发环境。

图 3 SC-OPM高性能计算加速卡系统结构图

Page 9: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 3

3 系统要求:

3.1 操作系统

Windows:

Microsoft 64-bit Windows 7 专业版,微软公司的 Visual Studio 2010 专业版

Linux:

CentOS 7

3.2 软件安装

3.2.1 下载

下载对应系统的 Quartus II 17.1 pro 安装包以及 Altera OpenCL 17.1 SDK 包,链接如下

http://dl.altera.com/?edition=pro&platform=windows&download_manager=direct

注:请选择对应的操作系统,下载时需要注册,请自行注册账号后登陆下载。

图 4 操作系统选择

下载组合文件分页下 Quartus Prime Pro Edition Software (Device support not included)安

装包和 Quartus Prime Pro Edition Device Package 1 (Arria 10)器件库,以及其他软件分页下 Intel

FPGA SDK for OpenCL Pro Edition 安装包。

Page 10: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 4

图 5 下载程序包和器件库

图 6 下载 OpenCL SDK包

3.2.2 安装

安装顺序为

A. Quartus-pro-17.1.0.240 主程序包

B. Quartus-pro-17.1.0.240-devices 器件库

C. Intel FPGA SDK for OpenCL Pro Edition SDK 包

Page 11: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 5

4 搭建 OpenCL 环境

4.1 设置环境变量

4.1.1 WINDOWS 系统

环境变量设置(以下以 17.1 为例,请用户按照当前安装目录设置)

图 7环境变量_1

图 8环境变量_2

图 9环境变量_3

变量和值如表 1 所示。

表 1环境变量设置

environment variable value

INTELFPGAOCLSDKROOT D:\intelFPGA_pro\17.1\hld

ALTERAOCLSDKROOT D:\intelFPGA_pro\17.1\hld

AOCL_BOARD_PACKAGE_ROOT D:\intelFPGA_pro\17.1\hld\board\a10_ref_17.1.0_speed_clouds_660

PATH %ALTERAOCLSDKROOT%\bin;

%ALTERAOCLSDKROOT%\host\windows64\bin;

Page 12: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 6

%AOCL_BOARD_PACKAGE_ROOT%\windows64\bin

QUARTUS_ROOTDIR D:\intelFPGA_pro\17.1\quartus

QUARTUS_ROOTDIR_OVERRIDE D:\intelFPGA_pro\17.1\quartus

注:请按照自己的安装目录设置;

4.1.2 LINUX 系统

当前加速云的 opencl 平台支持的 linux 系统 centos 7

请按照下列操作设置环境变量

export INTELFPGAOCLSDKROOT=/mnt/02_program/intelFPGA_pro/17.1/hld

export QUARTUS_ROOTDIR_OVERRIDE=/mnt/02_program/intelFPGA_pro/17.1/quartus/

export QUARTUS_ROOTDIR=/mnt/02_program/intelFPGA_pro/17.1/quartus/

export LM_LICENSE_FILE=/mnt/02_program/intelFPGA_pro/801844e13194_1505135103829.dat

export PATH=$PATH:/mnt/02_program/intelFPGA_pro/17.1/quartus/bin

export AOCL_BOARD_PACKAGE_ROOT=/mnt/02_program/intelFPGA_pro/17.1/hld/board/a10_ref/

export QUARTUS_HOME=/mnt/02_program/intelFPGA_pro/17.1/quartus/

export

LD_LIBRARY_PATH=/mnt/02_program/intelFPGA_pro/17.1/hld/host/linux64/lib:/mnt/02_program/intelFPGA_pro/17.1/hld/board/

a10_ref/linux64/lib

export PATH=$PATH:/mnt/02_program/intelFPGA_pro/17.1/quartus/bin/:/mnt/02_program/intelFPGA_pro/17.1/hld/bin:$PATH

export ALTERAOCLSDKROOT=/mnt/02_program/intelFPGA_pro/17.1/hld

注:请按照自己的安装目录设置;也可以通过运行 init_opencl_linux.sh 完成环境变量的设置

4.2 确认环境变量

4.2.1 更新板卡环境

在默认的安装路径下 D:\intelFPGA_pro\17.1\hld\board 的默认安装板卡如下图所示。

图 10 board目录下文件

Page 13: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 7

将提供的压缩文件包 a10_ref_17.1.0_speed_clouds_660 解压到该文件目录中,板卡的安装环境

已经完成。

4.2.2 确认软件安装

在命令行里面运行 where aoc,测试一下软件是否安装正确以及环境变量是否设置正确,如果正

确,如下图;如果不正确,修改错误再来。

图 11确认环境变量安装

在 AOCL_BOARD_PACKAGE_ROOT 指向的目录下,必须有一个 board_env.xml 描述硬件平台的

脚本,对该脚本的测试

aocl board-xml-test:脚本的基本设置

aoc --list-boards:板卡测试平台

在命令行里运行 aoc -list-boards,会列出系统可用的板卡列表,如下图,否则请确认环境变量的

设置

图 12获取到的板卡列表

Page 14: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 8

当确认软件环境安装正确后,可以利用 www.altera.com 提供的一些简单的 example 例程进行

opencl 的入门学习。

4.3 编译 OpenCL工程:

以下用 altera 官网上提供的 hello world 的例程作为例子,来详细阐述下 opencl 的操作步骤。下

载地址为:

https://www.altera.com.cn/support/support-resources/design-examples/design-software/opencl/hello-world.html

4.3.1 编译 OpenCL 工程:

在命令行里面进入工程文件夹,运行 aoc hello_world.cl –board=a10gx_660 开始编译,编译时

间大约几个小时,最终产生的 hello_world.aoco 与 hello_world.aocx 两个文件,其中

hello_world.aocx 里面包含了 sof 文件,可以给加速板编程进去。

4.3.2 加载 bit 文件

将生成的 hello_world 文件夹下面的 top.sof 通过 JTAG 模式烧写至 FPGA 中。加载完成后,重启

电脑。

注:用户也可以直接使用 a10_ref_17.1.0_speed_clouds 目录下面的 top.sof 加载至加速卡中。

4.4 测试 OPENCL工程

4.4.1 驱动安装

板卡的 pcie 驱动是使用 windriver 标准驱动,运行 aocl install 后,提示安装 windriver 以及 fpga

板卡驱动。

Windows 操作系统下,安装成功并且后在设备管理器中能够看到 FPGA 加速板卡以及 windriver

驱动,如图 13 所示。

Page 15: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 9

图 13设备管理器获取到的板卡信息_windows系统

LINUX 操作系统下,通过如下命令检查是否能够检测到 PCIe 加速卡,命令为:

lspci grep|Altera

4.4.2 板卡工作状态诊断

用户可以根据 aocl diagnose 命令来确定板卡的状态,比如 pcie 的设置、memory 的设置以及

板卡的温度等信息。

运行 aocl diagnose;测试通过提示 DIAGNOSTIC_PASSED,否则根据提示修改相应的设置。

运行成功如下图所示。

Page 16: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 10

图 14 aocl diagnose 校验结果

4.4.3 编译 Host 程序:

启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选 择

D:\intelFPGA_pro\15.1\hld\board\a10_ref_15.1.2_speed_clouds\hello_world\hello_world.sln

(或者直接在硬盘上双击这个 sln 文件,VS 2010 会自动完成上述步骤),然后点击“生成生成解决

方案”,产生了 host 的可执行文件 hello_world.exe,将 aocx 与 aoco 文件复制,与可执行文件放在

Page 17: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 11

同一个文件夹下就可以运行了。

4.4.4 查看结果:

运行第五步产生的 exe 即可在 PC 屏幕上看到开发板返回的最终结果,下图是使用 hello_world

的返回结果

图 15 Hello_world运行结果

4.5 RTL library的使用

OpenCL library(以下称为 library)是独立于 Opencl BSP 的一个文件,在 Opencl Kernel 内核

调用,可以包含多个功能,可以用 RTL 或 OpenCL 设计。下图阐述了 library 的与 Opencl BSP 之间

的关系。

图 16 Library的使用关系

本文档主要描述利用 RTL 完成的一些基本的 library 设计,并描述使用方法以及设计步骤。

Page 18: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 12

4.5.1 生成 library 文件

当你已经有优化的并且通过验证的 RTL 代码或者你所需要的功能并不能在 Opencl 中不能高效的

描述,所以 Opencl Library 允许使用 verilog/VHDL/Systemverilog 设计,通过 library 接口与 Opencl

bsp 完成 aoc 编译。

4.5.1.1 文件类型介绍:

一个完整、可用的 rtl library 必须包括如下文件。

RTL 源文件:设计的 library 的源文件,设计时需要注意数据接口类型必须严格定义为 Avalon

streaming signals 类型。

C_model.cl:OpenCL C Model 每一个 RTL 模块必须对应一个 opencl c 模型,该模型将被用于

在仿真以验证整体 OpenCL 系统。

double_lib.h:C 模型的 header 文件

double_lib.xml:xml 文件是 kernel 可识别的 rtl 模块的描述语言,以一个简单的 library 为例,

其描述如下图所示。

Page 19: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 13

图 17 Xml基本语法

具体的 xml 语法参见 OpenCL Library Guide, 15.1

4.5.1.2 生成 library 文件

Basic command-line interface (see Command-Line Reference section for other options):1. To package a single RTL component into an object file:aoc -c comp_spec.xml -o add.aoco

where comp_spec.xml is an RTL component description file (see RTL Components section below) andadd.aoco is output object file containing packaged RTL component.2. To package an OpenCL file with helper functions into an object file:aoc -c -shared sub.cl -o sub.aoco

“-shared” flag tells aoc to create an object file suitable for inclusion into a library. Note that a full aoccompile is not needed, “-c” is enough.3. To package multiple object files into a library file:

Page 20: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 14

aocl library create -o mylib.aoclib add.aoco sub.aoco

“aocl library” is a new utility for working with OpenCL libraries. This command creates a library filenamed mylib.aoclib out of one or more supplied aoco object files. Some aoco object files may containRTL components, others may contain OpenCL components.4. To use a library during OpenCL kernel compile:aoc -l mylib.aoclib [-L<lib_dir>] mykernel.cl

Use “-l” to specify full name of library file. Use “-L” to specify directory containing library files. Both “-l”and “-L” can be specified multiple times.

4.5.2 编译 opencl 工程

用户根据需求设计 cl 工程,并进行编译,命令如下

aoc -l double_lib.aoclib -L lib1 -I lib1 example1.cl

4.5.3 查看结果

运行 host 程序,查看运行结果,详细参见本文 3.

4.5.4 Example 例子

下载 altera 官网提供的 example 压缩包,该压缩包提供了多个 library+kernel+host 系统,解压

后可以按照如下步骤操作完成简单的 rlt library 测试。

a)perl make_lib.pl,生成 lib1/double_lib.aoclib. (该步骤是针对安装了 activeperl 的用户,如

果没有安装,请使用 cmd 命令逐步进行操作)

b)完成 opencl 工程的编译,请运行 aoc -l double_lib.aoclib -L lib1 -I lib1 example1.cl

c) cd host/example1/bin, 执行 host 程序,查看运行结果。

下图是利用 rtl library 进行 cos 计算的结果,显示如下。

Page 21: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 15

图 18 Cos IP运行结果

5 常用 aoc/aocl 命令总结

表格 2常用 aoc/aocl命令

Command Instruction

Aoc --version Print out version infomation and exit

Aoc --list-boards Print a list of available boards and exit.

Aoc –report Print area estimates to screen after intial compilation. The report is always

written to the log file.

-I <directory> Add directory to header search path.

-L <directory> Add directory to OpenCL library search path.

-l <library.aoclib> Specify OpenCL library file.

--board <board name> Compile for the specified board. Default is a10gx_es2.

aocl ldlibs Show the list of host runtime libraries provided by the

Altera SDK for OpenCL.

aocl program Configure a new FPGA image onto the board.

aocl flash [If supported] Initialize the FPGA with a specified

aocl install Install your board into the current host system.

aocl uninstall Uninstall your board from the current host system.

aocl diagnose Run your board vendor's test program for the board.

aocl version Show version information.

Aocl

Aocl help

Show help for a particular subcommand.

Page 22: OpenCL 用户手册 - speed- · PDF file4.4.3 编译Host程序: 启 动 Visual Studio 2010 , 点 击 “ 文 件 打 开 项 目 ” , 选

OpenCl用户手册

Rev.1.5 16

6 常见问题总结:

7 参考:

参考资料:http://www.altera.com.cn/products/software/opencl/opencl-index.html

网页最下面 3 个入门文档:

面向 OpenCL 的 Altera SDK 开始设计:aocl_getting_started.pdf

面向 OpenCL 的 Altera SDK 编程指南:aocl_programming_guide.pdf

面向 OpenCL 的 Altera SDK 优化指南:aocl_optimization_guide.pdf

Altera 目前有 13 个 OpenCL 的例子在

http://www.altera.com.cn/support/examples/opencl/opencl.html 里面。

Cl 文件是 OpenCL 的源码文件,aocx 是 cl 文件编译后的编程文件,里面包括 sof 文件。PC 机那

边的 Host 软件不是必需的,做 host 软件仅仅是为了和开发板通信来获取开发板运行 openCL 的信息。

没有开发板的用户只要写一个 cl 文件然后自己建立一个 Quartus II 工程就可以编译了,最后产生了转

换后的.V 源码和整个编译后的 Quartus II 完整工程,包括大量的底层配套的各种 IP 源码。

因为事先设置了环境变量的缘故,所以 cl 文件放到任何路径下都可以编译,编译后会在 cl 文件所

在的文件夹里面产生完整的 Quartus II 整个工程,里面就有转换后的.v 文件。

8 附录:

附录 1-------------------------------------SC-OPM 用户手册

附录 2-------------------------------------FPGA 加载模式