您的位置:首页 > 运维架构

一起来学OpenMP(1)——初体验

2016-11-17 14:14 323 查看
转载自新浪博文:http://blog.sina.com.cn/s/blog_57562d890100xj3i.html

OpenMP是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程语言。

我的开发环境是Windows、VS2008、双核处理器。

1. 在VS2008程序目录下找到vcomp90d.dll文件,并复制到windows/system32/目录下。

2. 创建一个名为OpenMP的空控制台工程(即没有VS2008不会生成任何文件)

3. 添加一个名为OpenMP.cpp的源文件

4. “工程属性->C/C++->OpenMP支持”设置如下图:

5. 简单的OpenMP代码。

[cpp] view plaincopyprint?

#include <iostream>

#include <stdio.h>

#include <omp.h> // OpenMP编程需要包含的头文件

int main()

{

#pragma omp parallel for

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

{

std::cout << i << std::endl;

}

return 0;

};

执行结果如下:

可以看到,i从0至9的循环任务被分配到两个核上,第一个核执行了0~4,第二个核执行了5~9。

6. 小节

通过#pragma omp预处理指示符指定要采用OpenMP,这里通过#pragma omp parallel for来指定下方的for循环采用多线程执行,此时编译器会根据CPU的个数来创建线程数,对于双核系统,编译器会默认创建两个线程执行并行区域的代码。

#pragma omp有许多用法,后续一一介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openMP