这是一个矩阵乘法代码,一个i
循环并行化,另一个j
循环并行化。对于这两个版本,C
数组的值都是正确的(我已经用小矩阵大小进行了测试)。与其他相比也没有性能改进。
谁能告诉我这两个版本有什么区别?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];
}
}
}
}