i
これは、1 つのループが並列化され、もう1 つのループが並列化された行列乗算コードj
です。両方のバージョンで、C
配列の値は正しいです (小さな行列サイズでテストしました)。また、一方から他方へのパフォーマンスの向上もありません。
これらの 2 つのバージョンの違いを教えてください。C
行列のサイズに関係なく、配列は両方のバージョンで正確ですか? 前もって感謝します
void mat_multiply ( void )
{
int t;
int i, j, k;
#pragma omp parallel for private(k) // parallelize i loop
for(i = 0; i < dimension; i++)
{
for(j = 0; j < dimension; j++)
{
for(k = 0; k < dimension; k++)
{
C[dimension*i+j] += A[dimension*i+k] * B[dimension*k+j];
}
}
}
}
void mat_multiply ( void )
{
int t;
int i, j, k;
for(i = 0; i < dimension; i++)
{
#pragma omp parallel for private(k) // parallelize j loop
for(j = 0; j < dimension; j++)
{
for(k = 0; k < dimension; k++)
{
C[dimension*i+j] += A[dimension*i+k] * B[dimension*k+j];
}
}
}
}