OpenMP是否支持随机静态计划?

OpenMP是否支持随机静态计划?,openmp,Openmp,我希望将具有以下特征的for循环并行化: 1) 循环的迭代可以按任意顺序进行。迭代N不依赖于迭代N-k 2) 迭代N和(N-k)可能需要显著不同的时间量。确切的代价是一个复杂的、确定性的函数N,我懒得去预测它,因为它与我的代码的正确性无关 3) 将连续的迭代块关联到不同的工作人员将导致一些工作人员比其他工作人员更快完成。特别是,“中间”迭代往往需要更长的时间 4) 有大量的迭代 因此,有了这些特性,自然要做的事情是将每个worker与相等数量的随机迭代相关联。openmp是否支持静态、无序的计划

我希望将具有以下特征的for循环并行化:

1) 循环的迭代可以按任意顺序进行。迭代N不依赖于迭代N-k

2) 迭代N和(N-k)可能需要显著不同的时间量。确切的代价是一个复杂的、确定性的函数N,我懒得去预测它,因为它与我的代码的正确性无关

3) 将连续的迭代块关联到不同的工作人员将导致一些工作人员比其他工作人员更快完成。特别是,“中间”迭代往往需要更长的时间

4) 有大量的迭代

因此,有了这些特性,自然要做的事情是将每个worker与相等数量的随机迭代相关联。openmp是否支持静态、无序的计划,而不是静态、连续的计划?我可以使用动态计划,这样就不会有工人空闲,但我记得有人说过动态计划会有更多的开销


我可以自己在[0..N-1]上维护一个[0..N-1]的随机查找表来转换迭代计数器,我只是想问一下openmp是否已经知道如何实现这一点。

openmp是否支持静态、无序调度的想法。。。不,没有。我记得有人说过动态计划会有更多的开销是的,也许吧,但是如果每次迭代的成本是不可预测的,那么不管怎样,动态计划可能会比静态的shuffle好得多。如果我对你问题的答案感兴趣(我也有一点感兴趣),我会写一些测试。我还将测试OpenMP的显式
任务
,这可能是一种可行的方法。也许有一个简单的计算双射函数可以用于索引。有点像洗牌。。。不过,我还是想强调一下高性能标记:进行测量,不要害怕尝试动态调度。您可以实现自己的调度程序