基于SoCkit的opencl实验1-基础例程

基于SoCkit的opencl实验1-基础例程

准备软硬件

  • Arrow SoCkit Board
  • 4GB or larger microSD Card
  • Quartus II v14.1
  • SoCEDS v14.1
  • Altera SDK for OpenCL v14.1
  • (A license for these tools.There are 60-day evaluation licenses available via your FAE. You will need to provide a NIC ID)
  • Opencl开发资料
  • Arrow SoCKit OpenCL BSP
  • Arrow SoCKit OpenCL microSD Image
  • Arrow SoCKit OpenCL Examples

软件安装

到Altera官网下载Altera SDK for OpenCL v14.1,并申请一个license。

将Altera SDK for OpenCL v14.1的安装路径设置与Quartus II v14.1的路径内部,例如:hld就是Altera SDK for OpenCL v14.1的安装文件夹,安装软件自动命名的。

设置环境变量

????设置环境变量主要是为了OpenCL的编译,将Arrow SoCKit OpenCL BSP压缩包解压在一个文件夹,如:

文件夹内部的文件为:

  • arm32 : 文件库
  • board_env.xml : Altera OpenCL tools,提供工具的信息;
  • arrow_c5sockit_sharedmem : 支持使用的板子的文件库;
  • driver : 驱动文件夹;

增加系统环境变量:

  • QUARTUS_ROOTDIR=C:\altera\14.0\quartus(根据quartus的安装路径设置)
  • ALTERAOCLSDKROOT=C:\altera\14.0\hld(根据quartus的安装路径设置)
  • AOCL_BOARD_PACKAGE_ROOT= { Arrow SoCKit OpenCL BSP解压后的文件夹路径}
  • Path= { Arrow SoCKit OpenCL BSP解压后的文件夹路径}/bin

启动电脑的命令输入窗口,输入:aoc --list-boards

开发板设置

  • CLKSEL[1] = 2-3
  • CLKSEL[0] = 2-3
  • BOOTSEL[2] = 1-2
  • BOOTSEL[1] = 2-3
  • BOOTSEL[0] = 1-2
  • SW6 to 6‘b100110 (labeled 6 -> 1 on the switch)

SD卡镜像拷贝与打开串口

解压Arrow SoCKit OpenCL microSD Image,然后拷贝到SD卡;

板子插上SD卡,上电,使用putty.exe打开串口,设置串口号和波特率,如下;

?

板级调试

设置运行的环境变量

由于板子配带的镜像里面有了两个例程,一个是hello world,一个是两个向量的相加运算;

输入root登录

输入ls查看文件

输入 source./init_opencl.sh,配置系统运行的环境变量;

输入aocl可以查看指令的使用

测试环境变量设置情况

输入aocl version

测试板子的情况

输入 aocl diagnose

配置IP地址

输入ifconfig eth0 192.168.168.101设置IP地址,方便将电脑上的文件传送到SD卡;

Ifconfig查看IP设置情况;

编译2进制文件

进入到文件夹Helloworld

输入aocl program /dev/acl0 hello_world.aocx编译2进制文件

运行

输入./hello_world返回信息如下:


Querying platform for info:

==========================

CL_PLATFORM_NAME = Altera SDK for OpenCL

CL_PLATFORM_VENDOR = Altera Corporation

CL_PLATFORM_VERSION = OpenCL 1.0 Altera SDK for OpenCL, Version 14.0

?

Querying device for info:

========================

CL_DEVICE_NAME = arrow_c5sockit_sharedmem : Arrow SoCKit Board

CL_DEVICE_VENDOR = Arrow Electronics

CL_DEVICE_VENDOR_ID = 4466

CL_DEVICE_VERSION = OpenCL 1.0 Altera SDK for OpenCL, Version 14.0

CL_DRIVER_VERSION = 14.0

CL_DEVICE_ADDRESS_BITS = 64

CL_DEVICE_AVAILABLE = true

CL_DEVICE_ENDIAN_LITTLE = true

CL_DEVICE_GLOBAL_MEM_CACHE_SIZE = 32768

CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE = 0

CL_DEVICE_GLOBAL_MEM_SIZE = 536870912

CL_DEVICE_IMAGE_SUPPORT = false

CL_DEVICE_LOCAL_MEM_SIZE = 16384

CL_DEVICE_MAX_CLOCK_FREQUENCY = 1000

CL_DEVICE_MAX_COMPUTE_UNITS = 1

CL_DEVICE_MAX_CONSTANT_ARGS = 8

CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE = 134217728

CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 3

CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 8192

CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE = 1024

CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR = 4

CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT = 2

CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT = 1

CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG = 1

CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT = 1

CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE = 0

Command queue out of order? = false

Command queue profiling enabled? = true

Using AOCX: hello_world.aocx

?

Kernel initialization is complete.

Launching the kernel...

?

Thread #2: Hello from Altera‘s OpenCL Compiler!

?

Kernel execution is complete.

向量相加

与hello world运行一致,返回到vectorAdd文件夹

编译2进制文件

运行

软件说明

????基于SoCkit的opencl主要分为两个部分,一部分是运行在FPGA上面的OpenCL Kernel,软件代码是在工程中的.cl文件中,也就是核函数。另一部分就是运行在ARM上的主函数,主要是采用.cpp文件。

????.cl文件中出现的函数前缀加上"__kernel"关键词,指定它运行在设备(FPGA)上,使用Altera的OpenCL工具就可以编译为FPGA比特流配置文件。

????.cpp文件为主机程序,主要执行流程为:初始化平台、寻找设备、打印设备信息、创建设备上下文、在设备上下文中创建指令队列、载入设备代码、编译设备代码、创建核函数对象、设置核函数参数、运行核函数、等待核函数运行结束、清除所有对象。这是OpenCL的最基本流程,虽然比较繁琐,但熟悉之后几乎每次都是这几步,代码改动很少,真正需要用心设计的是核函数。

????前面hello_world.aocx和 helloworld两个文件,前者运行在FPGA上(OpenCL中称为核函数,Kernel),后者运行在ARM上(OpenCL中称为主机程序,Host Program)。

?

可参考:http://bbs.eeworld.com.cn/thread-455862-1-1.html

?

时间: 2024-10-14 00:44:12

基于SoCkit的opencl实验1-基础例程的相关文章

基于JAVA语言的selenium测试基础总结

目录一.基本语句 1.循环控制(break,continue) 3.字符的替换(replace,repalceFirst,replaceAll,regex) 4.字符串的连接("+",append) 5.字符串的截取和分割(substring,split) 6.文件夹的创建与删除(mkdirs,delete) 7.文件的读写(BufferedWrite,BufferedReader) 8.系统时间的获取( ((Calendar.getInstance()).get(Calendar.Y

实验楼实验——LINUX基础入门

第一节 Linux简介 一.Linux的历史: 1965 年,Bell 实验室.MIT.GE(通用电气公司)准备开发 Multics 系统,为了同时支持 300 个终端访问主机,但是 1969 年失败了: 刚开始并没有鼠标.键盘,输入设备只有卡片机,因此如果要测试某个程序,则需要将读卡纸插入卡片机,如果有错误,还需要重新来过: Multics:Multiplexed Information and Computing Service 1969 年,Ken Thompson(C语言之父)利用汇编语

zigbee学习之路(十五):基于协议栈的按键实验

一.前言 经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了.今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断. 二.实验功能 在协议栈上实现按键中断,BUT1 按下,LED1 闪烁两次. 三.代码讲解 大家还记得,前面做过的按键实验是怎么配置的吗,其实基于zigbee的协议栈原理是差不多的,我们要对按键的接口和状态是差不多,TI已经为我们建立了专用的按键配置的代码文件,我们只要在此基础上修改就行了.先打开hel_key.c进行修改,下面是代码 #de

基于 CoreText 的排版引擎:基础

本文节选自我的图书:<iOS 开发进阶>. 本文涉及的 Demo 工程在这里:https://github.com/tangqiaoboy/iOS-Pro. 扫码关注我的「iOS 开发」微信公众帐号: 本章前言 使用 CoreText 技术,我们可以对富文本进行复杂的排版.经过一些简单的扩展,我们还可以实现对于图片,链接的点击效果.CoreText 技术相对于 UIWebView,有着更少的内存占用,以及可以在后台渲染的优点,非常适合用于内容的排版工作. 本章我们将从最基本的开始,一步一步完成

基OMAPL138基于SYSLINK的双核AD采集处理例程

Revision History Revision No. Description Draft  Date V1.0 1. 初始版本. 2014/7/22 V1.1 1. 修改采样方式为DSP采样. 2014/11/4 阅前须知 版权声明 本手册版权归属广州创龙电子科技有限公司所有,非经书面同意,任何单位及个人不得擅自摘录本手册部分或全部,违者我们将追究其法律责任.本文档一切解释权归广州创龙电子科技有限公司所有. 2014-2018 Guangzhou Tronlong Electronic T

基于 REST 的 Web 服务:基础

基础 REST 定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态. 如果考虑使用它的 Web 服务的数量,REST 近年来已经成为最主要的 Web 服务设计模型. 事实上,REST 对 Web 的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计. REST 这个概念于 2000 年由 Roy Fielding 在就读加州大学欧文分校期间在学术论文“Archit

基于Linux的USB子系统学习 --- &lt;基础知识与USB协议概述&gt; ing

一.参考资料 1.<USB基础知识概论>  http://www.crifan.com/files/doc/docbook/usb_basic/release/html/usb_basic.html 2.<USB in a NutShell> http://www.beyondlogic.org/usbnutshell/usb1.shtml 3.<USB开发大全(第四版)> http://download.csdn.net/download/qqqq419276485/

Linux 实验一 基础实践

Linux 实践一 1:软件源的维护方法 删掉DEB打头的 在命令行中输入命令时,可以用命令补全的方法. 下载完成后,使用sudo dpkg-i skype.deb 来完成安装. 2:掌握Linux 权限管理的概念. Linux 权限管理: 用户权限分为读.写.执行三种.一般文件只有读.写权限.可执行文件可以增加执行权限. 脚本文件:英文为 Scrpit.实际上就是程序,一般都是由程序提供的编程语言. 脚本文件:类似于DoS 系统操作中的批处理文件.将不同的命令组合起来,并按确定的顺序自动连续的

测试环境docker化(一)—基于ndp部署模式的docker基础镜像制作

本文来自网易云社区 作者:孙婷婷 背景 我所在测试项目组目前的测试环境只有一套,在项目版本迭代过程中,开发或产品偶尔会在测试环境进行数据校验,QA人数在不断增加,各个人员在负责不同模块工作时也会产生脏数据,导致QA在功能测试和接口测试过程中需要清理测试环境增加工作量,同时QA组在进行异常测试等多维度质量保障时也希望有多套环境进行数据隔离.但目前测试环境多套隔离操作麻烦,每隔离一套环境需要修改大量配置.数据库重新建表到调试可用,在开发的帮助下至少需要3天的时间,在这种场景下,我们借鉴组内大数据QA