问题描述
我写了一个基于OpenCL和C的奇偶排序算法,也是一个串行奇偶排序算法。但是当我尝试运行它们(例如,我随机生成一个包含 2,000 个元素的数组)然后将它们与第 224 个元素进行比较时,我发现它们是不同的。但在一个小样本上,它们都是一样的。这是为什么?
由于某种原因,我需要隐藏我的 OpenCL 代码。对不起
这是我的 OpenCL 代码。
__kernel void
odd_sort(__global int *array,int len,int array_size)
{
}
__kernel void
even_sort(__global int *array,int array_size)
{
}
这是串行程序。
void serial()
{
int i,j,tmp;
bool sorted = false;
while(!sorted)
{
sorted = true;
// odd sort
for (i = 1; i < array_size - 1; i+=2)
if (array[i] > array[i+1])
{
tmp = array[i];
array[i] = array[i+1];
array[i+1] = tmp;
sorted = false;
}
// even sort
for (j = 0; j < array_size - 1; j+=2)
if (array[j] > array[j+1])
{
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
sorted = false;
}
}
// print(array,array_size);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)