天天看点

粗识openmp

看到一段代码利用openmp并行执行for循环,觉得这玩意真方便,一行代码就完事了,就上网学习。

大致看完之后得出个结论,这玩意也就只能for循环用用。个人粗浅的认识,接受一切反驳。

理由如下:

  1. 上手有门槛,初级功能简单方便,想用好高级功能还是挺麻烦的。
  2. 跨平台、多编译器支持:不是决定性优势,跨平台的线程库也不少。
  3. 多线程很多情况下是启动不同的处理函数,这种场景用std::thread/pthread也麻烦不到哪去,同步什么的控制起来更熟悉。

总之:学习成本(特别是团队)与收益不成正比。

但是,如果有大量for循环,还是可以考虑一下,使用起来确实方便,代码也简洁。

附几个链接,个人感觉讲的比较清晰。

参考:

https://blog.csdn.net/ArrowYL/article/details/81094837

https://blog.csdn.net/donhao/category_692208.html

https://www.ibm.com/developerworks/cn/aix/library/au-aix-openmp-framework/index.html

https://www.openmp.org/specifications/

继续阅读