OpenMP并行程序设计——Eclipse开发环境的搭建
来源:互联网 发布:剑灵火炮兰数据 编辑:程序博客网 时间:2024/06/06 01:09
转载请声明出处: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 parallelcout << "!!!Hello World!!! from thread " << omp_get_thread_num() << endl; // prints !!!Hello World!!!return 0;}
然后右键工程—>属性(Properties),在下面这里选择C++编译器,在g++后面加入编译参数
(注意"-fopenmp"和"g++"之间有个空格!)
同样,在C++链接器里也需要加入同样的参数:
OK之后就可以build项目然后运行了~~
- OpenMP并行程序设计——Eclipse开发环境的搭建
- MPI并行程序设计——Eclipse开发环境的搭建
- Fedora20搭建OpenMP和MPICH3并行开发环境
- OpenMP: OpenMP并行程序设计
- OpenMP并行程序设计——for循环并行化详解
- OpenMP并行程序设计——for循环并行化详解
- OpenMP并行程序设计——for循环并行化详解
- OpenMP并行程序设计——for循环并行化详解
- OpenMP并行程序设计——for循环并行化详解
- OpenMP并行程序设计——for循环并行化详解
- OpenMP并行程序设计——for循环并行化详解
- OpenMP并行程序设计——for循环并行化详解
- OpenMP并行程序设计——for循环并行化详解
- OpenMP并行程序设计——for循环并行化详解
- OpenMP并行程序设计—for循环并行化详解
- OpenMP并行程序设计
- C++ OpenMP并行程序设计
- OpenMP并行程序设计
- C/C++中Static的作用详述
- Java NIO系列教程(八) SocketChannel
- Linux系统分析工具之vmstat,free,ping(三)
- ZOJ 3819 Average Score (2014牡丹江区域赛)
- C++判断字符串是否为数字
- OpenMP并行程序设计——Eclipse开发环境的搭建
- Linux系统分析工具之nicstat,dstat(四)
- 追求与混日子
- 【Socket编程】套接字Windows平台C语言实现
- Java NIO系列教程(九) ServerSocketChannel
- 第七周项目三(3)求周工资
- 作业
- CGI,FastCGI的区别
- Github安卓开源项目编译运行