Fla*_*ash 6 language-agnostic parallel-processing multithreading gpu gpgpu
我目前有一个类似于此的并行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 */
}
Run Code Online (Sandbox Code Playgroud)
我尽可能地进行了优化,以至于我能做的唯一事情就是添加更多资源.
我有兴趣利用GPU来帮助并行处理任务.我已经读过像这样令人难以置信的并行任务可以非常有效地利用现代GPU.
使用任何语言,使用GPU进行简单并行循环的最简单方法是什么?
我对GPU架构或本机GPU代码一无所知.
正如 Li-aung Yip 在评论中所说,使用 GPU 最简单的方法是使用像 Matlab 这样的东西,它支持数组操作并自动(或多或少)将这些操作移动到 GPU。但要使其工作,您需要将代码重写为纯基于矩阵的运算。
否则,大多数 GPU 使用仍然需要使用 CUDA 或 OpenCL 进行编码(您需要将 OpenCL 与 AMD 卡一起使用)。即使您使用自己喜欢的语言的包装器,在 GPU 上运行的实际代码通常仍然是用 OpenCL 编写的(看起来有点像 C)。因此这需要大量的学习/努力。您可以首先从 AMD 下载 OpenCL 并阅读文档...
我怀疑这两个选择都需要学习新的想法。我认为,你真正想要的是一种针对 GPU 的高级但仍具有传统外观的语言。不幸的是,它们似乎还不存在。我能想到的唯一例子是theano - 你可以尝试一下。即使在那里,你仍然需要学习 python/numpy,我不确定 theano 实现有多可靠,但它可能是最不痛苦的前进方式(因为它允许使用“传统”方法 - 在很多方面使用矩阵更容易,但有些人似乎发现这在概念上很难理解)。
PS 顺便说一句,我不清楚 GPU 是否能帮助你解决问题。
归档时间: |
|
查看次数: |
4371 次 |
最近记录: |