Intel FPGA SDK for OpenCL

2024-05-15 00:18
文章标签 sdk fpga intel opencl

本文主要是介绍Intel FPGA SDK for OpenCL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://blog.csdn.net/zhaojing6828/article/details/79057567

1.     概况

Intel FPGA SDK for OpenCL 是IntelFPGA 基于OpenCL的异构并行编程环境。

2.     总体流程

总共分两步:

1)      基于Intel SDK提供的OpenCL Offline Complier,编译OpenCL kernel

2)      基于C/C++编译器,编译host 生成目标文件,然后链接编译好的kernel,生成可执行文件

编程模型主要有三部分:

1)      Host应用和host编译器

2)      OpenCL 编写的kernel 和 kernel编译器。Kernel编译器针对不同厂商提供的FPGA加速板卡生成对应的FPGA镜像。

3)      Custom Platform,FPGA加速板卡和对应的OpenCL库,FPGA综合工具。

SDK user-created item:加速应用开发程序员

Board developer :FPGA加速板卡开发公司

Intel-supplied tool or design:IntelSDK

Third party supplied or open source tool:第三方或开源c/c++编译器,如gcc

Tool-generated item:host可执行文件和kernel的FPGA镜像

3.     Kernel编译流程

整体编译,直接生成FPGA镜像.aocx和report。

命令:aoc xxx.cl

*.aoco 是一个中间文件,包含后续编译步骤所需信息

*.aocx 是一个可执行文件,FPGA镜像

report.html 提供FPGA资源分析和代码性能分析。

整体编译一般需要耗费数个小时,如果在开发过程中需要迭代优化kernel的性能,不推荐这种开发模式。下面讲述分步骤编译

总共分5个步骤:

1)      Emulation

验证kernel功能的正确性,Linux平台提供debug手段。

命令:aoc-march=emulator <your_kernel_filename>.cl

2)      Intermediate compilation

检查语法错误,生成*.aoco文件

命令:aoc -c <your_kernel_filename>.cl[-report]

3)      Review HTML Report

根据report判断kernel性能是否达到预期,同时可根据report结果确定提升kernel性能方向,定位bottleneck。

<your_kernel_filename>/reports/report.html

命令:firefox report.html

4)      Profiling

在编译器转换生成的verilog code中嵌入性能统计计数器。在执行过程中可通过Intel FPGA Dynamic Profiler动态观察kernel性能。可以类比Signal Tap。

命令:aoc -profile<your_kernel_filename>.cl [-fast-complie]

5)      Full deployment

经过数次迭代开发,当kernel性能满足需求时,可最终编译生成.aocx文件。完成开发。

命令:aoc <your_kernel_filename>.cl

https://blog.csdn.net/zhaojing6828/article/details/79057567

这篇关于Intel FPGA SDK for OpenCL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990265

相关文章

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

FPGA编译与部署方法全方位介绍

FPGA编译与部署是FPGA开发中的核心环节,涉及从代码编写、调试到将设计部署到FPGA硬件的全过程。这个流程需要经过创建项目、编写FPGA VI、模拟调试、编译生成比特流文件,最后将设计部署到硬件上运行。编译的特点在于并行执行能力、定制化硬件实现以及复杂的时钟管理。通过LabVIEW的FPGA模块和NI硬件,可以快速完成开发和部署,尤其适用于复杂控制与高性能数据处理系统。 1. FPG

FPGA开发:条件语句 × 循环语句

条件语句 if_else语句 if_else语句,用来判断是否满足所给定的条件,根据判断的结果(真或假)决定执行给出的两种操作之一。 if(表达式)语句; 例如: if(a>b) out1=int1; if(表达式)         语句1; else         语句2; 例如: if(a>b)out1=int1;elseout1=int2; if(表达式1) 语句1; els

FPGA开发:模块 × 实例化

模块的结构 对于C语言,其基本单元为函数。与此类似,Verilog的基本设计单元称之为"模块"(block)。对于整个项目的设计思想就是模块套模块。 一个模块由两个部分组成:一部分描述接口,一部分描述逻辑功能。 每个Verilog模块包含4个部分:端口定义、IO说明、内部信号声明、功能定义。且位于module和endmodule之间,如下: module block(a,b,c);inpu

LabVIEW环境中等待FPGA模块初始化完成

这个程序使用的是LabVIEW环境中的FPGA模块和I/O模块初始化功能,主要实现等待FAM(Field-Programmable Gate Array Module,FPGA模块)的初始化完成,并处理初始化过程中的错误。让我们逐步分析各部分的功能: 1. Wait for FAM Initialization框架 此程序框架用于等待I/O模块成功初始化。如果在5秒钟内模块没有完成配

FPGA随记——小说 可综合和不可综合

当然我在网络上找到了些可综合和不可综合的解释 感觉也很有参考价值: https://wenda.so.com/q/1378362174074040 综合就是把你写的rtl代码转换成对应的实际电路。 比如你写代码assign a=b&c; EDA综合工具就会去元件库里拿一个二输入与门出来,然后输入端分别接上b和c,输出端接上a 假如你写了很多这样的语句 assign a=b&c; assig

Xilinx系FPGA学习笔记(五)ROM的IP核学习

系列文章目录 文章目录 系列文章目录前言ROM IP分布式ROM生成ROM配置创建COE文件 块ROM生成如何快速生成Example Design 两种ROM对比 前言 最近在学习小梅哥的xilinx型FPGA开发板,一边学习一边记录,简化整理一下笔记 ROM IP 在 Memories &Storage Elements 下可以看到有两个与 ROM 相关的

基于FPGA的开源项目:FOC/SHA/USB/JPEG等

文章目录 [1. USB 1.1控制器](https://github.com/WangXuan95/FPGA-USB-Device)[2. FOC控制算法](https://github.com/WangXuan95/FPGA-FOC)[3. BSV高级硬件描述语言入门指南](https://github.com/WangXuan95/BSV_Tutorial_cn)[4. 基于XDMA的

LCD彩条显示——FPGA学习笔记10

部分素材来自原子哥 一、LCD简介         基本原理:在两块平行玻璃板中填充液晶材料,通过电场控制液晶分子旋转从而达到透光和遮光的目的。

android sdk 设置

android sdk 设置 http://www.androiddevtools.cn/