OpenMP に関する簡単な質問:
オープン MP を使用してネストされた double for ループを並列に実装する方法がわかりません。たとえば、より大きな for ループ内に 2 つの 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;
}
答えてくれたすべての人に感謝します。