我有一个功能正在尝试与 OpenMP 并行化。我有一个大for
循环,每次迭代都独立于其他迭代,我想使用类似的东西
#pragma omp for private(j)
并行化循环。
一个问题是循环的每次迭代都需要大量的临时工作空间,这足以让我认为如果我在每次迭代中分配和取消分配这个临时工作空间,它可能会降低性能。我的环境中有“工作区”对象,并且按原样重用旧工作区对象没有问题。
如何在创建线程之前为每个线程分配工作空间(我不知道有多少)?如何告诉每个线程从池中选择一个唯一的工作区对象?