c语言程序设计怎么改成mpi,转: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。

用户可以用以下的Makefile文件模板作C程序的编译:

# 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的路径设置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值