【发布时间】:2022-01-25 01:38:21
【问题描述】:
我有这段代码使用循环平铺策略转置矩阵。
void transposer(int n, int m, double *dst, const double *src) {
int blocksize;
for (int i = 0; i < n; i += blocksize) {
for (int j = 0; j < m; j += blocksize) {
// transpose the block beginning at [i,j]
for (int k = i; k < i + blocksize; ++k) {
for (int l = j; l < j + blocksize; ++l) {
dst[k + l*n] = src[l + k*m];
}
}
}
}
}
我想通过使用 OpenMP 的多线程来优化这一点,但是当有这么多嵌套的 for 循环时,我不确定该怎么做。我想过只添加#pragma omp parallel for,但这不只是并行化外循环吗?
【问题讨论】:
-
这能回答你的问题吗? How does OpenMP handle nested loops?
-
@JanezKuhar 有点,但是我更想知道是否可以进行任何进一步的优化。在您链接的线程中,他们只真正谈论崩溃等
标签: c multithreading performance parallel-processing openmp