微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的基于OpenCL的排序算法结果是错误的?

如何解决为什么我的基于OpenCL的排序算法结果是错误的?

我写了一个基于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 举报,一经查实,本站将立刻删除。