Altera OpenCL SDK与Xilinx SDAccel的使用对比

简介:

出于工作需求,申请了这两家的高级语言综合工具,对典型算法进行了实现和评估(数据暂时保密)。

简要谈谈使用体验。


1. Altera OpenCL SDK

首先需要安装Quartus(13.1版本以上)和配套的SoC EDS,分别申请两个license,一个用于OpenCL SDK,一个用于SoCEDS,缺一不可。

然后需要有实现平台,我用的是DE1-SoC开发板。该平台提供了Open CL BSP,用给出的examples改改就能实现自己的算法。

SoCEDS用来编译Host代码,这里是ARM;

Open CLSDK用来编译device代码,生成.aocx二进制文件,运行时需要借助ARM对FPGA进行配置。

开发周期较长的是编译Open CL工程,在我的笔记本(CPU 酷睿i5-4300,8GB内存)上大约需要40min。

优化Open CL可以通过编译选项、编译指导语句#pragma进行。

Open CL BSP自带的硬件工程可以用Quartus打开查看,但里面的Open CL相关逻辑是加密的,无法修改。

Open CL SDK不带图形界面,只能在命令行下运行,自动调用quartus_map, quartus_fit, quartus_sta等工具。


2. Xilinx SDAccel

前面文章介绍过Xilinx Vivado和Vivado HLS工具。按照我的猜想,SDAccel只是一层包装,里面内容还是HLS。果然如此。

软件安装比较省事,只申请SDAccel license就能使用所有Xilinx软件功能。这点比Altera做得人性化。

用过HLS工具的童鞋都知道,这玩意开发起来飞快,但其实只完成了10%进度,麻烦事在后头呢,系统集成会花掉剩下90%的时间。

SDAccel就是这样一个用于开发完整项目的工具。

利用Open CL编写的代码会先转化为HLS工程,其优化策略也都一一映射为HLS的优化,所以前面学过HLS的童鞋可以很容易转到SDAccel上来。

最重要的步骤都有工具自动完成。只需build_system, package_system,等上几十分钟就能得到一个可直接运行的安装包。

SDAccel不需要你真的有一块开发板,它可以直接用CPU仿真,便于调试。

SDAccel既能使用图形界面开发(类似HLS),又能在命令行执行。上传一张谍照。



小结

使用OpenCL的一大优势就是,只需将原来CPU、GPU上的C、C++、CUDA代码做些许改动就能运行在FPGA上。

两种工具都带来了一定开发上的便利,但真想用好这些工具,仍然需要对计算架构、算法本身有深入的理解。

目录
相关文章
|
消息中间件 存储 网络协议
ZMQ/ZeroMQ简介
ZMQ/ZeroMQ简介
|
人工智能 弹性计算 自动驾驶
阿里云张献涛:云原生计算基础设施助力汽车行业数字化升级
汽车行业在变化中积极拥抱数字化,阿里云帮助众多的汽车企业实现数字化升级,为汽车企业的电动化、数字化和智能化全面提速提供助力。2023年阿里云云峰会北京站《云上智能汽车》论坛中,阿里云智能基础产品部副总裁、阿里云智能弹性计算&无影产品线总经理张献涛,发表了《云原生计算基础设施助力汽车行业数字化升级》的主题演讲。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
焊接情况检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含约1000张真实工业焊接图像,标注3类(不良/良好焊缝、缺陷),采用YOLO格式,已划分训练/验证/测试集,适配YOLO等主流检测模型,助力焊接缺陷智能识别与工业质检落地。(239字)
167 5
|
存储 算法 调度
云计算环境下的性能优化实践
云计算环境下的性能优化实践
|
缓存 Java Nacos
nacos服务注册问题之容器报错如何解决
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
966 99
|
存储 运维 监控
实战:使用Spring Boot Admin实现运维监控平台
我们知道,使用Actuator可以收集应用系统的健康状态、内存、线程、堆栈、配置等信息,比较全面地监控了Spring Boot应用的整个生命周期。但是还有一个问题:如何呈现这些采集到的应用监控数据、性能数据呢?在这样的背景下,就诞生了另一个开源软件Spring Boot Admin。下面就来介绍什么是Spring Boot Admin以及如何使用Spring Boot Admin搭建完整的运维监控平台。
132624 3
实战:使用Spring Boot Admin实现运维监控平台
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
4741 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
资源调度 Python
标准/正态分布(python实现)
标准/正态分布(python实现)
1301 0
|
数据中心
双绞线电缆带宽和频率范围详解
【10月更文挑战第14天】
2073 1
|
编解码 小程序 前端开发
在小程序中实现自适应布局或响应式设计
在小程序中实现自适应布局或响应式设计