分类: 系统运维
2010-07-08 10:24:39
默认分类 2008-08-18 18:02:56 阅读271 评论0 字号:大中小
近日又捡起并行编程了,都忘了怎么配置集成环境了,搞了一阵子才成功,搜了网上的一些资料和以前自己搜集的资料,现在把过程写下来吧。
所用的软件:mpich2-1.0.5-win32-ia32.msi
Compaq Visual Fortran 6.6
1、如果本机上没有安装过Microsoft .NET .Framework,安装1.0.5这个版本的mpich2时,那么会提示你安装, 我装的是2.0版本dotnetfx.exe,2.0版本以上的都行,然后把mpich2-1.0.5装上。
2、mpich2安装成功后,为了使用命令行方式执行程序的方便,将mpi路径C:\ProgramFiles\MPICH2\bin添加到环境变量path中,这样就可以在任何地方使用mpiexec了。
3、CVF安装没什么,就是序列号老记不住,再写一遍,33206-050-0010743-00007。然后将mpich2的include和lib路径添加到CVF的搜索路径,在Tools=>Options=>Directories的Include files和Library files中。
4、解决头文件问题。
在fortran77的固定格式程序中,要加入一行 include 'mpif.h' ,头文件 mpif.h 中定义了MPI的一些常量。90程序就有点麻烦了,因为在fortran90程序中,习惯使用module,书上也说在90程序中要用 use mpi 来替代 include 'mpif.h' ,可是mpich2-1.0.5中的lib和include文件夹里都没有那个 mpi.mod ,其他的mpich版本好像也没有,至少mpich.nt.1.2.5.exe没有。
解决办法:
1)、在90程序中也使用 include 'mpif.h' ,而且要把mpif.h中以C开头的注释前加上!,还有三行以CDEC$开头,也要用!来注释,不然出错。这中解决办法会更改mpif.h文件,那么再写77程序时是不是还要改回来呢,我试了helloworld程序,不改回来的话,77程序倒也不出错。
2)、参考了网上的资料,自己做一个mpi.mod文件,写这样一段程序:
module mpi
! include 'mpif.h'
! ****************
end module mpi
program main
end
将mpif.h文件中的内容都复制到星号处,并且也将以C开头的行改成前加上!。然后到debug目录下就找到了一个mpi.mod文件,将其拷贝到mpich的include目录下,再写90程序时就可以用 use mpi 了。当然也可以弄一个release模式的,不过我连接时有两个警告,还没弄明白怎么回事。
5、CVF编译连接选项的配置
主要看了一篇官方文档,是在下载mpich时一起下载的。这里主要的步骤是红色字标出的,其他的选项不做也能成功编译连接,当然最好还是都改了。
A. C/C++ Tab – CATEGORY: Preprocessor
Add “C:\mpich2\include” to the “Additional include directories” box.
B. Link Tab – CATEGORY: Input
· Add “C:\mpich2\lib” to the “Additional library path”.
· Add “cxx.lib”, “mpi.lib”, “fmpich2.lib”, “fmpich2s.lib”, and “fmpich2g.lib” to the end of the “Object/library modules” box.
· “cxxd.lib” should be used for the Debug configuration.
其实这里只填 fmpich2s.lib 就可以了,当然最好都填上吧。而且可以不在 Link=>Gaegory : Input 这个选项卡上改,而是在程序文件的开始处加上一行:!DEC$ OBJCOMMENT LBI:"fmpich2s.lib" 这样程序的可移植性更好。
C. Fortran Tab – CATEGORY: External Procedures
· Argument Passing Conventions: C, by reference
· String length argument passing: After all args
D. Fortran Tab – CATEGORY: Preprocessor
· Predefined Preprocessor Symbols: MPI (add this to what is there).
(This is only really needed if preprocessing is done, but won’t hurt to add.)
· INCLUDE and USE Paths: C:\mpich2\include
· Select Use FPP
6、每新建一个工程,都要像5中那样去设置选项,很是麻烦。在CVF这里可以保存下这些设置。点击菜单File=>Save Fortran Environment,点击Save Environment按钮,即保存一个新的环境(可以给一个名称),这样就可以在进行并行程序设计的时候,较为方便地使用这一编译环境,举例如下:
(1) 点击菜单File->New... ;
(2) 在Projects标签中选择Fortran Console Application,然后再右侧输入框中给出项目的名称,点击OK;
(3) 在接下来的对话框中选择An empty project,点击Finish。这时会弹出对话框 ”Would you like to consider applying options from a Saved Fortran Console Environments? ”,点“是” ;
(4) 在对话框中List of Console Environment中,选择前面准备好的环境名称,点击Apply按钮,并确认;
(5) 在接下来的对话框中直接点击OK。