我如何並行該功能中的OpenMP對於C並行化功能,用C的OpenMP
int zeroRow(int**A,int n) {
int i, j, sum, num = 0;
for(i= 0;i< n;i++) {
sum = 0;
for(j = 0; j < n; j++) {
sum += A[i][j];
}
if(sum == 0) {
num++;
}
}
return num;
}
我做這個檢查,如果這是正確的程序。
int zeroRow(int**A,int n) {
int num = 0;
#pragma omp parallel for reduction(+:num);
for(int i= 0;i< n;i++) {
int sum = 0;
for(int j = 0; j < n; j++) {
sum += A[i][j];
}
if(sum == 0) {
num++;
}
}
return num;
}
,請告訴我,如果我做了什麼是正確的或擰我一直在使用減少並行外環和一個單獨的NUM是給每個線程。
好吧我沒有縮進它第一次可能出現錯誤,當我按下CTRL-K,現在我手動插入它。@ H2Co3 –
看起來沒問題。有問題嗎? –
看起來確實是對的,但是,如果'j'是在並行區域之外定義的(例如,在C中),那麼它肯定應該被設置爲private。 – JakubT