OpenMP学习日记(一)

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

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

如何配置?
如果你电脑中装有VS,那么只需要右键项目->属性->C/C+±>语言 具体如图在这里插入图片描述
那我们开始 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+±>语言->符合模式:否 就可解决问题。

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值