Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencl 如何使以下顺序代码并行?_Opencl - Fatal编程技术网

Opencl 如何使以下顺序代码并行?

Opencl 如何使以下顺序代码并行?,opencl,Opencl,我想让下面的内核代码并行, 在下面的代码中,a的大小是n,b和c的大小是8*n,d的大小是小于n的某个值(例如:3*n/4) j=0; 对于(i=0;i基本上这是基于谓词的并行数组压缩 请查看中描述的技术 或者在推力上 这可以并行进行;它涉及到额外的资源和处理,只有在非常大的N值时才能实现性能。因此,如果填充了d,您想停止,或者是否有某种保证不超过那么多匹配项?创建一个足够大的d数组,并用NAN填充所有值。在J上运行维度;并让t对于每个内核中的循环,应将d数组创建为最大可能值j,然后仅使用非NA

我想让下面的内核代码并行, 在下面的代码中,a的大小是n,b和c的大小是8*n,d的大小是小于n的某个值(例如:3*n/4)

j=0;

对于(i=0;i基本上这是基于谓词的并行数组压缩

请查看中描述的技术 或者在推力上

这可以并行进行;它涉及到额外的资源和处理,只有在非常大的N值时才能实现性能。因此,如果填充了d,您想停止,或者是否有某种保证不超过那么多匹配项?创建一个足够大的d数组,并用NAN填充所有值。在J上运行维度;并让t对于每个内核中的循环,应将d数组创建为最大可能值j,然后仅使用非NAN的值压缩d数组。@Chanakya.sun压缩d数组将是任意顺序的,这是我不希望的。.我将更清楚地说明我的疑问。.下面是给出问题的并行代码,I=get_global_id(0);if(a[b[i] 我会给出一个我到底想做什么的例子。a=[1,6,6,10,6,20,16,20,16,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,1,6,10]b=[1,2,4,6,8,9,11,13]c=[3,4,6,7,13,10129]现在这里是a[b[0]!=a[0],所以条件得到满足,d[0]=b[0]=b[0]=1;现在是a[1,c]=1]如果我执行并行代码,则保留为空。a[b[2]!=a[c[2]],因此现在d在其第二个值处填充,即在d[2]中,而我希望它在d[1]中填充。。。
j=0;
for(i=0;i<n;i++)
 {
  if (a[b[i]]!=a[c[i]])
  {
   d[j]=b[i];
   j++;
  }
 }