OpenMP 的双重嵌套
Double nested for OpenMP
关于OpenMP的快速问题:
我不确定如何使用开放式 MP.As in 并行实现嵌套的双 for 循环,在较大的 for 循环内有两个 for 循环。使用这种循环的算法是"双端选择排序"。
void project::parallelDeSelectionSort()
{
//Printarr(arr,size);
int comparisons = 0;
int j = 0;
int k = 0;
#pragma omp parallel for private (j, k)
for(int i = 0; i < arrSize; i++)
{
int min = i;
int max = ((arrSize-1) - i);
int maxtemp = max;
int mintemp = min;
for(j = min; j < arrSize; j++)
{
if(data[min] > data[j])
{
min = j;
}
comparisons++;
//Printarr(data,arrSize);
}//end for
for(k = max; k > 0; k--)
{
if(data[max] < data[k])
{
max = k;
}
comparisons++;
//Printarr(data,arrSize);
}//end for
if(min > mintemp)
{
swap(data[min], data[mintemp]);
}
comparisons++;
if(max < maxtemp)
{
swap(data[max], data[maxtemp]);
}
comparisons++;
//Printarr(data,arrSize);
}//end outer for
//cout<<GetCounter()<<endl;
cout<<"number of comparisons in parallel DE selection sort: "<< comparisons<<endl;
}
非常感谢所有回答的人。
这是
关于该主题的好教程:
http://msdn.microsoft.com/en-us/magazine/cc163717.aspx
我会建议一个
#pragma omp parallel for
对于最外部的环路,则
#pragma omp for
对于嵌套循环。
但是,我现在没有要测试的 OpenMP 设置。
相关文章:
- OpenMP 嵌套未关闭
- 如何使用 OpenMP 减少嵌套循环?
- 具有动态数组分配的OpenMP嵌套循环
- OpenMP 和不平衡嵌套循环
- OpenMP 嵌套循环处理性能
- 嵌套循环 OpenMP 并行化、私有索引还是公共索引?
- 将 for 循环与嵌套的 while 循环并行化时出现 OpenMP 分段错误
- 用于在一维数组上嵌套循环操作的正确 openmp 指令
- 在 C 中并行化嵌套循环的几种方法之间的差异,C++使用 OpenMP
- 使用MPI/OpenMP的C 程序带有派生数据类型(嵌套类对象)容器
- OpenMP 如何知道嵌套了多少个循环实例
- OpenMP 按需嵌套并行性
- 有效地在小环上使用OpenMP,并具有非常大的嵌套回路
- 嵌套并行区域 OpenMP
- OpenMP,嵌套循环设计策略
- 嵌套矢量化 OpenMP 循环,在最内层循环中具有多行代码
- OpenMP 嵌套循环,每个"for"循环之间都有代码
- OpenMP G++ 错误:折叠的循环未完全嵌套
- Openmp:嵌套循环和分配
- 与std::线程结合使用的嵌套openMP并行化