2023年11月27日发(作者:)
Compaq Visual Fortran 6.6 并行编程环境的配置
Windows平台并行编程环境的配置
所用的软件:
Compaq Visual Fortran 6.6
1、如果本机上没有安装过Microsoft .NET .Framework,安装1.0.5这个版本的
mpich2时,那么会提示你安装, 我装的是2.0版本,2.0版本以上
的都行,然后把mpich2-1.0.5装上。
2、mpich2安装成功后,为了使用命令行方式执行程序的方便,将mpi路径
C:ProgramFilesMPICH2bin添加到环境变量path中,这样就可以在任何地方使
用mpiexec了。
3、CVF安装没什么,就是序列号老记不住,再写一遍,33206--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文件夹里都没有那个 ,
其他的mpich版本好像也没有,至少没有。
解决办法:
1)、在90程序中也使用 include 'mpif.h' ,而且要把mpif.h中以C
开头的注释前加上!,还有三行以CDEC$开头,也要用!来注释,不然出错。
这中解决办法会更改mpif.h文件,那么再写77程序时是不是还要改回来呢,我
试了helloworld程序,不改回来的话,77程序倒也不出错。
2)、参考了网上的资料,自己做一个文件,写这样一段
程序:
module mpi
! include 'mpif.h'
! ****************
end module mpi
program main
end
将mpif.h文件中的内容都复制到星号处,并且也将以C开头的行改成前加上!。
然后到debug目录下就找到了一个文件,将其拷贝到mpich的include
目录下,再写90程序时就可以用 use mpi 了。当然也可以弄一个release模式的,
不过我连接时有两个警告,还没弄明白怎么回事。
5、CVF编译连接选项的配置
主要看了一篇官方文档,是在下载mpich时一起下载的。这里主
要的步骤是红色字标出的,其他的选项不做也能成功编译连接,当然最好还是都
改了。
A.C/C++ Tab – CATEGORY: Preprocessor
Add “C:mpich2include” to the “Additional include directories” box.
B.Link Tab – CATEGORY: Input
·Add “C:mpich2lib” to the “Additional library path”.
·Add “”, “”, “”, “”, and
“” to the end of the “Object/library modules” box.
·“” should be used for the Debug configuration.
其实这里只填 就可以了,当然最好都填上吧。而且可以不在
Link=>Gaegory : Input 这个选项卡上改,而是在程序文件的开始处加上一
行:!DEC$ OBJCOMMENT LBI:"" 这样程序的可移植性更好。
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:mpich2include
·Select Use FPP
6、每新建一个工程,都要像5中那样去设置选项,很是麻烦。在CVF这里可以
保存下这些设置。点击菜单File=>Save Fortran Environment,点击Save
Environment按钮,即保存一个新的环境(可以给一个名称),这样就可以在进
行并行程序设计的时候,较为方便地使用这一编译环境,举例如下:
(1) 点击菜单 ;
(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。
/////////////////////////////
很多Windows用户在应用并行环境时,发现对工程的设置非常麻烦,其实这
一问题可以容易的解决。本文将就Compaq Visual Fortran 6.5环境中如何实现
MPICH2并行计算做一简单的介绍。
首先,介绍一下MPICH2的安装,MPICH2可以在以下网站免费下载
/mpi/mpich2/,我下载的是Win32 IA32平台的安装程
序
/mpi/mpich2/downloads/
i 。在Windows下安装此程序即可,其默认安装目录为c:program filesmpich2。
在此目录下有四个子目录,分别为bin,example,include和lib。其中bin目录
下有两个执行文件,和。在后面将介绍其应用。 在“我的
电脑”环境变量设置中将bin目录写入路径path变量,这样就可以在任何地方执
行此目录下的文件了(或者,你可以将其copy到工作目录,如果你不闲烦的话 )。
其次,设置CVF6.5环境,这一步需要将MPICH2的include和lib目录写进
CVF6.5的搜索目录。其做法请参考设置过程图解 ,其中需要注意的
是将图解中的对应目录换成MPICH2目录下的include和lib。设置完成后,将本
压缩包中文件拷贝到MPICH2目录下的include子目录下。
是我自己编写的一个接口程序,用于简化CVF6.5与MPICH2之间
的环境设置,此程序必需放在正确的地方。
最后,介绍如何运行并行程序。在本压缩包中有一个FORTRAN编码的例
子hello.f90,此程序可以在CVF6.5环境下直接进行编译。注意,以后所有的并行
程序的最前面必需加上“use mpich2”这一行。这样才能正确编译并行程序。编译
好后,会在当前工作目录的子目录debug下找到可执行文件。在DOS
命令行模式下,进入debug目录,首先键入“smpd”回车,这样开始调用并行运行
服务,再执行“mpiexec –n 5 hello”,就可以看到程序的运行结果。当然,
这里的“5”是节点的个数,你可以更改此值,自己进行尝试。Ok,恭喜你,现在
你已经可以运行一个完整的并行程序了。要想成为高手,还要不断努力。Good
luck。
MPICH安装
这里仅针对使用Digital Visual Fortran 6.x编译器的情况对MPICH安装程序所附
的说明文档作补充说明。对于Visual C++ 6.0编译器的情况仅提供参考。
1. 安装
运行安装时,建议完全安装。运行完毕后,进行下面操作:
(1) 将{MPICH_root}SdkInclude和{MPICH_root}SdkLib目录下的所有文件
分别拷贝到{Microsoft Visual Studio}Df98Include和{Microsoft
Visual Studio}Df98Lib目录下;
(2) 将{MPICH_root}RemoteShellBin加入到系统的PATH环境变量中。
2. 编译、链接MPI应用程序
为了方便使用Visual Fortran 6.x编译器进行并行程序编译链接,在第一次使
用其编译程序前,可以增加一个Fortran项目环境:
(1) 点击菜单;
(2) 在Projects标签中选择Fortran Console Application,然后再右侧输入框中
填入新项目的名称,点击OK;
(3) 在接下来的对话框中选择An empty project,点击Finish;
(4) 在接下来的对话框中直接点击OK;
(5) 点击菜单,进行下面操作:
I) 在setting for中,选择Win32 debug;
II) 选择Fortran标签,进行下面操作:
i) 在Category一栏中选择“External Procedures”;
ii) 在“Argument Passing”一栏中选择“C, By Reference”;
iii) 在“String Length Argument”一栏中选择“After All Args”;
III) 选择Link标签,进行下面操作:
i) 在Category一栏中选择“General”;
ii) 在Object/library modules中,添加ws2_、、、
,各库文件间用空格分开;
IV) 在setting for中,选择Win32 release;
V) 重复II)、III)的操作,只是库文件变为:ws2_、、
、;
VI) 点击OK。
(6) 点击菜单File->Save Fortran Environment;
(7) 点击Save Environment按钮,即保存一个新的环境(可以给一个名称);
(8) 关闭这个项目文件,并删除这个项目文件。
这样就可以在进行并行程序设计的时候,较为方便地使用这一编译环境,举
例如下:
1) 点击菜单;
2) 在Projects标签中选择Fortran Console Application,然后再右侧输入框中
给出项目的名称,点击OK;
3) 在接下来的对话框中选择An empty project,并选中复选框“There are saved
Fortran Console environments. Would you like to consider applying options from one
of them?”,点击Finish;
4) 在对话框中List of Console Environment中,选择前面准备好的环境名称,
点击Apply按钮,并确认;
5) 在接下来的对话框中直接点击OK;
在这个项目中就可以进行并行程序的开发。特别指出的是,在源程序中必须
添加语句“include 'mpif.h'”。
3. 运行MPI应用程序
对于已经编译好的MPI程序,若只启动一个进程,则可以直接键入程序名,
回车,即可运行。若启动多个进程则需要执行mpirun。具体用法可由命令提示
符下直接执行该命令获得。
对于只准备在单机上,进行调试的用户,相对容易。只需要键入mpirun -np
#numproc <程序名>,或者键入mpirun -localonly #numproc <程序名>,即可。
(#numproc指的是准备启动的进程数)
对于在多台机器上进行计算,需要进行下面的操作来建立环境:(这里假设
用户没有安装NFS)
(1) 确认在每台机器上都安装了这个程序包,最少是安装了远程调用的程序
和必须得动态库。
(2) 确认在每台机器上都启动了RemoteShellServer。可以通过控制面板->服
务,来检查,推荐将这个服务设为自动,可以减少以后的维护。
(3) 运行程序。这里分几种情况逐一说明。
I) 用mpirun -np #numproc <程序名> 的形式在多台机器上启动,方法如
下:
(这一方法只适合启动SPMD程序,并且可执行程序应在各台机器上放置在相
同的目录结构中)
i) 启动mpiconfig,选择准备运行的机器,并点击setup,再点击OK按
钮,结束配置。(注:选中机器后,必须按setup,才可以完成配置,否则在后
面的运行中会出现奇怪的错误)
ii) 键入mpirun -np #numproc <程序名> 即可启动程序,当#numproc大于
配置的机器数时,系统可以自动在机器列表中循环利用。
II) 用配置文件的方式在多台机器上启动,方法如下:
i) 编写纯文本的配置文件,格式如下:
exe <可执行文件的全路径及名称>
[可选参数]
hosts
<主机名1> #n1 [可执行文件的全路径及名称]
<主机名2> #n2 [可执行文件的全路径及名称]
<主机名3> #n3 [可执行文件的全路径及名称]
...
其中#n1,表示在对应机器上启动的进程数,每台主机上的进程数可以不
同;
若主机后的[可执行文件的全路径及名称]不填,则默认使用exe那一行所指定
的文件;
若每台主机都独立的列出[可执行文件的全路径及名称],则exe那一行的内容
也可空白;
若启动的是SPMD程序,每个主机所指向的必须是同一文件,或其复制文件;
若启动的是MPMD程序,给不同的机器上指定其上需要运行的程序;
同一台主机可以占用多行,每行给定不同或相同的启动进程数和[可执行文件
的全路径及名称];
全路径名包括两种,一种是以驱动器符号开始的,如:d:,
另一种是以机器名为起始的,如:;
每个[可执行文件的全路径及名称]都是以相应的主机为标准。
ii) 启动程序,这里仍然有两种情况:
a) 如果每台机器运行所需要的可执行文件都在其本地,则可以简单
的使用 mpirun <配置文件> 的形式启动;
b) 如果在配置文件中包含的主机中,存在一台主机的所需的可执行
文件在其远程,则需要使用 mpirun <配置文件> -logon 来启动,这时会要求输
入一个帐号和密码,请输入一个已经存在的域用户名和其对应的密码即可。(与
每台机器登陆的帐号无关,不要使用administrator帐号)
特别需要指出下面几点:
(1) 推荐用mpirun -localonly #numproc <程序名> 的方式在单机上启动多个
进程,这样可以比较少的更改mpiconfig。
(2) 推荐用配置文件的形式在多台机器上运行,这样也可以比较少的更改
mpiconfig;
(3) 也可以使用配置文件的形式在单台机器上运行程序;
(4) 无论启动几个进程,在本地只有一个窗口,而远程主机上没有任何窗口
启动,若启动任务管理器,可以看到启动的程序在运行,并且优先级为低。
发布评论