MATLAB 编程 GPU

MATLAB 编程 GPU

ID:41037230

大小:779.50 KB

页数:7页

时间:2019-08-14

MATLAB 编程 GPU_第1页
MATLAB 编程 GPU_第2页
MATLAB 编程 GPU_第3页
MATLAB 编程 GPU_第4页
MATLAB 编程 GPU_第5页
资源描述:

《MATLAB 编程 GPU》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、多核机器和超线程技术,使科学家,工程师,金融分析师,以加快计算密集型应用在各种学科。今天,另一种类型的硬件承诺,甚至更高的计算性能:图形处理单元(GPU)。原本用来加速图形渲染,GPU是越来越多地应用于科学计算。与传统的CPU,其中包括不超过少数核心,GPU的整数和浮点处理器的大规模并行阵列,以及专用的,高速的内存。一个典型的GPU包含数以百计的这些较小的处理器(图1)。多内核(multiplecores)图1一个CPU系统和GPU核心的数量比较。然而,可能由GPU大大增加吞吐量是有代价的。首先,内存访问变得更容易为您的计算瓶颈。计算

2、之前,必须从CPU发送数据到GPU,然后从它事后检索。由于GPU通过PCIExpress总线连接到主机CPU,内存访问是比传统的CPU慢。这意味着,您的整体计算加速被发生在你的算法的数据传输量限制。二,在C或Fortran编程的GPU需要一个不同的心智模式和技能设置可以困难和费时的收购。此外,你必须花时间微调您的代码为您的特定的GPU来优化您的应用程序的峰值性能。本文演示功能™并行计算工具箱,使您能够运行您的MATLAB®代码在GPU上做了一些简单的改变,你的代码。我们通过这种方法解决了二阶波动方程,利用光谱法。为什么并行化波方程求解

3、呢?波动方程在工程学科,包括地震学,流体动力学,声学和电磁,来形容声,光,和流体波的广泛使用。使用光谱的方法来解决波动方程的算法是一个很好的候选人进行并行,因为它满足使用的GPU加速(见“将在GPU上的执行,加快我的申请?”)的标准:...这是大规模并行。并行快速傅立叶变换(FFT)算法的目的是“分而治之”,以便执行类似的任务是多次在不同的数据。此外,该算法需要处理线程和充足的内存带宽之间的实质性沟通。快速傅立叶逆变换(IFFT)同样可以并行运行。它是计算密集型的。该算法执行FFT和IFFTs。网格的大小(图2),包括在模拟的时间步数

4、的确切数目取决于。每一个时间步需要在不同的矩阵的两个FFT和四个IFFTs,和一个单一的计算涉及数以十万计的时间步骤。图2。上一个32×32的网格二阶波动方程(看动画)解决方案。在GPU上执行加速我的应用?一个GPU可以加速应用程序,如果符合下列条件:大规模并行计算可以分解成独立的工作单位的数百或数千。计算密集型计算上花费的时间显著超过上所花费的时间和GPU内存传输数据之和。不符合这些标准的应用,实际上可能在GPU上运行的速度比在CPU上慢。GPU计算在MATLAB继续波动方程的例子之前,让我们快速回顾一下如何使用MATLABGPU的

5、工作。FFT,IFFT和线性代数运算,包括100多个内置在MATLAB提供一个输入参数的类型GPUArray,并行计算工具箱提供一个特殊的数组类型,可直接在GPU上执行的功能。这些GPU功能的功能,换句话说,他们操作不同的参数的数据类型传递给它们的重载。例如,下面的代码使用FFT算法找到一个CPU上的伪随机数向量的离散傅立叶变换:A=rand(2^16,1);(rand:均匀分布的随机数和数组)B=fft(A);(fft2:二维快速傅里叶变换)为了在GPU上执行相同的操作,我们第一次使用gpuArray的命令从MATLAB工作空间中的

6、数据转移到设备内存。然后我们就可以运行FFT,这是对这些数据的重载函数之一:A=gpuArray(rand(2^16,1));B=fft(A);执行FFT运算GPU而不是CPU,因为它的输入(一GPUArray)在GPU上举行。结果,B,是存储在GPU上。但是,它是在MATLAB工作空间中仍然可见。运行类(B),我们可以看到,它是一个GPUArray。class(B)ans=parallel.gpu.GPUArray我们可以继续操作使用GPU功能的功能设备上的B。例如,我们的结果可视化,plot命令自动工程GPUArrays:plot

7、(B);(线性二维图像)要返回的数据传回本地MATLAB工作区,可以使用收集命令,例如C=gather(B);C是目前在MATLAB的两倍,并可以由MATLAB函数对双打。在这个简单的例子,通过执行单一的FFT功能,保存的时间往往比载体从MATLAB工作区转移到设备存储器所花的时间少。这通常是真实的,但依赖于你的硬件和数组的大小。数据传输开销可以变得如此显著,它会降低应用程序的整体性能,特别是如果你的CPU和GPU之间反复交换数据执行相对较少的计算密集型操作。这是更有效地对数据执行几个操作,而这是在GPU上,仅在需要时将数据传回的CP

8、U。需要注意的是一样的CPU,GPU的有限的记忆。然而,CPU的不同,他们没有交换内存和磁盘的能力。因此,你必须确认你要保持在GPU上的数据不超过其内存限制,尤其是当你与大型矩阵。通过运行gpuDevice,您可以查询您

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。