opencl 开源实现可以实现选择CPU的几个核来运行吗

OpenCL用以多核CPU运算 - 高性能计算当前位置:& &&&OpenCL用以多核CPU运算OpenCL用以多核CPU运算&&网友分享于:&&浏览:10次OpenCL用于多核CPU运算这两天把OpenCL用在了多核cpu上,我用的i5-3470,开始跑了下nvidia提供的opencl样例程序“中值滤波”,我把代码更改了下,用i5的多核cpu跑了起来,测了一下,滤波一次,用cpu单核单线程串行运算时2.3秒滤波一次,用opencl给多核cpu进行并行计算,0.16秒滤波一次。i5-3470只有4核4线程啊。。。如何得到14倍左右的性能提升的?算法我也比较过代码了,基本上是一样的,只是一个写成了并行的kernel,一个是串行的for循环,没有相差太多
望高手能分析下原因,拯救我一下,寝食难安啊,万分感谢------解决方案--------------------那就可能是测时代码有问题。上代码。------解决方案--------------------引用:引用:引用:这两天把OpenCL用在了多核cpu上,我用的i5-3470,开始跑了下nvidia提供的opencl样例程序“中值滤波”,我把代码更改了下,用i5的多核cpu跑了起来,测了一下,滤波一次,用cpu单核单线程串行运算时2.3秒滤波一次,用opencl给多核cpu进行并行计算,0.16秒滤波……
你说的有道理。
我觉得这可能是由于不同情况下调用开销的问题,CPU情况下,有很多逻辑运算单元参与循环操作,opencl情况下,可能有些逻辑工作已经蕴涵于kernel的设计之中。
另外,&opencl在cpu上实现时,还会精心处理关于内存的使用,以减少内存冲突的几率。
以上只是我的猜测,具体可以参见《Heterogeneous&computing&with&OpenCl》第六章关于opencl在cpu上的实现部分。
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有OpenCL(13)
在多核上运行一个单独的work-group会导致cache共享问题。 为缓解这些问题,OpenCL线程轮流运行同一个work-group内的每一个work-item, 当这个work-group内所有work-item都运行完成后, 在运行同一个工作队列中的下一个work-group。 因此,同一个work-group内的线程是没有并行性的, 如果可能的话,多个操作系统线程将允许多个work-group并行执行。
与CPU的差异主要在以下几点:
1. 宽单指令多数据(SIMD)的执行:多个执行单元在不同的数据上执行相同的命令。
2. 大量线程:支持大量的并发线程上下文。
3. 硬件scratchpad内存:程序员可以完全控制的物理缓存。
4. 硬件同步支持: 支持并发硬件线程间的细微粒通信。
5. 硬件管理任务及调度: 硬件负责管理工作队列和负载平衡。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:698847次
积分:8243
积分:8243
排名:第1990名
原创:145篇
转载:305篇
评论:31条
(2)(1)(1)(2)(3)(3)(1)(1)(3)(1)(1)(1)(5)(3)(3)(1)(3)(2)(5)(5)(1)(1)(4)(1)(4)(2)(2)(16)(5)(11)(3)(5)(2)(3)(3)(2)(3)(5)(10)(16)(21)(12)(18)(17)(4)(2)(13)(14)(4)(2)(4)(5)(12)(56)(26)(9)(18)(7)(1)(3)(6)(9)(17)(17)(12)基于OpenCL的FPGA设计优化方法研究
来源:电子技术应用2014年第1期
作者:范兴山,彭
军,黄乐天
摘& 要: 因其强大的运算能力成为了众多高性能应用的最佳选择,但其传统的开发方法存在门槛高、周期长等众多不足。作为跨平台的开发语言,为FPGA提供了一种全新的开发方法。此方法开发周期短、抽象层次高、可移植性强,弥补了传统开发方式的不足。介绍了OpenCL开发FPGA的相关优化方法,以和为例,深入分析了各种优化方法的优缺点及适用情况。
关键词: FPGA;OpenCL;矩阵乘法;QR分解
&&& FPGA作为未来数字电路系统的三大基石之一,是目前硬件设计方法的研究热点。与传统的电路设计方法相比,FPGA具有功能强、周期短、投资小、开发工具智能化等特点。随着电子工艺的不断改进,新一代的FPGA甚至集成了CPU和DSP内核,在一片FPGA上进行软硬件协同设计,为实现片上可编程系统(SoPC)提供了强大的硬件支持,这使得FPGA成为许多高性能应用的最佳选择。FPGA产品的应用领域已经从相对较窄的通信基础设备领域迅速扩张到消费电子、汽车电子、工业控制、测试测量等领域。
&& &一般来讲,要在FPGA设计中实现较高的性能,除了要求设计者精通HDL语言,还需熟知FPGA的内部结构,具备足够的数字电路知识。这种方法直接面向硬件,抽象层次较低,抬高了FPGA开发的准入门槛,还严重降低了FPGA的开发效率。
&& &OpenCL作为跨平台的开发语言,为上述问题提供了一套可选择的解决方案。OpenCL在传统的C语言基础上进行了扩展,具备较高的抽象层次和可移植性,开发者即使不了解硬件电路和设备的底层细节,也可以开发出高性能的FPGA应用程序。这种开发方法可以减少硬件开发时间,把更多的时间用于算法优化,提高FPGA的开发效率。
&& &目前,绝大部分OpenCL开发都是基于CPU和GPU。由于FPGA与GPU/CPU结构上的差异,OpenCL在GPU/CPU上的开发方法并不完全适用于FPGA,FPGA的OpenCL设计方法学尚存在较大的改进空间。针对以上问题,本文以矩阵乘法和QR分解为例,根据FPGA的特点制定并实现了多种优化方案,分析了各种优化方案的优缺点及适用情况,为后续FPGA的OpenCL开发提供参考。
1 相关工作
&& &自2008年苹果开发者大会(WWDC)提出OpenCL以来,已有不少的机构和学者进行OpenCL的开发研究,并取得了显著的成果,目前大部分的OpenCL研究都是基于GPU平台。参考文献[1]就矩阵乘法分别在多核CPU、AMD GPU、NVIDIA GPU上进行了实现和优化,并对比了各平台的性能。
&& &2013年,Altera和Xilinx两大FPGA主流厂商相继推出了针对FPGA的OpenCL开发套件,但目前相关研究成果较少,只能在IEEE平台上搜索到寥寥几篇论文。参考文献[2-4]中介绍了在FPGA上进行OpenCL开发的原理及相关工具。参考文献[5]使用OpenCL在Altera的FPGA上实现了一个文档筛选算法,与CPU、GPU相比分别取得了5.5、5.25的加速比,但没有针对FPGA做深入的优化工作,也未详细分析如何提升FPGA运算性能。参考文献[6]分别在CPU、GPU和FPGA 3个平台上实现了不规则图像和视频的压缩算法,FPGA平台与多核CPU、GPU相比分别达到了3、114的加速比。作者只是简单地将GPU上的应用移植到了FPGA上,而未做进一步的优化。参考文献[7]对多核CPU、GPU、FPGA平台在性能、设计理论、平台体系结构等方面进行了对比,分别用CUDA、OpenCL、VHDL 3种开发语言在多种平台下实现了Quantum Monte Carto程序。通过对比发现,OpenCL可以很方便地在多核CPU、GPU和FPGA之间进行移植。
&& &目前介绍在FPGA上进行OpenCL开发的相关文献还非常稀少,大多数文献都只是针对FPGA的OpenCL开发进行理论介绍,即使有少数几篇进行了实际应用开发,也仅仅停留在实现阶段,并没有针对FPGA的硬件结构详细分析其OpenCL优化方法,这正是本文的研究重点。
2 算法研究
&& &目前基于FPGA的OpenCL开发都是移植了GPU上的应用,例如图像处理、视频压缩/解压缩等。然而通信、雷达、汽车电子、工业控制才是FPGA的传统领域,尤其在通信领域中FPGA应用更为广泛。但当前还没有相关文献把OpenCL开发方法用于通信领域。
&& &矩阵运算是通信领域中的基础运算,尤其是矩阵乘法和QR分解,是工程应用中最常见的矩阵运算,在信号检测与估计、数字信号处理等领域中应用广泛。因此,本文以矩阵乘法和QR分解为例,对FPGA的OpenCL实现及优化进行相关研究。
&&& initial Q=E, R=A
&& &barrier
&& &for(int j=0; j&=Width-2; j++)
&& &&&& initial H
&& &&&& barrier
&& &&&& calculate the
&& &&&& generate H
&& &&&& barrier
&& &&&& compute Q = Q *
&& &&&& barrier
&& &&&& compute R = H * R
&& &&&& barrier
&& &由于Householder变换法的特性,本文只将部分优化手段应用于QR分解。主要探索item复制和向量化两种方法的性能。本例中的QR分解内部具有较多的数据同步点,且item之间的数据依赖性非常强,即逻辑控制较多,因而向量化和item复制并不是QR分解的理想优化手段。
4 结果分析
&& &测试数据采用随机函数生成,并将FPGA的运算结果与C函数的运算结果相比较,判断结果是否正确。本文采用多种优化方法实现矩阵乘法,实验结果如表1所示。
&&& 对于数据存取优化(如表1所示),通过设置合适的workgroup大小,减少item重复存取数据的次数,即可有效地提高性能。
&& &对于循环展开优化,运行时间与循环展开次数是呈反比的。循环展开实质就是采用空间换取时间,展开次数越多,逻辑面积越大,执行时间则越短。
&& &对于向量化1、2、4、8次,可以看出其运行时间基本是与向量化次数呈反比的。向量化复制了kernel的运算单元,使得item可以同时存取并处理多个数据,提高了kernel性能。然而,向量化16次的性能更差,这主要是受到了硬件资源限制。DDR带宽和FPGA逻辑资源都已超出DE4的最高峰值,造成了性能的急剧下降。
&& &随着item复制次数的增加,性能有所提高,这也是使用空间换取时间的方法。但是其性能并不像向量化那样呈线性增长,这是因为item复制是将整个kernel功能单元进行复制,除了需要较多的逻辑资源外,全局带宽的需求也成倍增长,导致全局带宽超过DDR的最大带宽,使得性能增长曲线是非线性的。
&& &组合优化同时使用向量化和item复制,可最大限度地发挥这两种方法的优点,实现性能提升,但效果还不够显著,这也是受到了DDR带宽的限制。
&& &矩阵乘法是典型的大数据运算,有着大量的数据存取操作,内部控制逻辑较少,这类运算需要较大的全局带宽和较强的浮点运算能力。从表1中可以看到性能提升的瓶颈在于全局带宽,如何解决这一问题是优化的重点。可以使用以下两种方法降低kernel所需的全局带宽:(1)进行数据存取优化,减少kernel的重复存取操作,减少单个item实际使用的带宽;(2)向量化,提高全局带宽的有效利用率。从表1中也可以看出,这两种方法确实取得了非常好的效果。另外,还可以通过提升硬件的全局带宽来满足kernel对带宽的需求。
&& &在QR分解中,主要采用了向量化和item复制两种方法,如表2所示。
&&& 由表2可见,不管是向量化还是item复制,性能均没有得到有效的提升,甚至有一定的恶化,其中item复制带来的性能恶化更严重,这主要是因为QR分解的逻辑复杂度较大。在QR分解中,数据量并不大,所需的全局带宽较小,除了向量化8次外,其余的优化所需的全局带宽均没有超过DE4的限制。但是其中的运算过程较为复杂,可以看到其逻辑复杂度为5.5左右,限制了kernel性能的提高。
&& &对于此类逻辑复杂度较大的应用,上述几种优化手段均不能得到非常好的效果。此时应以算法优化为主,以降低kernel内部的逻辑复杂度。
&& &本文以矩阵乘法和QR分解为例,在FPGA上分别进行了实现和优化,比较分析了各种优化方法的优缺点及适用范围。目前,FPGA的OpenCL开发刚刚兴起,还有诸多不足,从实验中也可以看出,许多优化方法都受到了FPGA结构、算法并行性等多方面的限制,还需要从设计方法、FPGA结构优化、算法优化等多个方面进一步探讨如何更合理地运用OpenCL开发FPGA。这有赖于FPGA厂商进一步完善工具和开发流程,也有赖于广大科研工作者、应用工程师的配合和努力。
[1] SEO S,JO G,LEE J.Performance tuning of matrix multiplication in OpenCL on different GPUs and CPUs[C].High Performance Computing,Networking,Storage and Analysis,5.
[2] CZAJKOWSKI T S.Form OpenCL to high-performance hardware on FPGAs[C].Field Programmable Logic and Applications(FPL),2012 22nd International Conference,4.
[3] Ma Sen,Huang Miaoqing,ANDREWS D.Developing application-specific multiprocessor platforms on FPGAs[C].Reconfigurable Computing and FPGAs(ReConFig),2012 International Conference,.
[4] ECONOMAKOS G.ESL as a Gateway from OpenCL to FPGAs:basic ideas and methodology evaluation[C]. Informatics(PCI),2012 16th Panhellenic Conference,.
[5] CHEN D,SINGH D.Invited paper:using OpenCL to evaluate the efficiency of CPUS, GPUS and FPGAS for information filtering[C].Field Programmable Logic and Applications(FPL),2012 22nd International Conference,.
[6] CHEN D,SINGH D.Fractal video compression in OpenCL:an evaluation of CPUs,GPUs,and FPGAs as acceleration platforms[C].Design Automation Conference(ASP-DAC),2013 18th Asia and South Pacific,4.
[7] paring hardware accelerators in scientific applications:a case study[J].Parallel and Distributed Systems,IEEE Transactions,):58-68.
[8] 张贤达.矩阵分析与应用[M].北京:清华大学出版社,2004.
[9] 李刚强,田斌,易克初.FPGA设计中关键问题的研究[J].电子技术应用,):68-71.
[10] 张国礼,王建业,肖宇.浮点矩阵相乘IP核并行改进的设计与实现[J].电子技术应用,):43-46.
继续阅读>>
热门关键词RunWithAffinity_选择使用单核或双核CPU来运行指定程序 V0.1 免费版 - 偶要下载站
偶要下载站 / 绿色软件下载联盟站!为大家提供一手绿色软件下载服务!
当前位置: &
> RunWithAffinity_选择使用单核或双核CPU来运行指定程序 V0.1 免费版
RunWithAffinity_选择使用单核或双核CPU来运行指定程序 V0.1 免费版
先问个问题您的CPU是双核的吗?一般情况下运行每个程序默认都是双核心同时运行同一程序,除非您手动指定,也许您不会手动指定,在“任务管理器”里设置呀,很隐蔽,还比较麻烦。
有了RunWithAffinity这款软件,使用它您就可以选择使用单核或双核CPU来运行指定程序,非常不错,RunWithAffinity 的功能比较冷门,能让你的程序选择性的使用双核 CPU 的某一个核心或者全部,并且可以创建快捷方式以便以后再次使用。
软件截图:
Starglow.aex是After Effects这款图像处理软件的一个星光插件,这款插件是根据源图像的高光部分建立星光闪耀特效的插件。这跨插件支持AE的...
这款软件也是很不错的,和本软件是同类也有很多人下载,您可以试一下它!
下载地址:
RunWithAffinity_选择使用单核或双核CPU来运行指定程序 V0.1 免费版
想下载到手机上? 鼠标移动到左边二维码上扫一扫即可!
1. 如果发现下载地址不能下载,请多试几个下载地址!如安装时出现问题,请评论中留言!可以QQ联系告知我详细信息!
2. 为了保证您享受到最快的下载速度,推荐安装迅雷下载工具。如果下载后出现不能解压,请安装winrar等解压缩包软件!
3. 如果下载的压缩包文件需要解压密码,我们的解压密码就是:
4. 本站不提供该下载软件的破解版,注册机,注册码,序列号,注册密钥,激活码,等相关信息下载以及咨询!
热门排行榜
系统其它最新更新
热门关键字
偶要下载站集绿色软件下载、手机软件与游戏、各种素材、字体下载于一身的联盟网站,致力打造一个纯绿色软件下载乐园。
本站为非营利性网站,中国绿色联盟提供的资源均来自网络收集整理,下载个人纯属学习交流之用,如有侵犯您的版权请与我联系,我们会马上改正请在下载24小时内删除!
Copyright (C)
偶要下载() All Rights Reserved. 鲁ICP备号2013年5月 高性能开发大版内专家分月排行榜第二2013年4月 高性能开发大版内专家分月排行榜第二
2013年5月 高性能开发大版内专家分月排行榜第二2013年4月 高性能开发大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 java设备运行状态实现 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信