搜档网
当前位置:搜档网 › Compaq Visual Fortran 6.6 并行编程环境的配置

Compaq Visual Fortran 6.6 并行编程环境的配置

Compaq Visual Fortran 6.6 并行编程环境的配置
Compaq Visual Fortran 6.6 并行编程环境的配置

Compaq Visual Fortran 6.6 并行编程环境的配置

Windows平台并行编程环境的配置

所用的软件: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\l ib” 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。

/////////////////////////////

很多Windows用户在应用并行环境时,发现对工程的设置非常麻烦,其实这一问题可以容易的解决。本文将就Compaq Visual Fortran 6.5环境中如何实现MPICH2并行计算做一简单的介绍。

首先,介绍一下MPICH2的安装,MPICH2可以在以下网站免费下载

https://www.sodocs.net/doc/405248345.html,/mpi/mpich2/,我下载的是Win32 IA32平台的安装程序

https://www.sodocs.net/doc/405248345.html,/mpi/mpich2/downloads/mpich2-0.971-2-win32-ia32.ms i。在Windows下安装此程序即可,其默认安装目录为c:\program files\mpich2。在此目录下有四个子目录,分别为bin,example,include和lib。其中bin目录下有两个执行文件,smpd.exe和mpiexec.exe。在后面将介绍其应用。在“我的电脑”环境变量设置中将bin目录写入路径path变量,这样就可以在任何地方执行此目录下的文件了(或者,你可以将其copy到工作目录,如果你不闲烦的话)。

其次,设置CVF6.5环境,这一步需要将MPICH2的include和lib目录写进CVF6.5的搜索目录。其做法请参考设置过程图解cvfdemo.html ,其中需要注意的是将图解中的对应目录换成MPICH2目录下的include和lib。设置完成后,将本压缩包中mpich2.mod文件拷贝到MPICH2目录下的include子目录下。

Mpich2.mod是我自己编写的一个接口程序,用于简化CVF6.5与MPICH2之间的环境设置,此程序必需放在正确的地方。

最后,介绍如何运行并行程序。在本压缩包中有一个FORTRAN编码的例子hello.f90,此程序可以在CVF6.5环境下直接进行编译。注意,以后所有的并行程序的最前面必需加上“use mpich2”这一行。这样才能正确编译并行程序。编译好后,会在当前工作目录的子目录debug下找到可执行文件hello.exe。在DOS 命令行模式下,进入debug目录,首先键入“smpd”回车,这样开始调用并行运行服务,再执行“mpiexec –n 5 hello”,就可以看到hello.exe程序的运行结果。当然,这里的“5”是节点的个数,你可以更改此值,自己进行尝试。Ok,恭喜你,现在你已经可以运行一个完整的并行程序了。要想成为高手,还要不断努力。Good luck。

MPICH安装

这里仅针对使用Digital Visual Fortran 6.x编译器的情况对MPICH安装程序所附的说明文档作补充说明。对于Visual C++ 6.0编译器的情况仅提供参考。

1. 安装

运行Setup.exe安装时,建议完全安装。Setup.exe运行完毕后,进行下面操作:

(1) 将{MPICH_root}\Sdk\Include和{MPICH_root}\Sdk\Lib目录下的所有文件分别拷贝到{Microsoft Visual Studio}\Df98\Include和{Microsoft

Visual Studio}\Df98\Lib目录下;

(2) 将{MPICH_root}\RemoteShell\Bin加入到系统的PATH环境变量中。

2. 编译、链接MPI应用程序

为了方便使用Visual Fortran 6.x编译器进行并行程序编译链接,在第一次使用其编译程序前,可以增加一个Fortran项目环境:

(1) 点击菜单File->New...;

(2) 在Projects标签中选择Fortran Console Application,然后再右侧输入框中填入新项目的名称,点击OK;

(3) 在接下来的对话框中选择An empty project,点击Finish;

(4) 在接下来的对话框中直接点击OK;

(5) 点击菜单Project->Settings...,进行下面操作:

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_32.lib、mpichd.lib、pmpichd.lib、romiod.lib,各库文件间用空格分开;

IV) 在setting for中,选择Win32 release;

V) 重复II)、III)的操作,只是库文件变为:ws2_32.lib、mpich.lib、pmpich.lib、romio.lib;

VI) 点击OK。

(6) 点击菜单File->Save Fortran Environment;

(7) 点击Save Environment按钮,即保存一个新的环境(可以给一个名称);

(8) 关闭这个项目文件,并删除这个项目文件。

这样就可以在进行并行程序设计的时候,较为方便地使用这一编译环境,举例如下:

1) 点击菜单File->New...;

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,n2,n3...表示在对应机器上启动的进程数,每台主机上的进程数可以不同;

若主机后的[可执行文件的全路径及名称]不填,则默认使用exe那一行所指定的文件;

若每台主机都独立的列出[可执行文件的全路径及名称],则exe那一行的内容也可空白;

若启动的是SPMD程序,每个主机所指向的必须是同一文件,或其复制文件;

若启动的是MPMD程序,给不同的机器上指定其上需要运行的程序;

同一台主机可以占用多行,每行给定不同或相同的启动进程数和[可执行文件的全路径及名称];

全路径名包括两种,一种是以驱动器符号开始的,如:d:\temp\mpiprogram.exe,另一种是以机器名为起始的,如:\\host1\share\temp\mpiprogram.exe;

每个[可执行文件的全路径及名称]都是以相应的主机为标准。

ii) 启动程序,这里仍然有两种情况:

a) 如果每台机器运行所需要的可执行文件都在其本地,则可以简单的使用mpirun <配置文件> 的形式启动;

b) 如果在配置文件中包含的主机中,存在一台主机的所需的可执行文件在其远程,则需要使用mpirun <配置文件> -logon 来启动,这时会要求输入一个帐号和密码,请输入一个已经存在的域用户名和其对应的密码即可。(与每台机器登陆的帐号无关,不要使用administrator帐号)

特别需要指出下面几点:

(1) 推荐用mpirun -localonly #numproc <程序名> 的方式在单机上启动多个进程,这样可以比较少的更改mpiconfig。

(2) 推荐用配置文件的形式在多台机器上运行,这样也可以比较少的更改mpiconfig;

(3) 也可以使用配置文件的形式在单台机器上运行程序;

(4) 无论启动几个进程,在本地只有一个窗口,而远程主机上没有任何窗口启动,若启动任务管理器,可以看到启动的程序在运行,并且优先级为低。

相关主题