OpenMP并行模型
OpenMP使用Fork-Join的并行执行模式。开始时由一个主线程执行程序,该线程一直串行地执行,直到遇到第一个并行化制导语句后才 开始并行执行。过程如下: ①Fork:主线程创建一队线程并行执行并行域中的代码;②Join:当各线程执行完毕后被同步或中断,最后又只有主线程在执行。
OpenMP的编程相对简单,充分利用了共享存储体系结构的特点,避免了消息传递的开销。虽然它也支持粗粒度的并行,但主要还是针对细粒度的 循环级并行。OpenMP的另一个特点在于将串行程序转换为并行程序时无须对代码作大的改动。其不足之处有只能在共享存储结构的机器上运行;数据的放置策 略不当可能会引发其他问题;并行化的循环粒度过小会增加系统开销等。