Concurrency 如何使已编写的并发程序在GPU阵列上运行?

Concurrency 如何使已编写的并发程序在GPU阵列上运行?,concurrency,erlang,cuda,parallel-processing,gpu,Concurrency,Erlang,Cuda,Parallel Processing,Gpu,我有一个用Erlang编写的神经网络,我刚买了一个GeForce GTX 260卡,上面有一个240核的GPU。作为胶水在图形卡上运行此功能是否很简单?不,使用CUDA不是一件小事 CUDA编程模型基本上使用C(还有一些附加),但是为了获得GPGPU的大部分功能,您必须确保您的算法遵循CUDA指南。(见附件) 例如,为了获得最佳内存性能(大约70Gbps),您需要在流模式下通过合并访问内存,而且分支在GPU上的成本非常高,因此您应该尽可能避免使用条件。查看SDK提供的指南和示例,它们将提供一个极

我有一个用Erlang编写的神经网络,我刚买了一个GeForce GTX 260卡,上面有一个240核的GPU。作为胶水在图形卡上运行此功能是否很简单?

不,使用CUDA不是一件小事

CUDA编程模型基本上使用C(还有一些附加),但是为了获得GPGPU的大部分功能,您必须确保您的算法遵循CUDA指南。(见附件)


例如,为了获得最佳内存性能(大约70Gbps),您需要在流模式下通过合并访问内存,而且分支在GPU上的成本非常高,因此您应该尽可能避免使用条件。查看SDK提供的指南和示例,它们将提供一个极好的起点

我希望我能告诉您如何使用Erlang…;-),但至少,MS Research的萨特南·辛格(Satnam Singh)对哈斯克尔(熔岩)和F#做了一些非常有趣的工作。也许这篇论文可以给你一些直觉,让你知道如何做到这一点:


是的,这需要做很多工作。要获得显著的加速,您必须了解如何安排数据以及所提到的半扭曲和合并的概念。此外,我相信目标机器代码根据GPU系列的变化……可怕的问题,你可能想考虑在Erlang社区中提高这一点,它可能会激发Erlang!没有:我对此表示怀疑。erlang并发模型与CUDA或OpenCL等并发模型语言的性能不太好。我为erlang编写openCL绑定做了一些(尚未发表)的工作,但到目前为止,我看到的唯一一个真正的应用程序是快速矩阵变换。断开链接。Satnam的主页如下: