【发布时间】:2025-11-29 06:50:01
【问题描述】:
我需要使用 OpenMP 优化此 C 代码。最优解是什么?
#define accessMat( arr, exp1, exp2 ) arr[ (int)(exp1) * columns + (int)(exp2) ]
for( i=0; i<iter && i<rows; i++ )
for( j=0; j<columns; j++ )
accessMat( flow_copy, i, j ) = accessMat( flow, i, j );
【问题讨论】:
-
你的矩阵有多大?复制数据通常受内存层次结构(缓存和 RAM)的速度限制,而不是计算核心本身。对于小型矩阵,内核之间的隐式通信比仅按顺序移动数据的成本要高得多。如果要高效移动数据,可以使用优化的
memcpy函数。
标签: c multithreading matrix parallel-processing openmp