为什么在FPGA上使用OpenCL
推荐于2018-05-04 · 知道合伙人软件行家
关注
展开全部
对异构计算的需求导致出现了新程序语言,推动新硬件的开发。一个例子就是苹果公司首创的OpenCL。OpenCL是一种编程框架,可在异构平台(包括CPU、GPU、DSP、FPGA和其他类型的处理器)上执行。OpenCL包括一种开发核心程序(在硬件器件上执行的功能)以及定义和控制各种平台的应用程序接口(API)的语言。OpenCL支持基于任务的并行计算以及基于数据的并行计算。
在过去十年左右,处理器硬件频率遇到了所谓的功率墙,使得处理器无法进一步提高频率。近几年中,您最后一次听说英特尔等CPU制造商以时钟速度宣传处理器性能是什么时候?相反,CPU制造商一直都在忙着往CPU中添加更多的处理内核,增强其指令集,保证系统可以同时执行多条指令,提高程序执行速度,而无需提高时钟频率。软件公司也一直忙于开发一种通过计算机代码组(即“线程”)以真正的并行方式执行程序的软件。在并行计算中,线程是在单独的处理器内核,而不是以前的伪并行处理器(线程不是在单独的处理器内核上执行,而是被操作系统进行了时间分割,表面上看是并行运行的)上执行的。
FPGA在本质上是并行的,因此,与OpenCL并行计算能力完全吻合。FPGA提供了一种流水线并行方法,可通过在任务中应用推拉配置,利用先前任务中的不同数据(无论是否存在主机交互)完成任务。这是典型数据级并行或任务并行的又一选择。OpenCL支持您在熟悉的C程序语言环境中,利用OpenCL提供的多种功能来编写代码。您无需学习FPGA设计人员的底层HDL编码工作,即可将这些内核程序发送至FPGA。通常,使用OpenCL编写FPGA代码,可以为软件开发人员和系统设计人员带来一些优势。
✓ 简单方便的进行开发:大多数软件开发人员都对C编程语言十分熟悉,而对低层HDL语言并不十分了解。OpenCL使您能够在更高层面上编程,让更多的软件开发人员都能采用您的系统。
✓ 代码分析:您可以使用OpenCL分析代码,确定性能关键的部分,通过FPGA中的内核进行硬件加速。
✓ 性能:每瓦性能指标是系统设计的最终目标。使用FPGA,您可以在高能效解决方案中均衡的实现高性能。
✓ 效率:FPGA是一种精细粒度并行体系结构,使用OpenCL,只生成所需要的逻辑,功耗是其他硬件方案的五分之一。
✓ 异构系统:使用OpenCL,可以针对FPGA、CPU、GPU和DSP无缝开发内核程序,从而实现真正的异构系统设计。
✓ 代码重用:软件开发的“圣杯”是实现代码重用。通常,代码重用是软件开发人员和系统设计人员难以企及的目标。OpenCL内核支持代码移植,可用于不同项目、不同系列、不同代的FPGA,延长代码的生命周期。
目前,OpenCL是由技术联盟科纳斯组织负责开发和维护的。大多数FPGA制造商都可以为FPGA的OpenCL开发提供软件开发套件(SDK)。
在过去十年左右,处理器硬件频率遇到了所谓的功率墙,使得处理器无法进一步提高频率。近几年中,您最后一次听说英特尔等CPU制造商以时钟速度宣传处理器性能是什么时候?相反,CPU制造商一直都在忙着往CPU中添加更多的处理内核,增强其指令集,保证系统可以同时执行多条指令,提高程序执行速度,而无需提高时钟频率。软件公司也一直忙于开发一种通过计算机代码组(即“线程”)以真正的并行方式执行程序的软件。在并行计算中,线程是在单独的处理器内核,而不是以前的伪并行处理器(线程不是在单独的处理器内核上执行,而是被操作系统进行了时间分割,表面上看是并行运行的)上执行的。
FPGA在本质上是并行的,因此,与OpenCL并行计算能力完全吻合。FPGA提供了一种流水线并行方法,可通过在任务中应用推拉配置,利用先前任务中的不同数据(无论是否存在主机交互)完成任务。这是典型数据级并行或任务并行的又一选择。OpenCL支持您在熟悉的C程序语言环境中,利用OpenCL提供的多种功能来编写代码。您无需学习FPGA设计人员的底层HDL编码工作,即可将这些内核程序发送至FPGA。通常,使用OpenCL编写FPGA代码,可以为软件开发人员和系统设计人员带来一些优势。
✓ 简单方便的进行开发:大多数软件开发人员都对C编程语言十分熟悉,而对低层HDL语言并不十分了解。OpenCL使您能够在更高层面上编程,让更多的软件开发人员都能采用您的系统。
✓ 代码分析:您可以使用OpenCL分析代码,确定性能关键的部分,通过FPGA中的内核进行硬件加速。
✓ 性能:每瓦性能指标是系统设计的最终目标。使用FPGA,您可以在高能效解决方案中均衡的实现高性能。
✓ 效率:FPGA是一种精细粒度并行体系结构,使用OpenCL,只生成所需要的逻辑,功耗是其他硬件方案的五分之一。
✓ 异构系统:使用OpenCL,可以针对FPGA、CPU、GPU和DSP无缝开发内核程序,从而实现真正的异构系统设计。
✓ 代码重用:软件开发的“圣杯”是实现代码重用。通常,代码重用是软件开发人员和系统设计人员难以企及的目标。OpenCL内核支持代码移植,可用于不同项目、不同系列、不同代的FPGA,延长代码的生命周期。
目前,OpenCL是由技术联盟科纳斯组织负责开发和维护的。大多数FPGA制造商都可以为FPGA的OpenCL开发提供软件开发套件(SDK)。
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询