[发明专利]一种提高CPU+GPU异构装置计算性能的方法有效
申请号: | 201310028325.6 | 申请日: | 2013-01-24 |
公开(公告)号: | CN103049241A | 公开(公告)日: | 2013-04-17 |
发明(设计)人: | 李清都;胡明;杨芳艳;唐宋;冯鑫;胡诗沂;徐桂兰 | 申请(专利权)人: | 重庆邮电大学 |
主分类号: | G06F7/523 | 分类号: | G06F7/523;G06F9/38;G06F17/14 |
代理公司: | 重庆华科专利事务所 50123 | 代理人: | 康海燕 |
地址: | 400065 *** | 国省代码: | 重庆;85 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 提高 cpu gpu 装置 计算 性能 方法 | ||
技术领域
本发明涉及计算机高性能计算领域,是一种提高CPU+GPU异构装置计算精度的方法。
背景技术
在数据加密解密、建筑仿真验证、科研可靠计算等领域,常常用到大规模的多精度数值计算。由于涉及的数值位数,远大于目前计算机处理器CPU硬件精度(最高只有64bit或128bit),因此需要在硬件精度的基础上进行扩展。传统的解决方案主要依靠CPU的串行处理,在计算速度方面受到处理发展的制约,有较大的局限性,已经不能满足日益增大的计算需求。
因此,利用GPU配合CPU进行大规模数据处理也逐渐出现,如:2012年5月30日授权的中国发明专利申请第200910088372.3所提出的基于GPU众核平台的矩阵并行转置方法,其基本思路是根据矩阵转置后的模型建立的索引,利用GPU多个线程并行工作,对二维矩阵每个元素同时转置,降低了传统遍历整个矩阵转置的时间。2011年9月28日授权的中国发明专利申请第201010107317.7所提出的实现GPU运算提高DR图像处理速度的方法,其基本思想是读取原始医学图像数据,用图像边缘像素对原始医学图像进行扩展和补齐,通过CUDA函数库对扩展和补齐的原始医学图像数据以及卷积核进行FFT变换和变换后矩阵乘法加速,提出了一种简易、低成本的医学影像处理方法。2012年3月21日授权的中国发明专利申请200910226769.4所提出的利用CPU和GPU协同工作对三角线性方程组求解的加速方法,技术方案是根据三角线性方程组A×X=α×B,为了提高A-1×B求解速度,将B矩阵按照切割比例K切割成B1和B2,使CPU和GPU分别并行计算A-1×B1和A-1×B2,实现CPU和GPU重叠计算,达到良好的负载平衡效果。
综上所述,CPU+GPU协作处理,可大幅度提高工作速度,是未来的计算设备的发展趋势。本专利所解决的问题是提高CPU+GPU异构装置计算精度,加速海量数据的多精度乘法运算,而这些研究目前未见到相关文献报道。
发明内容
本发明要解决的问题在于:针对现有技术平台计算速度等问题,本发明提出一种基于CPU+GPU异构装置,实现计算单元与相关存储器的合理分配与调度,解决大规模乘法计算精度和高效并行地处理最终结果的问题。
本发明解决上述技术问题的技术方案是,提出一种提高CPU+GPU异构装置计算精度的方法,发明内容如下:
CPU端接收M对N位被乘数和乘数输入并保存,M个被乘数分别标识为A1、A2……AM,M个乘数分别标识为B1、B2……BM;在CPU端控制流程包括GPU端空间分配、线程块模型设定、数据传输、启动和停止:⑴根据CPU端被乘数和乘数大小设定GPU端接收被乘数和乘数空间DA和DB;⑵根据乘法运算的个数设置线程块的个数和维数,根据被乘数和乘数位数设置线程个数和位数,在此我们设定线程块个数等于乘法运算的个数M,线程数等于被乘数和乘数位数N;⑶同时,为了提高运行速度,使用GPU端线程块的共享存储器,即在CPU端为GPU端每个线程开辟原始数据大小2倍的复数组共享存储区域;⑷CPU将所有的乘数与被乘数通过PCI总线分批异步传输至GPU全局存储器;⑸准备完成,启动GPU端,使GPU完成乘法对运算;启动GPU端后,GPU作为处理器,在GPU中,每个线程块负责一对乘法运算,同时每个线程块对单个乘法运算执行并行处理,GPU将并行处理获得的数据写回全局存储器;最后CPU端将全局存储器中的结果分批异步传输至CPU内存。因为每个线程块独立完成一个乘法运算,通过大量的线程块并行工作,就能实现大规模乘法运算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆邮电大学,未经重庆邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310028325.6/2.html,转载请声明来源钻瓜专利网。