Я начинаю в OpenMP и я хочу распараллелить эту часть кодаКак я могу использовать openMP для моего кода?
int A[n][m+1];
int B[k][m];
for (h=0;h<100;h++){
for (i=0;i<n;i++){p=0;
for (j=0;j<k;j++){s=0;
for (l=0;l<m;l++){
s+=(A[i][l]-B[j][l]);
}
s=sqrt(s);
if (j==0) min =s;
else
if (min > s){min =s;p=j;}
}
A[i][m]=p;
}
}
и это моя попытка для распараллеливания с помощью OpenMP
#pragma omp parallel for private(s)
for (h=0;h<100;h++){
for (i=0;i<n;i++){p=0;
for (j=0;j<k;j++){s=0;
for (l=0;l<m;l++){
s+=(A[i][l]-B[j][l]);
}
s=sqrt(s);
if (j==0) min =s;
else
if (min > s){min =s;p=j;}
}
A[i][m]=p;
}
}
как я могу сделать это правильно? мне нужна ваша помощь.
Как вы думаете, что вы делаете неправильно? – TankorSmash
Сначала правильно открепите свой код и добавьте пробел. Не используйте переменное имя 'l', так как его трудно отличить от' 1'; он задает проблемы. –
Возможно, что 'h, i, j, p, l' и' min' также должны быть приватными: каждый поток должен обрабатывать собственное значение 'h, i, j, l' и' min'. – francis