如何将已经编写好的并发程序运行在GPU数组上?

22

我有一个用Erlang编写的神经网络,我刚刚购买了一张带有240个核心GPU的GeForce GTX 260显卡。使用CUDA作为粘合剂在图形卡上运行它是否容易?


这是一个非常棒的问题,你可能想要在Erlang社区中提出它,它可能会激发Erlang中一些真正显著的变化! :-) - none
1
我对此有所怀疑。Erlang并发模型与CUDA或OpenCL使用的并发模型语言相比表现不佳。我曾试图编写Erlang的OpenCL绑定(但尚未公开),但目前我唯一真正看到它的应用是执行类似快速矩阵变换之类的任务。 - Jonathan Ringstad
2个回答

16
不,使用CUDA并不是一件简单的事情。CUDA编程模型基本上使用C语言(有些添加),但为了充分发挥GPGPU的功能,您需要确保您的算法遵循CUDA指南。(请参见NVidia CUDA Programming Guide
例如,为了获得最佳的内存性能(约为70Gbps),您需要以流式模式和协同方式访问内存,此外,在GPU上分支非常昂贵,因此应尽可能避免条件语句。查看SDK提供的指南和示例,它们将提供一个出色的起点。

是的,这是很多工作。为了获得显著的加速,您必须了解如何安排数据以及半瓣和合并的概念,正如所提到的那样。此外,我相信目标机器代码会根据GPU系列而变化... - Sushant

3

我希望我能告诉你如何使用Erlang来完成这个任务,但至少,微软研究院的Satnam Singh在Haskell(Lava)和F#方面做了一些非常有趣的工作。也许这篇论文可以给你一些直觉,告诉你它是如何实现的:

http://research.microsoft.com/en-us/people/satnams/


1
损坏的链接。Satnam的主页在这里:http://research.microsoft.com/zh-cn/people/satnams/ - Ade Miller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接