OpenMP并行程序设计——Eclipse开发环境的搭建

         转载请声明出处:http://blog.csdn.net/zhongkejingwang/article/details/40018735

     最近正在听一门叫并行程序设计的课程,课上介绍了程序并行化的分析以及OpenMP的使用,在C/C++代码中使用OpenMP可以将程序代码中比较耗时的操作(如循环体)并行化,感觉就是编译器在编译的时候对代码做了处理,开多个线程执行同一块代码段,至于能否并行处理需要分析代码语句间的依赖关系(主要就是流依赖和反依赖关系),在最新的gcc4.9.1编译器中已经支持OpenMP v4.0标准了

 

   看起来挺好玩的,而且连gcc都支持了,果断捣鼓一下。关于OpenMP的相关知识可以自行google学习,官网在这里http://openmp.org/wp/。还有另一种用得比较多的并行编程技术MPI,搭建MPI开发环境也是挺麻烦的,下一篇文章将讲解在Eclipse上搭建MPI开发环境。本文将介绍如何在Eclipse上编写OpenMP的并行程序。


  首先,下载这个版本的Eclipse:http://www.eclipse.org/downloads/packages/eclipse-parallel-application-developers/lunasr1

    这个版本要求jdk1.7以上,所以可以到这里下载最新的jdk:http://www.oracle.com/technetwork/java/javase/downloads/index.html

     安装完了jdk在cmd窗口输入javac命令看能不能识别,如果显示不是命令则需要配置JAVA_HOME,百度一下怎么配置吧。能识别javac命令并打印出来一堆东西的话就不用配置了。

   jdk安装配置完了如果运行不了上面的Eclipse,把eclipse文件夹里的eclipse.ini里最后两个参数改小一点:

                                

我这里是512和1024,可以都改成512试试。


   eclipse准备完毕了,然后下载这个版本的gcc:http://tdm-gcc.tdragon.net/download

     下载的时候看清楚32位和64位的。

   下载完了点击安装,我的安装路径是C:\TDM-GCC-64:


这时候在cmd输入gcc回车如果提示没有输入文件就没有问题了,否则自己在环境变量里path添加路径。


接下来,最重要的一步:

      下载http://tdm-gcc.tdragon.net/download网站里的这个包含OpenMP库的压缩包:

32位系统的下载这个:


64位系统下载这个:


下载完了后解压看到这些文件:


将这些文件全部选择,复制。在这里粘贴:


选择是,合并文件夹。

到这里就已经完成OpenMP开发环境的搭建了,接下来打开Eclipse新建一个OpenMP应用程序吧~~


选择OpenMP工程,在这里新建的是C语言的工程,编译用的gcc,后面会讲到怎么在C++工程里也是用OpenMP。


然后右键工程,Build Project:


接下来右键Run As:


看看输出结果吧~~




上面只是一个初步介绍,不知道有没有发现在新建工程时没有提供C++ OpenMP选项,如果要在C++工程中使用OpenMP怎么办呢?其实在新建项目的时候没有必要按照上面的要求来,可以新建一个任意的C或C++工程。只要设置编译和链接参数即可。接下来新建一个C++ HelloWorld程序并使用OpenMP。

  在刚才新建项目的选项中选择Hello World C++ Project:

                                                                           

  把源文件代码改成这样:

#include <omp.h>
#include <iostream>
using namespace std;

int main() {
	omp_set_num_threads(4);
#pragma omp parallel
	cout << "!!!Hello World!!! from thread " << omp_get_thread_num() << endl; // prints !!!Hello World!!!
	return 0;
}

然后右键工程—>属性(Properties),在下面这里选择C++编译器,在g++后面加入编译参数

(注意"-fopenmp"和"g++"之间有个空格!)


同样,在C++链接器里也需要加入同样的参数:


OK之后就可以build项目然后运行了~~

猜你喜欢

转载自blog.csdn.net/zhongkejingwang/article/details/40018735