(The answer below refers to the source code in the question, which has since been improved using these suggestions)
, OpenMP. http://www.openmp.org; .
.
float *d = malloc(3*sizeof(float));
float diff;
d , private #pragma omp parallel for (. ), . 3 . diff , private.
#pragma omp parallel
for(i=0;i<ncft;i+=jump){
#pragma omp parallel
for(j=0;j<ntri2;j++){
, ( - ), (!) , . . #pragma omp parallel for .
d[0] = vG1[i][0] - vG2[j][0];
d[1] = vG1[i][1] - vG2[j][1];
d[2] = vG1[i][2] - vG2[j][2];
diff = sqrt(pow(d[0],2) + pow(d[1],2) + pow(d[2],2));
parallelism, pow ? , , .
if(j==0)
dist[k] = diff;
else
if(diff<dist[k])
dist[k] = diff;
(dist[k]=diff;), || ( ).
}
avg += dist[k];
if(dist[k]>max)
max = dist[k];
. OpenMP reduction #pragma omp for.
k++;
}
k , , . , k - "" i/jump, private.