OpenMP编程学习笔记一

  前段时间,我工作的台式机换成了PC 工作站。除了有6G内存,64位外,而且是4核的。刚好这段时间工作上没有什么事情,于是开始学习多核与并行编程。以前做了很长时间的单核多线程编程,所以对多核多线程编程很是期待。今天,在VS2008与Linux下,分别测试了openMP的简单例子,对多核编程有了一点直观认识。

 

测试例子test.cpp为:

 

#include <stdio.h>

#include <omp.h>

 

int main()

{

    omp_set_num_threads(4); //my workstation has 4 cores

    #pragma omp parallel for

    for(int i =0; i < 20; i++)

    {

        printf("i = %d/n", i);

    }

 

    return 0;

}

 

VS2008缺省编译不支持openMP, 需要在properties -> C/C++ -> Language -> OpenMP Support设置(参见贴图)。

Linux下编译方法为:g++ -fopenmp test.cpp

 

一种运行结果为:

i = 5
i = 6
i = 7
i = 8
i = 9


i = 0
i = 1
i = 2
i = 3
i = 4


i = 10
i = 11
i = 12

i = 13

i = 14

 

i = 15
i = 16
i = 17
i = 18
i = 19

 

可以看出结果与串行执行结果是不同的,整个任务被平均分配给了4个core,4个core同步执行。这是物理意义上的同步执行,不同于单核的进程线程切换。

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值