在openmp中对数组进行排序 [英] Sorting an array in openmp
本文介绍了在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屋!
查看全文