2012-05-01 54 views
0

OpenMP的左右快捷提問:雙重嵌套表示OpenMP

我不知道如何在兩個使用開放MP.As實現了循環嵌套雙並行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; 
} 

非常感謝任何人和所有回答。

回答