简单了解OpenMP

来源:互联网 发布:linux查看剩余磁盘空间 编辑:程序博客网 时间:2024/05/18 16:57
OpenMP 是 Open MultiProcessing 的缩写。OpenMP 并不是一个简单的函数库,而是一个诸多编译器支持的框架,或者说是协议吧,总之,不需要任何配置,你就可以在 Visual Studio 或者 gcc 中使用它了。

http://www.cnblogs.com/ospider/p/5265975.html

#pragma omp parallel

vs中配置
http://blog.csdn.net/augusdi/article/details/8808226

很多需要并行的代码用for写起来会比较痛苦,这时可以用“#pragma omp parallel sections”标示将要并行执行的代码括起来,然后用”#pragma omp section”标示每一条线程的执行代码
http://blog.csdn.net/aoshilang2249/article/details/46873225

设置环境变量,我的电脑->属性->高级->环境变量,新建一个 OMP_NUM_THREADS变量,值设为2,即为程序执行的线程数

在环境变量中设置OMP_NUM_THREADS变量,值设为8,那么就是8线程了(重新设置环境变量后,需要重启vs)
http://www.cnblogs.com/wxquare/p/5584662.html  这个写的很好

大多数情况下,我们主要会将多线程技术应用在循环中而不是全部代码。OpenMP主要被应用于for循环的多线程处理,这主要还是因为for循环比较容易控制。当然如果你非要用在while循环上也不是不可以,只不过要大量修改你的代码然后用一个block来圈在while之外,总之是一个比较另类的操作了。

#include <iostream>#include "omp.h"using namespace std;
int main(int argc, char **argv) {
        //设置线程数,一般设置的线程数不超过CPU核心数,这里开4个线程执行并行代码段
        omp_set_num_threads(4);
#pragma omp parallel
        {
                cout << "Hello" << ", I am Thread " << omp_get_thread_num() << endl;
        }
}

http://www.tuicool.com/articles/RbIr2mJ
0 0