我必须学习有关的OpenMP
资料gcc
。我已经阅读了OpenMP
(3.0和4.0)的文档。据我所知,OpenMP使用了work-sharing
机制。据我了解,work-sharing
机制是在线程运行时在线程之间传输任务。还是在执行这些线程之前执行线程之间的数据分配?
如果您在使用OpenMP与任务,这些任务都存储在一个或多个任务队列。如果线程发现自己处于空闲状态,它将从相邻队列中监听任务。这是内部的libgomp
。
如果将OpenMP并行用于静态计划,则不会进行任务监听。
如果将OpenMP并行用于动态计划,则组中的线程将动态分配工作,因此空闲线程将接管其余团队的任务。
通常,当线程需要在运行时进行通信时,会花费大量的时间在处理上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句