【发布时间】:2021-09-21 05:54:51
【问题描述】:
想象一个简单的循环:
constexpr int N; // some big number
#pragma omp parallel for
for(int i=0; i<N; ++i)
{
// some not very demanding computation like
// c[i] = a[i] + b[i]
}
我如何(大约)确定这种循环是否适合在大小N 方面进行并行化?
例如,如果我有一个 20 核 CPU,则这个 #pragma 与 N = 400 的速度相比,与普通版本相比没有任何变化。
然而,它显然适用于 N = 1e+7 之类的东西。
为了估计多线程的加速(或减速),我应该了解硬件/运营成本/等什么?
【问题讨论】:
-
如果您不需要便携的性能,您可以对其进行基准测试。
标签: c++ multithreading openmp