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装上。

2mpich2安装成功后,为了使用命令行方式执行程序的方便,将mpi路径

C:ProgramFilesMPICH2bin添加到环境变量path中,这样就可以在任何地方使

mpiexec了。

3CVF安装没什么,就是序列号老记不住,再写一遍,33206--00007

然后将mpich2includelib路径添加到CVF的搜索路径,在

Tools=>Options=>DirectoriesInclude filesLibrary files中。

4、解决头文件问题。

fortran77的固定格式程序中,要加入一行 include 'mpif.h' 头文件

mpif.h 中定义了MPI的一些常量。90程序就有点麻烦了,因为在fortran90

序中,习惯使用module,书上也说在90程序中要用 use mpi 来替代 include

'mpif.h' ,可是mpich2-1.0.5中的libinclude文件夹里都没有那个

其他的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目录下就找到了一个文件,将其拷贝到mpichinclude

目录下,再写90程序时就可以用 use mpi 了。当然也可以弄一个release模式的,

不过我连接时有两个警告,还没弄明白怎么回事。

5CVF编译连接选项的配置

主要看了一篇官方文档,是在下载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

在此目录下有四个子目录,分别为binexampleincludelib。其中bin目录

下有两个执行文件,。在后面将介绍其应用。 我的

电脑环境变量设置中将bin目录写入路径path变量,这样就可以在任何地方执

行此目录下的文件了(或者,你可以将其copy到工作目录,如果你不闲烦的话

其次,设置CVF6.5环境,这一步需要将MPICH2includelib目录写进

CVF6.5的搜索目录。其做法请参考设置过程图解 ,其中需要注意的

是将图解中的对应目录换成MPICH2目录下的includelib设置完成后,将本

压缩包中文件拷贝到MPICH2目录下的include子目录下。

是我自己编写的一个接口程序,用于简化CVF6.5MPICH2之间

的环境设置,此程序必需放在正确的地方。

最后,介绍如何运行并行程序。在本压缩包中有一个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) 无论启动几个进程,在本地只有一个窗口,而远程主机上没有任何窗口

启动,若启动任务管理器,可以看到启动的程序在运行,并且优先级为低。