西西河

主题:【原创】GPU作超级计算,有那么美好吗? -- Highway

共:💬48 🌺77
全看树展主题 · 分页首页 上页
/ 4
下页 末页
家园 大部分科学计算都不是简单的矩阵乘法

而且GPU计算对高精度的计算性能提升就不明显。我们主要就是用GPU做一些数据的fitting,的确极快,但是如果是其他处理,就没有优势。

编程也比较复杂(一部分原因是缺乏大量的lib支持,很多都要自己写)。

你说的这个是极端的情况,毕竟GPU拿手的就是矩阵乘法

家园 我的体会

分子动力学(应算是Physics)运算一例:

64 个 CPU ib 网络, 4.6 小时。

2 个GPU (加 24个CPU), 3.7 小时。

家园 为什么只有两个GPU

我很奇怪2个GPU,24个CPU是怎么配置的,24个CPU Core?

家园 每个节点1个GPU配12个CPU

每个节点1个GPU配12个CPU。GPU,CPU同时运算,综合其优点。

家园 如何优化代码呢?

是不是只是针对某些运算,调用GPU的接口(你们用的OpenCL还是什么?)你们用的什么样的系统,我现在做的cluster用的普通的刀片服务器,你们用的是特殊的系统吗?

家园 CUDA GPU Acceleration

我只用,不管代码或硬件,快就是好!

是只是针对某些运算,调用GPU的接口。

程序是:NAMD optimized for CUDA (NVIDIA's graphics processor programming platform) code.

To benefit from GPU acceleration you will need a CUDA build of NAMD and a recent high-end NVIDIA video card. CUDA builds will not function without a CUDA-capable GPU. You will also need to be running the NVIDIA Linux driver version 195.17 or newer (NAMD 2.7b2 released binaries are built with CUDA 2.3, but can be built with 2.2 or 3.0 as well).

家园 MD是cpu intensive的程序

你拿sequence alignment试试?

家园 GPU可以用来计算option的估价

option对运算能力的要求特别高,不上GPU不行

家园 绝大多数科学计算可以向量化

大多数现有的科学计算尽管不是简单的矩阵乘法,但绝大多数科学计算(包括许多看似只有迭代才能解决的问题)都可以向量化从而采用GPU提升几十上百倍的性能。用线性代数的方式把算法表达出来是关键问题,而不是仅仅知道迭代或者收敛就足够了。所以,要看你说的“其他处理”是什么,如果不是逻辑判断(注意,迭代本质上来说并非逻辑判断),而且数据量很大,那么就有可能向量化。GPU的本质是执行向量化算法速度极快,而不是仅仅执行矩阵乘法时才快。

在我目前所知的手段里面,连牛顿法这样的纯迭代都做到了向量化,还有许多天文领域的计数问题通过向量化之后,原先需要上千台计算机组成的集群花两个星期才能完成的计算,现在只需要一台普通笔记本电脑30秒,结合了CPU和GPU的向量化功能(目前在我的课题里面该算法还在进行研究,有可能提升到实时)。此外,向量化算法不仅仅速度和处理能力惊人,而且非常适合于目前已知的各种并行计算平台(如天河那样的多CPU多GPU超级计算机,MapReduce,MPI以及集群等),因此算法的向量化我认为是并行计算未来一段时间可能的研究方向。众多看似没有办法做性能提升的算法,通过技巧性的算法变换,是可以成为性能极高的算法的。如果不了解向量化,就不要轻言GPU这样的向量化处理芯片性能差,很多时候差的是人发明的算法。

算法的向量化从某个角度来看,是一个数学问题。很多时候看似无法用向量化方式表达的算法,从数学上通过积分变换、增加维度等方法可以达到向量化的目的。这里,虽然增加维度在传统的观念中可能将算法复杂度增加一个数量级,但算法向量化之后更高数量级的速度提升往往使得这样的复杂度增加变得可以忽略。比如,高维向量化之后FFT和SVD算法,GPU都比CPU性能好,这在工程领域具有非常巨大的价值。在并行计算领域,算法在追求复杂度降低的同时,还必须考虑到同向量化的平衡。我们的目的是降低计算时间,而计算时间未必和复杂度就是统一的。

当然,如你所说,GPU对高精度不行,但这个只是目前产品级的限制。在研究领域这个已经不是什么问题。编程的话,复杂不复杂,要看程序员是不是习惯向量化的思想。现在产业领域的程序员,大都还不具有向量化所要求的数学和算法能力,不过应该慢慢会进步的吧。

关于lib的问题,我们目前用的比较多的是CUDA,说缺乏可能算不上,但是目前的计算机教育在并行计算这块比较空白还是一个现状。其实Matlab在CPU向量化上就做的非常好。题外话,现在一部分编译器已经有将迭代语句向量化的功能(GCC可以做到一些,Intel Compiler好像更强),也许以后未必需要掌握什么lib或者平台才能做向量化算法提升。

家园 可以啊,GPU算Option

可能是最好的一种情况了。因为option的strike,forward,volatility等等都不是很大,用GPU的float足够了。等有空了我们在多聊聊。

家园 呵呵

其实类似GPU运算的想法早就有了,一个问题是用硬件还是软件解决,也没有一定的界限。硬件快,贵,实现困难,软件慢,便宜,实现容易。

GPU运算之所以现在火起来,是因为GPU把硬件贵这个缺点改了,搞HPC的全是吝啬鬼,要他们多掏一点钱要考虑来考虑去。现在用GPU,硬件开发费用绝大部分都由公众(gamers)承担了。

当然,一分钱一分货。GPU虽然比CPU快,但还是不如专用的加速器。

家园 是的

GPU就是一个向量处理器(上体系结构课的时候记得老师就是这么说的,当时那节课讲向量处理器,记得老师说向量计算并没有消失,现在的GPU就是一种),NUDT之所以能用GPU做出天河,一个很大的原因就是他们就是靠向量计算机起家的(银河1,银河2),对向量计算轻车熟路。

家园 转眼四年过去啦,现在GPU计算热啊

天河啥的就不提了,cuda编程我也不会,但说我上次碰到一个给IDL做GPU运算库的公司,只要把库装上就能让GPU加速IDL,这对我等不准备深钻cuda的人是一大福音啊。

呵呵
家园 准确的说是全球游戏玩家在补贴HPC

玩家分摊了大部分的GPU研发费用,所以拿GPU做HPC很便宜。

家园 CPU也会越来越多的用向量化的办法

龙芯的GS464V核就实现了256位的向量模块,所以他们在频率不太高(1G)的情况下也可以实现看起来相当牛的浮点计算峰值。

他们的3B就是基于这个核的,差不多是3.2GFLOPS每瓦。

全看树展主题 · 分页首页 上页
/ 4
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河