openMP是一个编译器指令和库函数的集合,主要是为共享式存储计算机上的并行程序设计使用的。
当计算机升级到多核时,程序中创建的线程数量需要随CPU核数变化,如在CPU核数超过线程数量的机器上运行,则不能很好的完全利用机器性能,虽然通过可以通过操作系统的API创建可变化数量的线程,但是比较麻烦,不如openMP方便
操作系统API创建线程时,需要线程函数入口,如pthread编程。对于同一函数或者同一循环内的并行非常不利,函数入口非常之多,而openMP不需要函数入口。
现在主流的操作系统的API 互不兼容,移植性非常差。openMP是标准规范,支持它的编译器都执行同一套标准,很好的解决了这个问题。
openMP的库函数和指令
指令的格式: #pragma omp 指令 [字句]
常见库函数:
指令 | 含义 | 库函数 | 含义 |
---|---|---|---|
parallel | 所表示的代码将被多个线程并行执行 | omp_set_num_threads(parameter) | 设置线程数目 |
parallel for |
延伸阅读
我想了解如何学习 |