私はこのC++コードを持っています。
ループは行列を通過し、各行の最小要素を見つけて、対応する行の各要素からそれを減算します。変数 myr はすべての min 要素の合計です
並列化しようとしています:
int min = 0;
int myr = 0;
int temp[SIZE][SIZE];
int size = 0;
...//some initialization
omp_set_num_threads(1);
start_time = omp_get_wtime();
#ifdef _OPENMP
#pragma omp parallel for firstprivate(min, size) reduction(+:myr)
#endif
for(int i = 0; i < size; i++){
min = INFINITY;
for(int j = 0; j < size; j++){
if (temp[i][j] < min)
min = temp[i][j];
}
myr+=min;
for(int j = 0; j < size; j++)
temp[i][j]-=min;
}
end_time = omp_get_wtime();
コードのこの部分を設定するとomp_set_num_threads(2);
、動作が遅くなります。
私のprocには2つのコアがあります
2 スレッドでコードの動作が遅くなるのはなぜですか?