我目前有一个类似于此的并行for循环:
int testValues[16]={5,2,2,10,4,4,2,100,5,2,4,3,29,4,1,52};
parallel_for (1, 100, 1, [&](int i){
int var4;
int values[16]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
/* ...nested for loops */
for (var4=0; var4<16; var4++) {
if (values[var4] != testValues[var4]) break;
}
/* ...end nested loops */
}
我尽可能地进行了优化,以至于我唯一可以做的就是添加更多资源。
我有兴趣利用GPU来帮助并行处理任务。我已经读过这样令人难以置信的并行任务可以非常有效地利用现代GPU。
使用任何语言,像这样使用GPU进行简单并行循环的最简单方法是什么?
我对GPU架构或本机GPU代码一无所知。
答案 0 :(得分:2)
否则,大多数GPU使用仍然需要在CUDA或OpenCL中编码(您需要将OpenCL与AMD卡一起使用)。即使你使用你喜欢的语言的包装器,在GPU上运行的实际代码仍然通常用OpenCL编写(它看起来像C一样模糊)。所以这需要相当多的学习/努力。你可以先从AMD下载OpenCL并阅读文档......
我怀疑这些选项都需要学习新的想法。我认为,你真正想要的是一个高级别,但仍然是传统外观,针对gpu的语言。不幸的是,它们似乎并不存在太多。我能想到的唯一例子是theano - 你可能会尝试。即使在那里,你仍然需要学习python / numpy,我不确定theano实现是多么坚固,但它可能是最不痛苦的前进方式(因为它允许“传统”方法 - 使用矩阵在很多方面更容易,但有些人似乎发现很难掌握,从概念上讲。)
ps我不清楚gpu会帮助你解决问题,顺便说一句。
答案 1 :(得分:1)
您可能想查看阵列火灾。
http://www.accelereyes.com/products/arrayfire
如果您使用openCL,则需要为不同的设备供应商,intel,AMD和Nvidia下载单独的实施。
答案 2 :(得分:0)