OpenMP学习日记(一)

由于专选有一门课布置了作业,便来学习下openMP。把自己之前的一些疑惑和经过各类查阅获得的资讯进行了整理,供自己和感兴趣的朋友查阅!

什么是OpenMP?
起初,老师布置了用OpenMP写个HelloWorld的入门级程序,我以为是要下一个全新的软件或者编译平台,可把我吓坏了。
实际上,OpenMP 是 Open MultiProcessing 的缩写。OpenMP 并不是一个简单的函数库,而是一个诸多编译器支持的框架,或者说是协议吧,总之,不需要任何配置,你就可以在 Visual Studio 或者 gcc 中使用它了。

如何配置?
如果你电脑中装有VS,那么只需要右键项目->属性->C/C+±>语言 具体如图OpenMP学习日记(一)
那我们开始 Hello World的编程吧
首先送上代码

#include <iostream>
#include<omp.h>  //这就是OpemMP的头文件 只要按上述配置好就行
using namespace std;
int main()
{
    int tid;//定义线程号
    omp_set_num_threads(4);//设置四个线程
    /*并行区域开始*/
    #progma omp parallel private(tid)
    {
         tid=omp_get_thread_num;
         cout<<"This is No.  “<<tid<<"thread"<<endl;
         cout<<"Hello World"<<endl;
    }
    return 0;
}

这里,在我第一尝试的时候,出现了”C++/CLI、C++/CX或OpenMP不支持两阶段名称查找“的报错,那么大家只需要 项目->属性->C/C+±>语言->符合模式:否 就可解决问题。

现在我们来看看结果:OpenMP学习日记(一)
似乎好像和我们常规想象的形式不一样。
我们可能会认为应该是
This is No.0 thread
Hello World!
This is No.1 thread
Hello World!..
这里就是并行计算和串行计算的区别了
我理解的是,我们以为的输出形式其实可以理解成一个For循环,但实际上处理时还是按顺序一个个来处理。而并行计算,也就意味着,多个处理器同时处理。之前是一个人跑400m,现在是4个人均跑100m。那么也就没有了所谓的顺序,谁都有可能是在最前面的,也有可能之前在前面后面被反超了。

关于OpenMP相关基础知识,将在后续有空时间继续扩展,同时,我也要多去学习相关内容,毕竟我也是第一次接触,也不太懂。

好啦,第一篇博文就这样结束了,虽然好像没啥干货,但还是整出了个Hello world!

OpenMP学习日记(一)OpenMP学习日记(一) 刘绉绉 发布了1 篇原创文章 · 获赞 0 · 访问量 31 私信 关注
上一篇:MP算法和OMP算法及其思想


下一篇:UBT20:ubuntu安装火焰截图