资讯详情

转:MPI的使用

编译MPI程序

一.1000A

MPICH简化两个工具MPI编译应用程序, 在曙光1000A在并行系统中,编译过程应在主控节点进行。

make

MPICH应用程序通常需要链接特殊的库和编译选项, 此时,用户要用了Makefile。为方便用户, MPICH提供了一个

make 文件的模板

,同时,还提供了命令mpireconfig根据并行机的特点,将该模板转换为用户可用的‘Makefile这个模板就是这样

‘/usr/local/mpich/examples/Makefile.in’ 文件。

用户将其转换为可用的‘用户’Makefile文件流程如下:

1.用户 login 入主控节点 (如carrot), 并转入适当子目录, 如包括MPI应用程序test.f

子目录下。

2.将文件复制到子目录中 % cp /usr/local/mpich/examples/Makefile.in 下。

3. 由 ‘Makefile.in’ 产生 ‘Makefile’ 文件:% mpireconfig Makefile。

4. 按需要修改Makefile。

产生上述过程 Makefile 中包含一个Fortram程序 (pi3.f) 以及两个C语言程序

(cpi.c和cpilog.c) 编译命令, 添加或修改所需内容, 如按 pi3.f 加入编译命令test.f

或将编译所需内容 pi3 改为 test, 以备编译 test.f 之需。xlc 与 xlf 还应根据需要修改编译选项。

编译相关程序只需使用以下命令:

% make

则 ‘Makefile’ 编译所有程序, 若只编译 test.f, 键入命令:

% make test

这时只编译test.f并生成目标test。

mpif77和 mpicc

MPICH提供两个命令 (mpif77和mpicc) 编译和链接Fortran或C语言程序,

用户可以使用这两个命令来编译MPI应用程序, 特别是当程序只包含少量文件时。mpif77 (mpicc) 与一般Fortran (或C)

编译命令的使用方法相似, 可添加相同的选项,如:

mpif77 -c foo.f

mpicc -c foo.c 与

mpif77 -o foo foo.o

mpicc -o foo foo.o

有时链接需要一些特殊的库,链接时应注明。

二.2000-I及3000

make

MPI应用程序通常需要链接特殊的库和编译选项,

此时用户将使用makefile按需修改makefile,主要设置编译器路径。编译相关程序只需使用以下命令:

% make

则 ‘makefile’ 所有列出的程序都是编译的,如果只编译test.f,需要键入命令

% make test

这时只编译test.f并生成目标文件test。

用户可以使用以下内容MakefileC程序编译文件模板:

# Makefile for compiling MPI programs on Dawning-3000

system.

#

# This makefile is used to compile and link with MPI programs for

BCL-1e

# communication library and RMS resource management system

written in C.

#

CC = /usr/bin/cc

CLINKER = /usr/bin/cc

OPTFLAGS =

LIBS = -L$(MPI_ROOT)/lib -L/cluster/bcl/lib -L/cluster/rms/lib

-L/cluster/sdr/lib -lmpi -lbcl -lrms -lsdr

INCLUDES = -I/cluster/bcl/include -I/cluster/rms/inc

-I$(MPI_ROOT)/include

default: hello-world

hello-world: hello-world.o

$(CLINKER) $(OPTFLAGS) ${INCLUDES} -o hello-world hello-world.o

${LIBS}

/bin/rm -f *.o *~

clean:

/bin/rm -f *.o *~ $(default)

.c.o:

$(CC) $(CFLAGS) ${INCLUDES} -c $*.c

Fortran程序的Makefile文件模板如下:

# Makefile for compiling MPI programs on Dawning-3000

system.

#

# This makefile is used to compile and link with MPI programs for

BCL-1e

# communication library and RMS resource management system

written in Fortran.

#

F77 = /usr/bin/f77

CLINKER = /usr/bin/f77

OPTFLAGS =

LIBS = -L$(MPI_ROOT)/lib -L/cluster/bcl/lib -L/cluster/rms/lib

-L/cluster/sdr/lib -lmpi -lbcl -lrms -lsdr

INCLUDES = -I/cluster/bcl/include -I/cluster/rms/inc

-I$(MPI_ROOT)/include

default: hello-world

hello-world: hello-world.o

$(CLINKER) $(OPTFLAGS) ${INCLUDES} -o hello-world hello-world.o

${LIBS}

/bin/rm -f *.o *~

clean:

/bin/rm -f *.o *~ $(default)

.f.o:

$(F77) $(CFLAGS) ${INCLUDES} -c $*.f

mpif77和mpicc

如果用户设置正确MPI系统命令的执行路径可以直接使用mpicc或mpif77来编译C或Fortran程序、编译方法和cc和f77完全一致。

MPI提供两个命令 (mpif77和mpicc) 简化编译和链接MPI

Fortran或者在C语言程序的过程中,用户可以使用这两个命令来编译MPI特别是当程序只包含少量文件时,应用程序。mpif77 (mpicc)

与一般Fortran (或C) 编译命令的使用方法相似, 可添加相同的选项(详见编译器选项说明),如:

mpif77 -c foo.f

mpicc -c foo.c

mpif77 -o foo foo.o

mpicc -o foo foo.o

有时链接需要一些特殊的库, 链接时应注明。mpicc和mpif77省略了有关MPI路径设置。

标签: 直线位移传感器lmpi

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台