在openmp中对数组进行排序 [英] Sorting an array in openmp

查看:358
本文介绍了在openmp中对数组进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含100个元素的数组,需要使用OpenMP使用插入排序进行排序.当我并行化排序时,它不会给出正确的值.有人可以帮忙吗

I have an array of 100 elements that needs to be sorted with insertion sort using OpenMP. When I parallelize my sort it does not give correct values. Can some one help me

void insertionSort(int a[])
{
    int i, j, k;
    #pragma omp parallel for private(i)
    for(i = 0; i < 100; i++)
    {
            k = a[i];
            for (j = i; j > 0 && a[j-1] > k; j--)
                    #pragma omp critical
                    a[j] = a[j-1];
                    a[j] = k;
    }
}

推荐答案

变量"j"和"k"在并行区域上必须是私有的.否则,您将遇到数据争用情况.

Variables "j" and "k" need to be private on the parallel region. Otherwise you have a data race condition.

这篇关于在openmp中对数组进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆