| 查看: 3066 | 回复: 17 | |||
| 本帖产生 1 个 1ST强帖 ,点击这里进行查看 | |||
[交流]
【求助】安装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=bsdDEFS= $(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 ] |
» 猜你喜欢
请问有评职称,把科研教学业绩算分排序的高校吗
已经有6人回复
2025冷门绝学什么时候出结果
已经有6人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有7人回复
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有8人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有5人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
ubuntu下载下来提示安装后什么都没安装就可以启动,感觉奇怪啊。。。
已经有21人回复
I make some change about myself
已经有12人回复
用CTEX编辑论文,可是编译老过不去
已经有3人回复
求助vasp编译好后无法运行问题??
已经有24人回复
Siesta3.1编译出错:ld: cannot find -libmkl_scalapack_lp64
已经有3人回复
求助-如何得到羟基自由基(.OH)、单线态氧分子(1O2)、超氧负离子(O2-)
已经有6人回复
如何采用循环伏安法算锂离子的扩散速率
已经有6人回复
siesta-3.1编译成功,但有几个问题求助
已经有7人回复
申请减免版而费不成功如何处理?
已经有7人回复
vasp5.2 并行编译如何修改makefile
已经有5人回复
【分享】openmpi-intelmkl-siesta3.0 并行安装--两种方式---原创
已经有5人回复
【求助】Siesta安装报错
已经有3人回复
【求助】siesta2.0.2 安装有些警告
已经有4人回复
» 抢金币啦!回帖就可以得到:
坐标深圳,诚征女友
+1/158
双面压敏硅胶胶带
+2/90
坐标北京 真诚脱单
+1/89
加拿大/英属哥伦比亚大学曹彦凯课题组招收全奖博士/博后 [机器学习/优化/控制方向]
+1/84
东北大学数字钢铁全国重点实验室刘振宇教授课题组拟招收2026级入学博士研究生1~2名
+2/82
湘潭大学化学学院陈华杰教授课题组招收有机/高分子方向的博士研究生
+1/81
Call for papers,征稿
+1/57
澳门科技大学2026年数学博士招生—杨钧翔助理教授计算物理与数学课题组
+1/41
【宁德时代招聘】电化学科学家
+1/27
南京航空航天大学航天学院黄护林教授课题组博士研究生招生(工程热物理专业)
+1/15
2026年博士申请-全固态锂金属电池方向-聚合物电解质+硫化物电解质
+1/13
长江大学武汉校区诚招工程热物理、油气、电气等新能源博士-2025
+1/8
招聘2026年入学博士生
+1/7
招若干有分子生物,细胞培养,动物实验背景的人员(中山大学)
+1/7
招若干有机合成人员 (中山大学)
+1/7
浙江师范大学夏永姚/黄健航教授团队招收2026级博士
+1/6
香港城市大学 Microsystems and Semiconductor Technology Lab 博士生招生启事
+1/5
招收26年秋季入学博士生(北科大高精尖学院 力学超材料/机器学习/增材制造相关方向)
+1/4
上海交通大学AIMS-Lab招收AI for Science方向2026级博士生
+1/1
中国科学技术大学 精准智能化学重点实验室 武建昌课题组招聘博士,博士后
+1/1
★ ★ ★
zzy870720z(金币+3, 1ST强帖+1): 谢谢详细指点 2011-04-06 23:42:17
mayim2008(金币+5): 太感谢了~~~ 2011-04-07 18:15:16
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
★ ★ ★
zzy870720z(金币+3): 谢谢分享,呵呵 2011-04-07 16:18:39
mayim2008(金币+5): 谢谢啊~~ 2011-04-07 18:15:38
zzy870720z(金币+3): 谢谢分享,呵呵 2011-04-07 16:18:39
mayim2008(金币+5): 谢谢啊~~ 2011-04-07 18:15:38
|
我也是用的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
|
你好,今天去编译了一下,修改了如下参数, 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
★ ★
sunyang1988(金币+2): 谢谢指点 2011-04-09 09:47:38
mayim2008(金币+5): 谢谢啊~~ 2011-04-11 18:44:00
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
6楼2011-04-11 18:52:34
★ ★
mayim2008(金币+5): 太感谢了~~ 2011-04-11 22:26:57
zzy870720z(金币+2): 谢谢指教 2011-04-12 08:41:06
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
8楼2011-04-11 22:27:46
|
你好,我今天去测试了 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
★
zzy870720z(金币+1): 谢谢指点 2011-04-13 22:48:30
mayim2008(金币+5): 非常感谢~~ 2011-04-14 19:38:44
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
|
你好,我今天去看了,并没有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
★ ★
zzy870720z(金币+2): 谢谢指点 2011-04-15 00:00:47
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
13楼2011-04-24 21:32:31
|
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
15楼2011-04-26 17:30:22
16楼2011-04-26 20:07:08
|
啊,不好意思,又来找你帮忙了~~ 我重装了系统,换了低一级版本 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
18楼2011-05-09 22:34:27














回复此楼