OpenMP Guided是怎样的工作机制?
求大神指导
------解决方案--------------------------------------------------------
基本上就是动态分配任务的思想,解决原先静态分配可能导致的性能问题
比如说,循环从 1 to 100, OMP thread 数量 = 4,那么缺省的分配方式就是 简单地一分为四:
OMP thread 1 拿 1 到 25; OMP thread 2 拿 26 到 50;OMP thread 3 拿 51 到 75, OMP thread 4 拿 76 到 100.
这种平均分配的模式,在某些特定的情况下,会导致不同 OMP thread 间的工作负载(Workload)分配不均衡,还是有性能提升的空间。
所以产生了动态分配的想法。或者,每个 OMP thread 轮流分配一个比较小的数量直到全部分配完毕 (比如说一次拿 5 个,而不是原先一次性拿满 25 个) ; 或者,每个 OMP thread 先分配一个固定数量,然后再根据完成的情况,先完成的再继续分配一个小数量,直到全部分配完毕