我对 时间表和默认块大小的parallel for
行为感到困惑或误解。static
例如下面的图片我例外的是,主线程将进行额外的迭代,但我例外的是它会在索引 8 而不是 2 处!
具有默认块大小的静态调度算法在 (#iterations / #threads) 上应用循环法,有 2 种情况
如果#iterations 可以被#threads 整除,例如N=8 和#threads = 4。每个线程将以循环方式进行相同数量的迭代(直接情况)
如果#iterations 不能被#threads 整除。它将计算最接近的迭代整数除以#threads,并执行与上述相同的操作
N=9 的情况 --> 8 它将除以 2 2 2 2 和 1
N=11 --> 12 的情况下,它将被划分为 3 3 3 和 2
线程是 0 1 2 3