24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3066  |  回复: 17
本帖产生 1 个 1ST强帖 ,点击这里进行查看

mayim2008

金虫 (正式写手)


[交流] 【求助】安装siesta2.0.2时如何编译arch.make??

汗,又遇到问题了,特请善良的好心的虫虫指点~~~~
前面编译MKL 和ifort都成功了
后来又安装了openmpi,可是,如果我不做并行计算,这个MPI不安装也行吧,安装了也没坏处吧?
俺是菜鸟啊,大侠们多多体谅啊~~
安装SIESTA2.0.2时,我的命令是这样的;
先 tar -zxvf siesta-2.0.2.tgz 解压缩
然后cd Src
然后cp  Sys/intel-mkl.make   arch.make  就是把Sys的intel-mkl.make文件拷贝到Src下,然后改名为arch.make吧
之后,是不是要修改arch.make呢
命令是vi  arch.make么?这个命令不太符合XP下的编辑习惯,有没有适合XP编辑下的命令呢??
然后,编译arch.make文件后,是不是输入$make就可以了?

下面是我的原始arch.make文件,没有做任何修改的
我应该改哪些参数呢?
我看了别人编译的一些例子,用红字标记的应该是要改的吧,怎么改呢?还有,貌似我的arch.make好像不完善啊?
求高人指点,小女子感激不尽!


我的系统是ubantu9.04
MKL是10.3.2.137
ifort是2011.2.137
openmpi是1.4.2
------------------------------------------
#
# This file is part of the SIESTA package.
#
# Copyright (c) Fundacion General Universidad Autonoma de Madrid:
# E.Artacho, J.Gale, A.Garcia, J.Junquera, P.Ordejon, D.Sanchez-Portal
# and J.M.Soler, 1996-2006.
#
# Use of this software constitutes agreement with the full conditions
# given in the SIESTA license, as signed by all legitimate users.
#
SIESTA_ARCH=intel-mkl#
# Intel fortran compiler for linux with mkl optimized blas and lapack
#
# Be sure to experiment with different optimization options.
# You have quite a number of combinations to try...
#
FC=ifc
#
FFLAGS= -w -mp -tpp5 -O3
FFLAGS_DEBUG= -g
LDFLAGS=-Vaxlib
COMP_LIBS=
RANLIB=echo
#
NETCDF_LIBS=
NETCDF_INTERFACE=
DEFS_CDF=
#
MPI_INTERFACE=
MPI_INCLUDE=
DEFS_MPI=
#
GUIDE=/opt/intel/mkl/lib/32/libguide.a
LAPACK=/opt/intel/mkl/lib/32/libmkl_lapack.a
BLAS=/opt/intel/mkl/lib/32/libmkl_p3.a
#G2C=/usr/lib/gcc-lib/i386-redhat-linux/2.96/libg2c.a
LIBS=$(LAPACK) $(BLAS) $(G2C) $(GUIDE)  -lpthread
SYS=bsd
DEFS= $(DEFS_CDF) $(DEFS_MPI)
#
.F.o:
        $(FC) -c $(FFLAGS) $(INCFLAGS)  $(DEFS) $<
.f.o:
        $(FC) -c $(FFLAGS) $(INCFLAGS)   $<
.F90.o:
        $(FC) -c $(FFLAGS) $(INCFLAGS)  $(DEFS) $<
.f90.o:
        $(FC) -c $(FFLAGS) $(INCFLAGS)   $<
#

[ Last edited by mayim2008 on 2011-4-6 at 22:01 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acridine

木虫 (正式写手)


★ ★ ★
zzy870720z(金币+3, 1ST强帖+1): 谢谢详细指点 2011-04-06 23:42:17
mayim2008(金币+5): 太感谢了~~~ 2011-04-07 18:15:16
我没有安装过siesta,不了解有什么特别注意的地方,说下我知道的
首先,用不惯vi 你可以使用 gedit arch.make  来编辑它

至于文件中需要修改的地方
GUIDE=/opt/intel/mkl/lib/32/libguide.a
LAPACK=/opt/intel/mkl/lib/32/libmkl_lapack.a
BLAS=/opt/intel/mkl/lib/32/libmkl_p3.a
这些是数学库的路径,应该设置成你系统的情况,也就是说找到libmkl_p3.a,libmkl_lapack.a,libguide.a 在哪,把正确的路径添加到这里。
另外FC=ifc 这个是你的fortran编译器命令,现在intel的命令应该是ifort吧
MPI_... 相关行的是设置并行的,如果你不打算并行计算可以忽略

你可以试着执行下编译,看有什么提示
编译的命令应该是make,不过也可能需要加入选项,比如make -all之类的。你可以看下程序的主文件夹下有没有Readme,或者打开Makefile文件看文件最开始有没有相关的提示
2楼2011-04-06 23:15:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
★ ★ ★
zzy870720z(金币+3): 谢谢分享,呵呵 2011-04-07 16:18:39
mayim2008(金币+5): 谢谢啊~~ 2011-04-07 18:15:38
引用回帖:
Originally posted by mayim2008 at 2011-04-06 14:57:16:
汗,又遇到问题了,特请善良的好心的虫虫指点~~~~
前面编译MKL 和ifort都成功了
后来又安装了openmpi,可是,如果我不做并行计算,这个MPI不安装也行吧,安装了也没坏处吧?
俺是菜鸟啊,大侠们多多体谅啊~~
...

我也是用的mkl编译的。只不过我用的是64位的,当然也有对应的32位的。可以类比一下。
#
# This file is part of the SIESTA package.
#
# Copyright (c) Fundacion General Universidad Autonoma de Madrid:
# E.Artacho, J.Gale, A.Garcia, J.Junquera, P.Ordejon, D.Sanchez-Portal
# and J.M.Soler, 1996- .
#
# Use of this software constitutes agreement with the full conditions
# given in the SIESTA license, as signed by all legitimate users.
#
.SUFFIXES:
.SUFFIXES: .f .F .o .a .f90 .F90

SIESTA_ARCH=x86_64-REHL-5.4

FPP=
FPP_OUTPUT=
FC=mpif90
RANLIB=ranlib

SYS=nag

SP_KIND=4
DP_KIND=8
KINDS=$(SP_KIND) $(DP_KIND)

FFLAGS= -O2 -i-static
FFLAGS_DEBUG= -g
LDFLAGS=-Vaxlib
FPPFLAGS= -DFC_HAVE_FLUSH -DFC_HAVE_ABORT -DMPI

ARFLAGS_EXTRA=

FCFLAGS_fixed_f=
FCFLAGS_free_f90=
FPPFLAGS_fixed_F=
FPPFLAGS_free_F90=

BLAS_LIBS=-L/home/zhanggp/intel/mkl/10.0.2.018/lib/em64t -lmkl_solver_lp64 -lmkl_intel_lp64 -lguide
LAPACK_LIBS=-L/home/zhanggp/intel/mkl/10.0.2.018/lib/em64t -lmkl_sequential -lmkl_core
BLACS_LIBS=-L/home/zhanggp/intel/mkl/10.0.2.018/lib/em64t -lmkl_blacs_openmpi_lp64
SCALAPACK_LIBS=-L/home/zhanggp/intel/mkl/10.0.2.018/lib/em64t -lmkl_scalapack_lp64

COMP_LIBS=

NETCDF_LIBS=
NETCDF_INTERFACE=

LIBS=$(SCALAPACK_LIBS) $(BLACS_LIBS) $(LAPACK_LIBS) $(BLAS_LIBS) $(NETCDF_LIBS)

#SIESTA needs an F90 interface to MPI
#This will give you SIESTA's own implementation
#If your compiler vendor offers an alternative, you may change
#to it here.
MPI_INTERFACE= libmpi_f90.a
MPI_INCLUDE=/home/zhanggp/software/openmpi-1.2.6/include

#Dependency rules are created by autoconf according to whether
#discrete preprocessing is necessary or not.
.F.o:
        $(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F)  $<
.F90.o:
        $(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_free_F90) $<
.f.o:
        $(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_fixed_f)  $<
.f90.o:
        $(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_free_f90)  $<
3楼2011-04-07 15:18:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mayim2008

金虫 (正式写手)


引用回帖:
Originally posted by acridine at 2011-04-06 23:15:47:
我没有安装过siesta,不了解有什么特别注意的地方,说下我知道的
首先,用不惯vi 你可以使用 gedit arch.make  来编辑它

至于文件中需要修改的地方
GUIDE=/opt/intel/mkl/lib/32/libguide.a
LAPACK=/opt/in ...

你好,今天去编译了一下,修改了如下参数,
FC=ifort
LAPACK=/home/juan/intel/mkl/lib/ia32/libmkl_lapack.a
另,没有libmkl_p3.a这个文件啊,只有libmkl_p4.so文件
也找不到libguide.a文件

make后
出现了:
Compilation architecture to be used: intel-mkl
If this is not what you want, create the right
arch.make file using the models in Sys

Hit ^C to abort...

==> Incorporating information about present compilation (compiler and flags)
make[1]: Entering directory `/home/syzx/TEM/siesta-2.0.2/Src'
ifort -c -w -mp -tpp5 -O3     compinfo.F90
make[1]: ifort: Command not found
make[1]: *** [compinfo.o] Error 127
make[1]: Leaving directory `/home/syzx/TEM/siesta-2.0.2/Src'
make: *** [version] Error 2
----------------------------------------------
4楼2011-04-08 22:07:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acridine

木虫 (正式写手)


★ ★
sunyang1988(金币+2): 谢谢指点 2011-04-09 09:47:38
mayim2008(金币+5): 谢谢啊~~ 2011-04-11 18:44:00
这个是提示你编译器命令不对。
我印象中你前一个贴提到过编译器安装成功之后是用ifort命令测试的吧,可能我记差了,总之这里应该是你的编译器命令,如果编译器安装测试成功了是不会提示Command not found的

另外这些数据库名称我只是复制的你贴的内容,不是说正确的名字就是这些。
比如BLACS_LIBS= 对应的是Blacs库,真实的名字中肯定会含有blacs的,但具体的名字肯定千奇百怪的,比如楼上兄弟用的em64t -lmkl_blacs_openmpi_lp64大概是表示: 64位机器,openmpi并行编译的mkl中的blacs库,你的文件名是什么还是需要自己找一下的。
5楼2011-04-09 01:04:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mayim2008

金虫 (正式写手)


引用回帖:
Originally posted by acridine at 2011-04-09 01:04:01:
这个是提示你编译器命令不对。
我印象中你前一个贴提到过编译器安装成功之后是用ifort命令测试的吧,可能我记差了,总之这里应该是你的编译器命令,如果编译器安装测试成功了是不会提示Command not found的

另 ...

你好,非常感谢你的指点
我是用ifort编译的啊,这个命令FC=ifort有错吗?
6楼2011-04-11 18:52:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acridine

木虫 (正式写手)


★ ★
mayim2008(金币+5): 太感谢了~~ 2011-04-11 22:26:57
zzy870720z(金币+2): 谢谢指教 2011-04-12 08:41:06
应该是没错, 那么你在设置环境变量之后有没有测试过ifort命令呢?在终端输入ifort命令试验一下
一般出现 ifort: Command not found
表示系统不识别ifort是什么意思,表示编译器安装或环境变量设置有误。
如果设置正确,系统见到ifort会启动fortran编译器去编译接下来的内容,由于只输入了ifort,提示会是
Command line error: no files specified; for help type "ifort -help"
这和Command not found 是完全不同的
7楼2011-04-11 20:20:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mayim2008

金虫 (正式写手)


引用回帖:
Originally posted by acridine at 2011-04-11 20:20:15:
应该是没错, 那么你在设置环境变量之后有没有测试过ifort命令呢?在终端输入ifort命令试验一下
一般出现 ifort: Command not found
表示系统不识别ifort是什么意思,表示编译器安装或环境变量设置有误。
如果 ...

明天我再去试试~~~
非常感谢啊
你要是在广东就告诉我啊,一定请你吃饭~~~~~
8楼2011-04-11 22:27:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mayim2008

金虫 (正式写手)


引用回帖:
Originally posted by acridine at 2011-04-11 20:20:15:
应该是没错, 那么你在设置环境变量之后有没有测试过ifort命令呢?在终端输入ifort命令试验一下
一般出现 ifort: Command not found
表示系统不识别ifort是什么意思,表示编译器安装或环境变量设置有误。
如果 ...

你好,我今天去测试了
ifort编译是成功的,出现了Command line error: no files specified; for help type "ifort -help"

然后,我又修改了:
BLAS=/home/juan/intel/mkl/lib/ia32/libmkl_blas95.a
GUIDE文件名始终找不到,不知道为什么
MAKE之后出现:
ifort:command line remark #10010 : option" -Vaxlib" is deprecated and will beremoved in a future release. see "-help deprecated"
ifort:error #10236:File not found '/home/juan/intel/mkl/lib/ia32/libguide.a"
make: ***[siesta] error 1

怎么回事呢?
GUIDE文件名就是没看到啊
9楼2011-04-13 21:11:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acridine

木虫 (正式写手)



zzy870720z(金币+1): 谢谢指点 2011-04-13 22:48:30
mayim2008(金币+5): 非常感谢~~ 2011-04-14 19:38:44
现在的提示是正常的了,是说找不到文件
File not found '/home/juan/intel/mkl/lib/ia32/libguide.a"

google了一下libguide.a,第一条结果就是说
libguide has been deprecated and removed from our earlier versions itself.  Now, you have to link with libiomp library which conforms to the latest OpenMP standard.   Please refer the MKL userguide for more detals.
似乎新版本里 libguide 被替换成了libiomp

你找找看有没有类似 libiomp.a 的文件
10楼2011-04-13 22:38:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mayim2008

金虫 (正式写手)


引用回帖:
Originally posted by acridine at 2011-04-13 22:38:18:
现在的提示是正常的了,是说找不到文件
File not found '/home/juan/intel/mkl/lib/ia32/libguide.a"

google了一下libguide.a,第一条结果就是说
libguide has been deprecated and removed from our  ...

你好,我今天去看了,并没有libiomp文件啊
然后,我删除了GUIDE=、增加了BLACS=*****,SCALAPACK=*****
先make clean 后,再make,出现了:

ifort: command line remark #10010: option '-Vaxlib' is deprecated and will be removed in a future release. See '-help deprecated'
chkgmx.o: In function `chkgmx_':
chkgmx.f:(.text+0x2f5): undefined reference to `ddot_'
chkgmx.f:(.text+0x325): undefined reference to `ddot_'
denmat.o: In function `denmat_':
denmat.F:(.text+0x1b19): undefined reference to `dscal_'
denmat.F:(.text+0x1b30): undefined reference to `dscal_'
dhscf.o: In function `dhscf_':
dhscf.F:(.text+0x14e1): undefined reference to `ddot_'
dhscf.F:(.text+0x150c): undefined reference to `ddot_'
dhscf.F:(.text+0x158d): undefined reference to `ddot_'
dhscf.F:(.text+0x15b8): undefined reference to `ddot_'
dhscf.F:(.text+0x3d98): undefined reference to `ddot_'
dhscf.o:dhscf.F:(.text+0x3e12): more undefined references to `ddot_' follow
diagg.o: In function `diagg_':
diagg.F:(.text+0x8a2): undefined reference to `dcopy_'
efield.o: In function `efield_':
efield.F:(.text+0x10a): undefined reference to `ddot_'
efield.F:(.text+0x142): undefined reference to `ddot_'
efield.F:(.text+0x18c): undefined reference to `ddot_'
efield.F:(.text+0x1bf): undefined reference to `ddot_'
efield.F:(.text+0x24e): undefined reference to `ddot_'
efield.o:efield.F:(.text+0x286): more undefined references to `ddot_' follow
inver.o: In function `inver_':
inver.f:(.text+0x132): undefined reference to `dgetrf_'
inver.f:(.text+0x17d): undefined reference to `dgetri_'
ksv.o: In function `ksv_pol_':
ksv.f:(.text+0xfe1): undefined reference to `ddot_'
ksv.f:(.text+0x1240): undefined reference to `ddot_'
ksv.f:(.text+0x12af): undefined reference to `ddot_'
ksv.f:(.text+0x23b9): undefined reference to `ddot_'
linpack.o: In function `zgedi_':
linpack.F:(.text+0x115): undefined reference to `zscal_'
linpack.F:(.text+0x182): undefined reference to `zaxpy_'
linpack.F:(.text+0x4d9): undefined reference to `zaxpy_'
linpack.F:(.text+0x524): undefined reference to `zswap_'
linpack.o: In function `zgefa_':
linpack.F:(.text+0x89a): undefined reference to `zscal_'
linpack.F:(.text+0x961): undefined reference to `zaxpy_'
minvec.o: In function `m_minvec_mp_minvec_':
minvec.f:(.text+0xa4): undefined reference to `ddot_'
minvec.f:(.text+0xed): undefined reference to `ddot_'
minvec.f:(.text+0x136): undefined reference to `ddot_'
minvec.f:(.text+0x386): undefined reference to `ddot_'
minvec.f:(.text+0x5a0): undefined reference to `ddot_'
ranger.o:ranger.f:(.text+0x1365): more undefined references to `ddot_' follow
cdiag.o: In function `cdiag_':
cdiag.F:(.text+0x3df): undefined reference to `ilaenv_'
cdiag.F:(.text+0x42f): undefined reference to `ilaenv_'
cdiag.F:(.text+0x714): undefined reference to `zhegvx_'
cdiag.F:(.text+0x89c): undefined reference to `zpotrf_'
cdiag.F:(.text+0x949): undefined reference to `zhegst_'
cdiag.F:(.text+0xae3): undefined reference to `zheevx_'
cdiag.F:(.text+0xcd9): undefined reference to `zcopy_'
cdiag.F:(.text+0xd7a): undefined reference to `ztrsm_'
cdiag.F:(.text+0x126f): undefined reference to `zhegv_'
cdiag.F:(.text+0x16aa): undefined reference to `zcopy_'
cdiag.F:(.text+0x17c9): undefined reference to `zhemm_'
cdiag.F:(.text+0x189c): undefined reference to `zgemm_'
cdiag.F:(.text+0x3f48): undefined reference to `zgemm_'
cdiag.F:(.text+0x3f99): undefined reference to `zcopy_'
rdiag.o: In function `rdiag_':
rdiag.F:(.text+0x3b2): undefined reference to `ilaenv_'
rdiag.F:(.text+0x5ff): undefined reference to `dsygvx_'
rdiag.F:(.text+0x768): undefined reference to `dpotrf_'
rdiag.F:(.text+0x813): undefined reference to `dsygst_'
rdiag.F:(.text+0x1474): undefined reference to `dsyevx_'
rdiag.F:(.text+0x1afe): undefined reference to `dcopy_'
rdiag.F:(.text+0x1b9c): undefined reference to `dtrsm_'
rdiag.F:(.text+0x1eb4): undefined reference to `dsygv_'
rdiag.F:(.text+0x20dd): undefined reference to `dcopy_'
rdiag.F:(.text+0x24e6): undefined reference to `dsymm_'
rdiag.F:(.text+0x2ad0): undefined reference to `dgemm_'
rdiag.F:(.text+0x34d1): undefined reference to `dgemm_'
rdiag.F:(.text+0x3727): undefined reference to `dcopy_'
dsyevds.o: In function `dsyevds_':
dsyevds.f:(.text+0x3f): undefined reference to `lsame_'
dsyevds.f:(.text+0x59): undefined reference to `lsame_'
dsyevds.f:(.text+0xda): undefined reference to `lsame_'
dsyevds.f:(.text+0x114): undefined reference to `lsame_'
dsyevds.f:(.text+0x25e): undefined reference to `dlamch_'
dsyevds.f:(.text+0x279): undefined reference to `dlamch_'
dsyevds.f:(.text+0x2ef): undefined reference to `dlansy_'
dsyevds.f:(.text+0x36a): undefined reference to `dlascl_'
dsyevds.f:(.text+0x3e2): undefined reference to `dsytrd_'
dsyevds.f:(.text+0x442): undefined reference to `dsterf_'
dsyevds.f:(.text+0x49d): undefined reference to `dstedc_'
dsyevds.f:(.text+0x4f8): undefined reference to `dormtr_'
dsyevds.f:(.text+0x53e): undefined reference to `dscal_'
dsyevds.f:(.text+0x589): undefined reference to `xerbla_'
zheevds.o: In function `zheevds_':
zheevds.f:(.text+0x3b): undefined reference to `lsame_'
zheevds.f:(.text+0x55): undefined reference to `lsame_'
zheevds.f:(.text+0x105): undefined reference to `lsame_'
zheevds.f:(.text+0x13f): undefined reference to `lsame_'
zheevds.f:(.text+0x2ea): undefined reference to `dlamch_'
zheevds.f:(.text+0x305): undefined reference to `dlamch_'
zheevds.f:(.text+0x37b): undefined reference to `zlanhe_'
zheevds.f:(.text+0x3f6): undefined reference to `zlascl_'
zheevds.f:(.text+0x488): undefined reference to `zhetrd_'
zheevds.f:(.text+0x4f9): undefined reference to `dsterf_'
zheevds.f:(.text+0x572): undefined reference to `zstedc_'
zheevds.f:(.text+0x5c7): undefined reference to `zunmtr_'
zheevds.f:(.text+0x671): undefined reference to `xerbla_'
zheevds.f:(.text+0x6c1): undefined reference to `dscal_'
spher_harm.o: In function `spher_harm_mp_ylmexp_':
spher_harm.f:(.text+0x1fd1): undefined reference to `ddot_'
m_broyddj.o: In function `m_broyddj_mp_dlinds_.':
m_broyddj.f90:(.text+0x6f2a): undefined reference to `dgetrf_'
m_broyddj.f90:(.text+0x6ff7): undefined reference to `dgetri_'
mneighb.o: In function `neighbour_mp_mranger_.':
mneighb.f:(.text+0x17a2): undefined reference to `ddot_'
mneighb.f:(.text+0x1d1a): undefined reference to `ddot_'
mneighb.f:(.text+0x2da8): undefined reference to `ddot_'
mneighb.f:(.text+0x3f83): undefined reference to `ddot_'
conjgr.o: In function `m_conjgr_mp_conjgr_':
conjgr.f:(.text+0x1e9): undefined reference to `ddot_'
conjgr.o:conjgr.f:(.text+0x21b): more undefined references to `ddot_' follow
m_broyddj_nocomm.o: In function `m_broyddj_nocomm_mp_dlinds_.':
m_broyddj_nocomm.f90:(.text+0x6fea): undefined reference to `dgetrf_'
m_broyddj_nocomm.f90:(.text+0x70b7): undefined reference to `dgetri_'
make: *** [siesta] Error 1

我都快崩溃了。。。。。
想必大侠被我问得也郁闷了,对不起~~~~
11楼2011-04-14 19:42:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acridine

木虫 (正式写手)


★ ★
zzy870720z(金币+2): 谢谢指点 2011-04-15 00:00:47
嘿嘿,没有关系
虽然错误多,但是原因比较简单,就是库没有链接好,导致找不到这个库的函数,所以fortran在编译到siesta代码中引用到库中函数的部分时,就会提示undefined reference,看上去比较壮观,但把库设置好后就都会消失的。
你这个库的设置确实比较麻烦,因为你的mkl版本特别新,而你siesta提供的make文件好像是针对特别旧版本mkl的,所以差别可能比较大
另外仔细看了下你给出的这个arch.make,感觉里面有的地方挺奇怪的,比如红字的SIESTA_ARCH=intel-mkl 怎么跑到说明部分去了?虽然不影响编译~但说明你这个文件不是官方提供的,或是被别人修改过,那么也不要过于信任它了。找找看有没有官方提供的使用新版本mkl的make文件
(3楼提供的10.0版本应该比较接近,可惜是并行+64位,你可以对比一下)
12楼2011-04-14 23:44:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mayim2008

金虫 (正式写手)


引用回帖:
Originally posted by acridine at 2011-04-14 23:44:06:
嘿嘿,没有关系
虽然错误多,但是原因比较简单,就是库没有链接好,导致找不到这个库的函数,所以fortran在编译到siesta代码中引用到库中函数的部分时,就会提示undefined reference,看上去比较壮观,但把库设置 ...

不好意思,怎么给不了金币了?

这些天,瞅着没课的时候,一直在修改,可还是出现上面的错误
整得人都要崩溃了,怎么办?

我很多安装都是参照3楼的,可能机器不一样,还是错误百出
很奇怪,就是没有guide.a这样的文件,连个影子都没有
13楼2011-04-24 21:32:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mayim2008

金虫 (正式写手)


guohuazhong 在这个帖子回复说:
http://muchong.com/bbs/viewthread.php?tid=3076767&fpage=1

一)如果你坚持要用intel ifort 11来进行编译。可以采取如下方式(siesta网站主页上的方法,见http://www.icmab.es/siesta/
在生成的arch.make文件中新加入
DUMMY_FOX= --enable-dummy
FFLAGS_DEBUG= -g -O2
而后在Obj文件夹中的makefile文件修改第148-153行,将这几行写成如下形式
$(FoX_configured):
(cd FoX; touch arch.make ; \
         CONFIGURE="$(VPATH)/FoX/configure"; \
         $$CONFIGURE VPATH="$(VPATH)/FoX" \
         FC="$(FC_SERIAL)" FCFLAGS="$(FFLAGS_DEBUG)" \
         --enable-wcml $(DUMMY_FOX) || false )
注意(cd FoX; touch arch.make ; \这一行前是一个Tab空格,而不是一个space空格
将这两个地方修改好后,
make clen
make
之后生成的siesta可执行文件并行计算不会出现问题。但要注意的是,arch.make文件中的优化级别是FFLAGS=-g -O2或FFLAGS=-g -O1或FFLAGS=-g -O0,不能是FFLAGS=-g -O3,我试了一下FFLAGS=-g -O3,发现计算过程中出现下面的错误
SPLIT: Orbitals with angular momentum L= 0

SPLIT: Basis orbitals for state 4s

   izeta = 1
                 lambda =    1.000000
                     rc =    6.000769
                 energy =   -0.359899
                kinetic =    0.368794
    potential(screened) =   -0.728693
       potential(ionic) =   -6.200046
WARNING: Minimum split_norm parameter:  0.52689. Will not be able to generate orbital with split_norm =  0.15000
See manual for new split options
ERROR STOP from Node:    0
当改用FFLAGS=-g -O2和FFLAGS=-g -O0或FFLAGS=-g -O1之后则没用出现类似的错误提示,具体原因我就没去深究了。当然不同的优化级别在计算时间上会有一些差异。
比如用FFLAGS=-g -O2时,运行时间如下(用的Fe.fdf例子)
* Running on    8 nodes in parallel
>> Start of run:   6-DEC-2010  17:19:33
>> End of run:   6-DEC-2010  17:27:54
当改用FFLAGS=-g -O0时,运行时间如下(用的Fe.fdf例子)
* Running on    8 nodes in parallel
>> Start of run:   6-DEC-2010  16:48:25
>> End of run:   6-DEC-2010  16:58:58

(二)如果你不使用ifort11编译器,而是使用ifort10或以下的版本,建议配合使用openmpi来进行并行计算。
1)安装openmpi,详细步骤不说了,只是在configure的时候我使用的是如下的命令:
./configure --prefix=要安装的目录 F77=ifort FC=ifort FCFLAGS=-em64t FFLAGS=-em64t
FCFLAGS和FFLAGS是告诉编译器用的是64位的编译器,如果机器不是64位的就不用了。
make
make install
安装完成后还得添加环境变量,至于怎么添加,网上很多,搜索一下就知道了。
2)编译siesta
步骤就写了,大家都知道。下面是我的arch.make文件
#
# This file is part of the SIESTA package.
#
# Copyright (c) Fundacion General Universidad Autonoma de Madrid:
# E.Artacho, J.Gale, A.Garcia, J.Junquera, P.Ordejon, D.Sanchez-Portal
# and J.M.Soler, 1996- .
#
# Use of this software constitutes agreement with the full conditions
# given in the SIESTA license, as signed by all legitimate users.
#
.SUFFIXES:
.SUFFIXES: .f .F .o .a .f90 .F90

SIESTA_ARCH=x86_64-unknown-linux-gnu--unknown

FPP=
FPP_OUTPUT=
FC=mpif90
RANLIB=ranlib

SYS=nag

SP_KIND=4
DP_KIND=8
KINDS=$(SP_KIND) $(DP_KIND)

FFLAGS=-g -O2  #-i-static
FPPFLAGS= -DFC_HAVE_FLUSH -DFC_HAVE_ABORT -DMPI
LDFLAGS=
FFLAGS_DEBUG= -g -O2    # whatever options you might need,guohuazhong
DUMMY_FOX= --enable-dummy # whatever options you might need,guohuazhong

ARFLAGS_EXTRA=

FCFLAGS_fixed_f=
FCFLAGS_free_f90=
FPPFLAGS_fixed_F=
FPPFLAGS_free_F90=


BLAS_LIBS=-L/public/software/intel/Compiler/11.1/059/mkl/lib/em64t -lmkl_intel_lp64 -lmkl_sequential -lmkl_lapack -lmkl_core -lguide -pthread
LAPACK_LIBS=-L/public/software/intel/Compiler/11.1/059/mkl/lib/em64t -lmkl_sequential -lmkl_core -pthread
BLACS_LIBS=-L/public/software/intel/Compiler/11.1/059/mkl/lib/em64t -lmkl_blacs_openmpi_lp64 -pthread
SCALAPACK_LIBS=-L/public/software/intel/Compiler/11.1/059/mkl/lib/em64t -lmkl_scalapack_lp64 -pthread

COMP_LIBS=
COMP_LIBS=dc_lapack.a liblapack.a libblas.a ######guohuazhong screened

NETCDF_LIBS=
NETCDF_INTERFACE=

LIBS=$(SCALAPACK_LIBS) $(BLACS_LIBS) $(LAPACK_LIBS) $(BLAS_LIBS) $(NETCDF_LIBS)

#SIESTA needs an F90 interface to MPI
#This will give you SIESTA's own implementation
#If your compiler vendor offers an alternative, you may change
#to it here.
MPI_INTERFACE=libmpi_f90.a
MPI_INCLUDE=/public/software/mpi/openmpi1.4.2-intel/include

#Dependency rules are created by autoconf according to whether
#discrete preprocessing is necessary or not.
.F.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F)  $<
.F90.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_free_F90) $<
.f.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_fixed_f)  $<
.f90.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_free_f90)  $<

---------------------------
是不是因为我是用ifort11编译的,所以库的设置才不正确?
我看他的回帖,在生成的arch.make文件中新加入
DUMMY_FOX= --enable-dummy
FFLAGS_DEBUG= -g -O2
然后还是出现前面类似的错误
而且,他说的:
后在Obj文件夹中的makefile文件修改第148-153行,将这几行写成如下形式
$(FoX_configured):
(cd FoX; touch arch.make ; \
         CONFIGURE="$(VPATH)/FoX/configure"; \
         $$CONFIGURE VPATH="$(VPATH)/FoX" \
         FC="$(FC_SERIAL)" FCFLAGS="$(FFLAGS_DEBUG)" \
         --enable-wcml $(DUMMY_FOX) || false )
注意(cd FoX; touch arch.make ; \这一行前是一个Tab空格,而不是一个space空格
将这两个地方修改好后,
make clen
make
我在我安装目录下的makefile文件下根本没找到类似的语句啊,怎么修改呢?
还有,我想做串行不做并行,编译是不是简单一点?
14楼2011-04-24 21:38:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

acridine

木虫 (正式写手)



小木虫(金币+0.5):给个红包,谢谢回帖
这个可能是ifort11和siesta存在不兼容的问题及解决方法。和你的找不到库函数还是不同的。
看了下siesta主页上的说明,它不是有自动configure嘛?你可以使用这个功能自动找一下函数库

执行软件目录中的Src/configure,应该可以自动搜索系统已经安装的编译器和数学库,并生成个make文件。可能会比你自己找起来容易些。
不过之后你可能会遇到这个不兼容的问题,具体是怎么回事,我没有用过,也就不了解了。
15楼2011-04-26 17:30:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mayim2008

金虫 (正式写手)


引用回帖:
Originally posted by acridine at 2011-04-26 17:30:22:
这个可能是ifort11和siesta存在不兼容的问题及解决方法。和你的找不到库函数还是不同的。
看了下siesta主页上的说明,它不是有自动configure嘛?你可以使用这个功能自动找一下函数库

执行软件目录中的Src/conf ...

谢谢你啊~不过给不了你金币了,系统说超过了,对不起啊
昨儿找小师弟弄来了10版本的MKL和ifort,等周末的时候我把系统重新装一下看看,真是无奈,别人咋一下就成功了呢,多事多磨~~
16楼2011-04-26 20:07:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mayim2008

金虫 (正式写手)


引用回帖:
Originally posted by acridine at 2011-04-26 17:30:22:
这个可能是ifort11和siesta存在不兼容的问题及解决方法。和你的找不到库函数还是不同的。
看了下siesta主页上的说明,它不是有自动configure嘛?你可以使用这个功能自动找一下函数库

执行软件目录中的Src/conf ...

啊,不好意思,又来找你帮忙了~~
我重装了系统,换了低一级版本
MKL和ifort版本跟zhangguangping的帖子是一样的
后面安装siesta2.0.2时,出现:
==> Incorporating information about present compilation (compiler and flags)
make[1]: Entering directory `/home/syzx/TEM/siesta-2.0.2/Src'
ifort -c -w -mp -tpp5 -O3     compinfo.F90
/home/juan/intel/fc/10.1.021/bin/fortcom:error while loading
shared libraries:libstdc++ .so.5:cannot open shared object
file: no such file or directory
ifort:error #10257:fatal error in /home/juan/intel/fc/10.1.021/bin/fortcom,terminated by OX7f
make[1]: *** [compinfo.o] Error 127
make[1]: Leaving directory `/home/juan/tem/siesta-2.0.2/Src'
make: *** [version] Error 2
我以为是没安装openmpi弄成的,于是又去安装openmpi
安装openmpi时,出现了,could not run a simple fortrun77 program~~
openmpi我的版本是1.4.2的
怎么回事呢?
17楼2011-05-04 19:48:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yangjun102

银虫 (小有名气)



小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
Originally posted by mayim2008 at 2011-05-04 19:48:28:
啊,不好意思,又来找你帮忙了~~
我重装了系统,换了低一级版本
MKL和ifort版本跟zhangguangping的帖子是一样的
后面安装siesta2.0.2时,出现:
==> Incorporating information about present compilat ...

个人认为是ifort没有安装成功。
提供一个参考网站:
http://bbs.pfan.cn/post-364383.html
18楼2011-05-09 22:34:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mayim2008 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见