您的位置:首页 > 编程语言

OpenMP编程学习笔记一

2010-05-18 15:16 260 查看
前段时间,我工作的台式机换成了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同步执行。这是物理意义上的同步执行,不同于单核的进程线程切换。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: