【VC++开源代码栏目提醒】:本文主要为网学会员提供“Windows环境下基于Eclipse的MPI编程环境配置 - 其它论文”,希望对需要Windows环境下基于Eclipse的MPI编程环境配置 - 其它论文网友有所帮助,学习一下!
Windows环境下基于Eclipse的MPI编程环境配置摘要:对当前并行程序开发工具存在的问题进行了分析。
结合并行开发环境的迫切需求,给出了一种windows 环境下,以
开源项目 Eclipse 作为开发平台,以 MinGW 作为 GUN 的 C/C编译器的 MPI 并行程序开发平台的搭建方法。
并给出了该环境下的开发实例和测试。
关键词:Eclipse;并行开发环境;MinGW;MPI Configuration of Develop Platform in Windows based on EclipseAbstract: Problems of parallel develop platform are firstly analyzed. With the urgent requirement of paralleldevelop platform the configuration of MPI parallel develop platform based on open resource project Eclipse inwindows is given and the platform has a C/C complier based on MinGW. At last a develop example and test inthis platform are also presented.Key
words: Eclipse Parallel Develop platform MinGW MPI1 引言 当前适用于各种平台、环境的并行算法得到了蓬勃的发展,针对并行计算硬件体系结构及并行应用自身特点出现了大量功能和操作风格迥异的并行开发工具环境,从基于命令行和文字编辑器的简单原始开发 。
这些工具良莠不齐,并且有着各自不同的适用场合,使工具到以可视化为基础的集成化开发环境(IDE)并行程序员必须随着需要解决的
问题和最终运行环境的变化而不得不使用各种不同的开发工具,由此造成高性能应用软件开发高投入低产出的尴尬局面。
开源项目被认为是解决并行开发工具多样性的有效途径之一。
尤其是
开源的框架式平台 Eclipse 的出现和成熟,它所具备的
开源特性和跨平台特点具有集成并行软件开发工具的天然优势。
本文给出了 windows 环境下,使用
开源开发工具 Eclipse,以 MinGW 作为 CC编译器,以 gdb 作为调试器,结合 MPICH 的一个并行程序开发环境的配置思想和方法,该思想可以移植到 Linux 等其它平台上。
采用此开发平台可以方便的在 windows 下开发调试 MPI 程序,而方便的移植到 Linux 上运行。
2 相关工具及其准备2.1 Eclipse 框架 2001 年 11 月,IBM 向
开源社区捐献了 Eclipse
代码,自此 Eclipse 在开发者社区得到飞速发展。
Eclipse是一种基于 Java 的可扩展
开源开发平台。
就其自身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
Eclipse 附带了一个标准的 Java 开发工具(Java Development Tools,JDT) 但 插件集。
Eclipse的目标却不仅限于此。
由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于
Java 开发工具。
尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C和 COBOL 等编程语言的插件已经可用。
Eclipse 框架还可用来作为与
软件开发无关的其他应用程序类型的基础,比如内容
管理系统。
,这些插件可支持多种项目,比如JDT和PDE1。
Eclipse平台具有一组功能强大的插件(如图 1) IDE 文本 比较 调试 查找 团队/CVS 帮助 更新 文本编辑 IDE 个性化 一般性工作台 资源 JFace 运行时库 SWT OSGi 图1 Eclipse 平台体系结构简化图 图中深灰色的部分代表的是 Eclipse 的富客户机平台Rich Client Platform,RCP的核心组件。
可以将RCP 简单地视为 Eclipse 的一组插件,人们可用这些插件来开发应用程序。
图中白色所标示的部分代表的是可包含到基于 RCP 的应用程序中的可选(但建议包含)部件。
而淡灰色部分所示的部件则完全可选。
Eclipse平台为工具提供者提供一种机制,使得各种工具能够无缝集成。
这些机制通过 PAI 接口、类和方法来体现。
Eclipse 平台负责处理基本环境的后台工作,并提供标准的用户
导航模型。
2.2 CDT 插件 C 和 C语言都是世界上最流行且使用最普遍的编程语言之一,也是 MPI 的宿主语言之一。
要使用 C或者 C进行 MPI 并行程序设计,首先要求 Eclipse 平台提供对 C/C开发的支持。
因为 Eclipse 平台只是用于开发者工具的一个框架,它不直接支持 C/C;它使用外部插件来提供支持。
CDT 项目致力于为 Eclipse 平台提供功能完全的 C/C集成开发环境。
虽然该项目的重点是 Linux,但 、QNX Neutrino 和它在可使用 GNU 开发者工具的所有环境(包括 Win32(Win 95/98/Me/NT/2000 /XP)Solaris 平台)中都能工作。
CDT 是完全用 Java 实现的开放源码项目,它作为 Eclipse SDK 平台的一组插件。
这些插件将 C/C透视图添加到 Eclipse
工作台(Workbench)中,使得 Eclipse 可以用许多视图和向导以及高级编辑和调试支持来支持 C/C开发。
2.3 MinGW MinGW,即 Minimalist GNU For Windows。
它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。
在基本层,MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准 C 运行时库(MSVCRT.DLL)该库在所有的 Windows NT 操作系统上有效,在所有的 Windows 95 发行版以上的操作系统有效,使用基本运行时,可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时扩展。
该功能是 Windows32 API 不具备的。
下一个组成部分是 w32 api 包,它是一组可以使用 Windows32 API 的包含文件和端口库。
与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 Windows32 API 功能。
MinGW 为那些不喜欢工作在 LinuxFreeBSD操作
系统而留在 Windows 的人提供一套符合 GNU 的工作环境。
2.4 MPI 近年来,消息传递接口 MPI(Messaging Passing Interface)以其强大的功能、完备的消息传递 API 和跨平台的移植特性,综合了各种消息传递通信库行之有效的标准,已经成为基于消息传递(MP)机制的并行编程领域事实上的标准。
MPI的实现包括MPICH、LAM、IBM MPL等多个版本,最
常用和稳定的是MPICH2。
MPICH含三层结构,最 上层是MPI的 API,基 本是点 到点通 信, 和在点 到 点通信 基础上 构造 的集群 通 信(Collective ;中间层是ADI层(Abstract Device Interface)Communication) ,其中Device可以简单地理解为某一种底层通信库,ADI就是对各种不同的底层
通信库的不同接口的统一标准;底层是具体的底层通信库,例如工作站机群上的p4 通信库等。
MPI 主要特点是通信原语处于较低的抽象级别,可以对并行编程的实施细节进行显式控制以达到最佳的性能要求。
从另一角度看为维护性能和功能的完整性,MPI 函数繁多到版本 2.0 己多达 200 多个函数,给程序员编程带来很大困难,甚至开发人员都难以维护其标准,致使程序开发过程过度复杂化。
那么也就亟待有一个方便有效的 MPI 程序开发、调试与运行环境。
3 windows 环境下基于 Eclipse 的 MPI 编程环境配置3.1 软件及插件收集 本文使用的各种工具与插件版本如下其它版本也可以,但是要注意查看兼容性,下载 eclipse 和插件的时候可以先查看 readme.txt 文件上的说明: 1. JDK:jdk-1_5_0_07 稳定版,1.5 以上版本应该也可以,但是注意一定要使用稳定版,如果是 版,在使用 CDT 插件的时候可能会出现问题。
2. Eclipse:eclipse-SDK-3.2.1-win32。
3. CDT:org.eclipse.cdt.sdk-3.1.2-win32.x86。
4. MPICH:mpich2-1.0.5p2-win32-ia32 5. MinGW:MinGW-5.1.3 6. gdb:gdb-5.2.1-1 7. Astyle:astyle_1.203.2 详细配置 但真正在并行程序的测试和运行时主要还是在 Linux 环境下, 虽然 MPICH 同时有 Linux 和 windows 版,而对于高性能计算的科研和应用人员来说,还是比较习惯在 windows 环境下做并行程序的开发和调试。
本文给出在 windows 环境下使用目前主流的
开源项目 Eclipse 作为开发工具,使用 MinGW 模拟 Linux 环境的C/C编译器的 MPICH 并行
程序编程环境的一种配置
方案。
该环境下可以方便的在 windows 下开发调试MPI 程序,调试正确以后可以直接移植到 Linux 环境运行,项目、程序都不需要做任何修改。
配置步骤如下:1. 下载安装 JDK。
假设安装目录为:D:jdk。
2. 安装 Eclipse。
Eclipse 直接解
压缩即可使用,假设解压目录为:D:eclipse。
3. 安装 MPICH。
假设安装目录为:D:mpich。
4. 安装 CDT。
采用连接文件法安装 CDT 插件: 将 org.eclipse.cdt.sdk-3.1.2-win32.x86 解压,假设放至 D:eclipsemyplugins 目录下。
目录自建 在 Eclipse 主目录即 d:eclipse 下建立一个新目录 links,在 links 目录下建立一个文件 cdt.link。
cdt.link 内容为:pathD:eclipsemypluginscdt.sdk-3. 1.2-win32.x86 即 CDT 插件的解压目录。
新建 Eclipse 启动的快捷方式,并加上启动参数–clean。
clean 启动参数要求 Eclipse 刷新所有插件。
其它 Eclipse 插件安装也可仿照该法,可以方便安装和卸载。
5. 安装 MinGW 和 gdb。
为了方便 MPI 程序移植至 Linux 平台,采用 MinGW 作为编译器,MinGW-5.0.2.exe 很小,启动这个程序会到
网络上下载你要安装的程序,这里只需要在安装的过程中选择 g和 make 文件下载安装就可以了, 需要单独下载,但是调试用的 gdb 不在里面, 假设 MinGW 的安装路径是 D:MinGW, 也就是 gdb-5.2.1-1.exe。
再将 gdb 安装到 MinGW 安装的路径中。
然后,将 MinGW 目录下的 bin 目录里的 mingw32-make.exe 改名为 make.exe。
修改 windows 环境变量 PATHD:MinGWbin PATH。
最后,启动 eclipse,在窗口-首选项下展开 C/C-make- new make project 页面: 将 Make Builder 选项卡下的 Build command 改为 make。
图 2 添加环境路径 添加 MinGW 相关环境路径。
如图 2 所示。
修改二进制解析器为 PE Windows Parser。
6. 安装 astyle。
将 astyle 解压至相应目录,假设为 D:eclipseothertools astyle_1.20AStyle。
启动 eclipse,启动运行菜单下的外部工具,进行相应设置,如图 3 所示。
图 3 Astyle 配置图3.3MPICH 程序配置与测试1. 新建 managed maked C Project。
项目名称假设为 C。
在项目属性中的 C/C Buider 选项卡下做如下修改: 指定 MPICH 的 include 目录,如图 4 所示。
图 4 指定 MPICH 的 include 目录图 指定 MPICH 的 lib 目录,并指明使用 mpi 库,如图 5 所示。
图 5 指定 MPICH 的 lib 目录和 mpi 库2. 在上述项目中新建一个源文件 pi.c。
并将 D:mpichexamples 目录下的 icpi.c 程序
代码拷贝进 pi.c,这是一 个计算圆周率近似值的 mpi 程序3。
保存程序,eclipse 会自动编译连接程序,生成可执行程序 c.exe。
3. 在 c.exe 的右键菜单里选择 Run as-Run local c/c application 就能在 console 里看到运行的结果了。
4. 可以直接设置断点,并在在 c.exe 的右键菜单里选择 Debug as-Debug local c/c application 就能进行单步 调试 mpi 程序了。
5. 当然也可以使用 mpiexec 直接模拟并行执行以上 c.exe。
如图 6 所示。
图 6 mpiexec 并行运行 MPI 程序结果6. linux 环境下可以参考以上配置进行完全相同的环境配置,由于开发环境 eclipse 的可移植性,这样, windows 下的 mpich 项目就可以直接移植到
linux 环境,并编译运行。
4 结论 本文给出了 windows 环境下,使用
开源项目 Eclipse 作为开发工具,以 MinGW 模拟 GUN 的 CC编译器,结合 MPICH 的一个并行程序开发环境的配置思想和方法,并给出了一个在该开发环境下开发、调试并行程序的实例。
该环境的配置思路和方法可以方便的移植到 Linux 等其它平台上。
参考文献:1 Eclipse Foundation Inc. What is EclipseEB/OL. http://www.eclipse.org/home/newcomers.php 20072 The Message Passing Interface MPI standardEB/OL. http://www-unix.mcs.anl.gov/mpi/ 20063 都志辉. 高性能计算并行编程技术----MPI 并行程序
设计M. 北京:清华大学出版社 2001指定 MPICH 的 include 目录指定 MPICH 的 lib 目录使用 mpiexec 直接模拟并行执行以上 c.exempiexec -n 4 cMPICH 编译:一.系统环境变量设置 否则找不到 mpi.hMINGW_PATHE:/MinGWC_INCLUDE_PATHMINGW_PATH/includeMINGW_PATH/lib/gcc/mingw32/4.5.2/includeMINGW_PATH/lib/gcc/mingw32/4.5.2/include-fixedE:/boost/MPICH2/mpich2-ia32/includeCPLUS_INCLUDE_PATHMINGW_PATH/lib/gcc/mingw32/4.5.2/include/cMINGW_PATH/lib/gcc/mingw32/4.5.2/include/c/backwardMINGW_PATHlib/gcc/mingw32/4.5.2/include/c/mingw32C_INCLUDE_PATHLIBRARY_PATHMINGW_PATH/libMINGW_PATH/lib/gcc/mingw32/4.5.2E:/boost/MPICH2/mpich2-ia32/lib二.编译命令1. gcc 不带 ICU 编译:还未使用 MinGW 成功编译 ICUbjam stage --toolsetgcc --debug-configuration --without-python --stagedirE:boostboost_1_48_0gcclinkstatic runtime-linkshared runtime-linkstatic threadingmulti debug release2. VS2010 带 ICU 编译:bjam stage --toolsetmsvc-10.0 --with-regex -sHAVE_ICU1-sICU_PATHE:boosticu4cicu4c-4_8_1_1-Win32 --stagedirE:boostboost_1_48_0VS2010_iculinkstatic runtime-linkshared runtime-linkstatic threadingmulti debug release3. 修改此文件,编译带 MPI:E:boostboost_1_48_0toolsbuildv2user-config.jamusing mpi : : lammpio lammpi mpi lam dl