OpenCL学习笔记(一):摩尔定律,异构计算与OpenCL初印象
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。
技术交流QQ群:433250724,欢迎对算法、技术、应用感兴趣的同学加入。
关于摩尔定律:
摩尔定律1965年提出,晶体管密度是按照每年翻倍发展的,之后的趋势也是这样——每一代芯片的的时钟频率提高50%,而同时工艺节点减小了0.3,功耗密度翻倍(保持功耗相同的情况下,面积0.7*0.7=0.49,因此提高频率使得性能提升了);而在2000年中期之后,出现了物理尺寸更小的器件,意味着,我们没有办法保持功耗密度不变,而同时提高频率,结果我们看到自此之后,时钟频率并没有显著提高,需要通过并行来提高性能,所以多核CPU流行起来。即使是最基本的处理器,超标量和无序指令执行等高级体系结构都成为基本配置,软件和其他开发工具也都应用于开发同构和分布式系统。
异构计算:
OpenCL (Open Computing Language,开放计算语言) 是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL提供了基于任务分割和数据分割的并行计算机制。
对CPU和GPU来说,并行线程可以在不同的内核中执行,而FPGA能够提供不同的策略。可以把内核功能传送到专用深度流水线硬件电路中,它使用了流水线并行处理概念,在本质上就是多线程的。这些流水线的每一条都可以复制多次,与一条流水线相比,提供更强的并行处理功能。如图5所示,可以通过级联功能单元实现矢量加法内核,在OpenCL描述中实现每一操作,进行复制以满足实际应用的吞吐量和延时要求。
虽然所显示的只是一个简单表征,但每个功能单元都可以是深度流水线,以保证最终电路的工作频率足够高。此外,编译器可以建立电路来管理与外部系统的通信。在这个例子中,DDRx控制器和PHY连接至内核,使其能够高效访问片外阵列。类似的,PCIe IP自动例化,连接至内核,这样,x86主机能够通过OpenCLAPI与FPGA加速器进行通信。
这一方法可以与传统基于FPGA的设计方法相比。这里,设计人员的主要工作是对硬件按照每个周期进行描述,用于实现其算法。传统流程涉及到建立数据通路,如下图所示,通过状态机来控制这些数据通路,使用系统级工具(例如,SOPCBuilder、PlatformStudio)连接至底层IP内核,由于必须要满足外部接口带来的约束,因此,需要处理时序收敛问题。OpenCL编译器的目的是帮助设计人员自动完成所有这些步骤,使他们能够集中精力定义算法,而不是重点关注乏味的硬件设计。以这种方式进行设计,设计人员很容易移植到新FPGA,性能更好,功能更强,这是因为OpenCL编译器将相同的高级描述转换为流水线,从而发挥了FPGA器件的优势。
案例:MonteCarloBlack-Scholes方法
在金融市场上最重要的一个基准测试方法是通过Monte Carlo Black-Scholes方法计算期权价格。该方法基于对底层股票价格的随机仿真,以及数百万不同路径上的平均预期收益。图8以图形化的方式显示了这类仿真的一个例子。
图9显示了进行这一计算的高级算法结构。首先采用Mersenne旋转随机数发生器来创建均匀分布的数值。将随机数序列送入逆正态累积密度函数,以产生正态分布序列。然后,使用几何布朗运动,这些随机数用于仿真股票价格的变化。在每一仿真通路的最后,记录看涨期权的收益,进行平均来产生收益预期值。整个算法通过大约300行的OpenCL代码来实现,可以从FPGA移植到CPU、GPU。
利用针对Altera FPGA开发的OpenCL工作台,可以产生很好的基准测试结果,如表1所示。与相应的GPU相比,面向Stratix IV FPGA EP4SGX530的OpenCL工作台在吞吐量上超过了CPU和GPU。与相应的GPU相比,在执行相同的代码时,FPGA解决方案不但提高了吞吐量,保守估计,功耗也只有其五分之一。速率和高功效相结合,降低了大计算量应用的功耗需求。
(这个数据有点老了,现在的FPGA和GPU在浮点处理峰值上都远远大于表中数据,GPU的浮点运算性能绝对是超过FPGA的,因为但就是为这个而设计,但是实际算法还受很多其他因素影响。实际算法的性能就不一定了。另外在功率上FPGA目前还是有一定的优势的。)
结论
利用FPGA上的OpenCL标准,与目前的硬件体系结构(CPU、GPU,等)相比,能够大幅度提高性能,同时降低了功耗。此外,与使用Verilog或者VHDL等底层硬件描述语言(HDL)的传统FPGA开发方法相比,使用OpenCL标准、基于FPGA的混合系统(CPU+FPGA)具有明显的产品及时面市优势。
参考资料:
[1]支持opencl的设备,https://www.khronos.org/conformance/adopters/conformant-products#opencl
[2]http://articles.csdn.net/AMDyigoukaifajulebu/ziyuanxiazaiyemian_gongju/2012/0906/2809633.html
[3]ALTERA opencl官网,https://www.altera.com.cn/products/design-software/embedded-software-developers/opencl/overview.html
OpenCL学习笔记(一):摩尔定律,异构计算与OpenCL初印象相关推荐
- OpenCL学习笔记(三):OpenCL安装,编程简介与helloworld
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. OpenCL安装 安装我不打算 ...
- OpenCL学习笔记——整体流程(向量相加)
OpenCL学习笔记--整体流程 OpenCL可以实现混合设备的并行计算,这些设备包括CPU,GPU,以及其他处理器,比如Cell处理器,DSP等.使用OpenCL编程,可以实现可以值得并行加速代码. ...
- kubernetes学习笔记 (二):k8s初体验
本文采用本地k8s v1.10.3版本开发,如果还没有搭建可参照 kubernetes学习笔记 (一):搭建本地k8s开发环境进行搭建 搭建本地Docker镜像仓库 docker pull docke ...
- OpenCL学习笔记一
什么是OpenCL 百度百科飞机票✈ OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成.OpenCL由一门用于编写kernels (在OpenCL设备上运 ...
- mysql初体验学习笔记_【MySQL】mycli初体验
早就听说mycli很好用,今天打算在本地测试机上装一下体验一把. 安装方法很是简单: 一.安装依赖: yum install python-pip python-devel 二.安装mycli pip ...
- 青软实训.NET学习笔记(4)--WinForm技术初接触
1.以下代码表示的是一个最简单的Windows Forms应用程序.当Visual Studio 2010发现一个扩展了System.Windows.Forms.Form的类时,将尝试打开相关的GUI ...
- 【Unity3D游戏开发学习笔记】(一)Unity3D初认识
一.什么是Unity3D Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合 ...
- C语言学习笔记—P2(<C语言初阶>+<字符串+转义字符+注释>+图解+题例)
目录 1.变量的使用 2. 变量的作用域和生命周期 3. 常量 4. 字符串 5. 注释 后记:●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教! ...
- C语言学习笔记—P1(<C语言初阶>+<数据类型>+图解+题例)
目录 1. 什么是C语言? 2. 第一个C语言程序 3. 数据类型 3.1 变量.常量 3.2 定义变量的方法 3.3变量的分类 后记:●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇 ...
最新文章
- 小猿圈Linux学习-Linux种搜索的命令
- 张一鸣、王欣、罗永浩三家对垒微信,张小龙如何应对?
- Thinkphp怎样修改模板标签定界符
- java之spring mvc之初始spring mvc
- 谈谈NLP下一个主战场:万亿参数的预训练模型!
- oracle 结果缓存,Result cache结果缓存
- MinIO多租户(Multi-tenant)部署指南
- Windows Server 2008设置远程桌面连接数
- ubuntu搭建nginx服务器,并测试axel与wget的下载速度
- [App Store Connect帮助]二、 添加、编辑和删除用户(5)创建一个沙盒测试员帐户...
- f分布表完整图a=0.01_Matlab中的数据分析之概率分布与检验实例讲解
- jQuery EasyUI快速入门01
- 批处理 使用Win7照片查看器
- 【opencv】凹点切分,种子计数,细胞计数前提 17/7/25更新
- 为什么网站打得开,却ping不通, 网站却打得开
- Windows 10调整色温显示器
- 国产系统银河麒麟(龙芯MIPS)远程访问自研windows程序
- 数据挖掘实战系列 之 Kaggle 练习项目快速入门
- 分布式资源管理与任务调度框架Yarn
- 图像处理之图像去雾中文综述性论文