免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1470 | 回复: 0

使用g77/gfortran编译mvapich的相关问题 [复制链接]

论坛徽章:
0
发表于 2008-02-27 21:38 |显示全部楼层

                1.安装
在混和使用g77与gfortran编译mvapich时,官方文档中提到了要设置如下的相关的参数,这里我以make.mvapich.smp为例.
#vi make.mvapich.smp
18 PREFIX=${PREFIX:-/usr/local/mvapich}
19 export CC=${CC:-gcc}
20 export CXX=${CXX:-g++}
21 export F77=${F77:-g77}
22 export F90=${F90:-gfortran}
23 export F77_GETARGDECL=" "
24 export F90FLAGS="-ff2c"

修改完成后进行编译安装:
#./make.mvapich.smp
通过查看目录下config-mine.log可以查看相关信息.

完成安装后,可以看到存在/usr/local/mvapich/examples/pi3f90.f90,说明mpif90己经配置安装,可以使用了.

2.测试
开始测试mpif90是否能正常编译f90程序.
#cd /usr/local/mvapich/examples
#/usr/local/mvapich/bin/mpif90   pi3f90.f90
pi3f90.o: In function `MAIN__':
pi3f90.f90:(.text+0x2c): undefined reference to `mpi_init_'
pi3f90.f90:(.text+0x46): undefined reference to `mpi_comm_rank_'
pi3f90.f90:(.text+0x60): undefined reference to `mpi_comm_size_'
pi3f90.f90:(.text+0x254): undefined reference to `mpi_bcast_'
pi3f90.f90:(.text+0x338): undefined reference to `mpi_reduce_'
pi3f90.f90:(.text+0x3f5): undefined reference to `mpi_finalize_'
collect2: ld returned 1 exit status
3.如何解决上面的问题呢?
1)首先在mpif90中加入F90FLAGS的信息
#vi /usr/local/mvapich/bin/mpif90
30 F90BASE="gfortran"
31 F90LINKERBASE="gfortran"
32 [color="#ff0000"]F90FLAGS="-ff2c"
[color="#ff0000"]
[color="#000000"]#/usr/local/mvapich/bin/mpif90   pi3f90.f90
/usr/local/mvapich/lib/libmpich.a(farg.o): In function `mpir_iargc__':
farg.f:(.text+0x7): undefined reference to `f__xargc'
/usr/local/mvapich/lib/libmpich.a(farg.o): In function `mpir_getarg__':
farg.f:(.text+0x27): undefined reference to `G77_getarg_0'
collect2: ld returned 1 exit status
make: *** [pi3f90] Error 1

2)接下来生成一个farg.f的文件,生成farg.o文件.
#vi farg.f
  1       integer function mpir_iargc()
  2
  3       mpir_iargc = IARGC()
  4       return
  5       end
  6 c     
  7       subroutine mpir_getarg( i, s )
  8
  9       integer       i
10       character (LEN=*) s
11
12       call GETARG(i,s)
13       return
14       end

#gfortran -fsecond-underscore -c farg.f

3)使用下面的命令生成pi3f90文件.
#/usr/local/mvapich/bin/mpif90  -c pi3f90.f90
#/usr/local/mvapich/bin/mpif90  -o pi3f90 pi3f90.o farg.o
(补充:若又出现了
/usr/local/mvapich/bin/mpif90  -o pi3f90 pi3f90.o farg.o
farg.o(.text+0x34): In function `mpir_getarg__':
: undefined reference to `getarg_'
collect2: ld returned 1 exit status )

修改mpif90下面两行类似以下
USER_FFLAGS="-L/usr/lib/gcc/x86_64-redhat-linux/3.4.6 -L/usr/lib64" ( 我的g77是3.4.6版的)
BASE_LIB_LIST=" -L/usr/lib64 -Wl,-rpath=/usr/lib64 -libverbs -libumad -lpthread  -lpthread  -lrt -lg2c")

4)最终测试
#mpirun_rsh -np 2 n1 n2 GFORTRAN_UNBUFFERED_ALL=y ./pi3f90
Process            0  of            2  is alive
Enter the number of intervals: (0 quits)
Process            1  of            2  is alive
10000000
  pi is approximately: 3.1415926535899814  Error is: 0.0000000000001883
Enter the number of intervals: (0 quits)
写这篇文档的原由是由于在解决这个问题的过程中,google后很失望,通过对
http://www.pgroup.com/support/link.htm
这篇文档的反复琢磨,有了上面的文档,希望对后来者有用.
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4312/showart_485196.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP