【发布时间】:2012-11-14 13:40:22
【问题描述】:
这是一个矩阵乘法代码,其中一个 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];
}
}
}
}
【问题讨论】:
标签: c++ c multithreading parallel-processing openmp