Kernel OpenCL,多个工作组/内核? 我有一些C++代码,它利用了多个线程。

Kernel OpenCL,多个工作组/内核? 我有一些C++代码,它利用了多个线程。,kernel,opencl,Kernel,Opencl,我去掉了一个数组,可以将程序加起来(在多个线程上多次运行),即-1/+1个随机数的总和 runningTotal += ((rng_1.rand_cmwc()%range + 1) <= halfRange ? 1: -1); 运行总数=((rng1,rand),(1))第一个问题:我相信只有AMD支持通过一个叫做静态C++内核语言(参见)的扩展来使用内核中的类。 第二个问题:要并行求和,必须使用并行求和算法,例如前缀和(http://en.wikipedia.org/wiki/Pref

我去掉了一个数组,可以将程序加起来(在多个线程上多次运行),即-1/+1个随机数的总和

runningTotal += ((rng_1.rand_cmwc()%range + 1) <= halfRange ? 1: -1);

<代码>运行总数=((rng1,rand),(1))第一个问题:我相信只有AMD支持通过一个叫做静态C++内核语言(参见)

的扩展来使用内核中的类。 第二个问题:要并行求和,必须使用并行求和算法,例如前缀和(http://en.wikipedia.org/wiki/Prefix_sum)或减少(http://developer.amd.com/Resources/documentation/articles/Pages/OpenCL-Optimization-Case-Study-Simple-Reductions.aspx)。请注意,存在用于此的库


希望有帮助。祝你好运:)

你的计划的目标是什么?仅给出函数(rand_cmwc)高于阈值时的+/-值?该函数实际上做什么/返回什么?在x次迭代后返回一个结果
  runningTotal += ((rng_1.rand_cmwc()%range + 1) <= halfRange ? 1: -1);