这学期学习并行计算,感觉挺有趣的,openMP是一种基于线程的并行编程模型。首先要求该计算机拥有多个CPU,不然写并行程序并不能给程序带来运行速度上的提升。所有的openMP并行程序都开始与一个单独的主线程,中间会有一个或多个并行域。编程的时候一般是先写出串行程序,验证正确后,再一句一句改写成并行程序。
推荐书籍有入门书:陈国良院士编著的《并行计算----结构·算法·编程》,以及关于openMP的详尽信息网址:http://www.openmp.,org。
我就不再说openMP的历史等一些概念性的东西了,直接进入正题。
首先当然是搭建环境了,支持openMP的IDE很多,由于学校的超级计算机装了VS2013,所以这里我也就使用了VS2013。下载安装的事我就不说了,官网有免费版。
首先,打开VS2013,创建新项目,输入项目名称,如下图,点击确定,再下一步
在这一步中选择空项目,如下图,再点击完成。
右键点击该项目,选择属性,如下图,在“openMP支持”右边选择“是” -> 确定。
接下来,在源文件中右键,选择添加->新建项,新建一个C++文件。至此就可以在该C++文件中编辑并行代码了。
下面是一段简单的测试代码,
#include<omp.h>
#include<stdio.h>
int main()
{
omp_set_num_threads(4);
#pragma omp parallel
{
int tid = omp_get_thread_num();
printf("Hello World from OMP thread %d\n", tid);
if (tid == 0)
{
printf("I am the first thread\n");
}
}
return 0;
}
其中一次运行结果如下,由于我分配给线程0的任务多于其它线程,所以线程0执行完成比较慢。每次运行结果有一定概率是不同的。

本文介绍了作者学习OpenMP并行计算的过程,强调了OpenMP需在多CPU环境下运行以提升程序速度。通过创建VS2013项目并启用OpenMP支持,详细描述了如何设置开发环境,并提供了一个简单的测试代码作为起点。
4076

被折叠的 条评论
为什么被折叠?



