PHG安装

遇到的问题:


Ubuntu 12.04 (也试过13.04),configure和make看起来正常,不过make install的时候,会有下面的错误:

installing /usr/local/lib/libphg.so
installing /usr/local/include/phg.h
installing /usr/local/include/phg/*.h
installing /usr/local/share/phg/config*.log
installing /usr/local/share/phg/Makefile.inc
installing /usr/local/bin/[nt]etgen2medit
installing /usr/local/bin/{dof_info,phg_debug,mirror}
make: *** [install] Error 1

试着编译example下的例子,有下面错误:

/home/parallels/phg-0.9.0/src/libphg.so: undefined reference to `feenableexcept'
/home/parallels/phg-0.9.0/src/libphg.so: undefined reference to `sqrt'
/home/parallels/phg-0.9.0/src/libphg.so: undefined reference to `tan'
/home/parallels/phg-0.9.0/src/libphg.so: undefined reference to `log'
/home/parallels/phg-0.9.0/src/libphg.so: undefined reference to `feclearexcept'
/home/parallels/phg-0.9.0/src/libphg.so: undefined reference to `tgamma'
/home/parallels/phg-0.9.0/src/libphg.so: undefined reference to `exp'
/home/parallels/phg-0.9.0/src/libphg.so: undefined reference to `sin'
/home/parallels/phg-0.9.0/src/libphg.so: undefined reference to `pow'
/home/parallels/phg-0.9.0/src/libphg.so: undefined reference to `cos'
collect2: error: ld returned 1 exit status
make: *** [navier-stokes] Error 1

只有Navier-Stokes有错,其他都可以正常运行。

解决:Makefile中用到了PETSc,再查PHG手册,安装部分:

一些外部软件包,如 PETSc, HYPRE 和 SuperLU Dist 等需要用到 BLAS 或 LAPACK 库,其中PETSc 和 HYPRE 需要 LAPACK 和 BLAS, 而 SuperLU Dist 则仅需要 BLAS。如果希望在 PHG 中同时使用这些包,则它们必须引用相同的 BLAS 和 LAPACK。

运行 configure 时如果启用了 PETSc, 则 PHG 会自动从 PETSc 中获取有关 BLAS 和 LAPACK的信息,此时用户不用在命令行上指定 BLAS 和 LAPACK 库 (如果指定反而可能出错)。

如果没有安装或启用 PETSc, 则用户可以通过 configure 的选项来指定 BLAS 或/和 LAPACK库。下面是一些指定 BLAS/LAPACK 库的例子: 


./configure --disable-petsc --with-blas=-lgoto --with-lapack=-llapack
./configure --disable-petsc \
        --with-lapack="-L/opt/intel/mkl/lib/32 -lmkl_lapack -lmkl_def -lguide"

(注:可以用 --with-lapack 同时指定 BLAS 和 LAPACK 库,但不应该用 --with-blas 来指定 LA-PACK 库)。


上面--with-blas=-lgoto类似与gcc参数,lgoto为库文件的名称,比如我们放在/usr/local/lib 和 /usr/lib 下的是librefblas.a, 这里就要换成 --with-blas=-lrefblas


当没有安装或启用 PETSc 并且用户没有指定 BLAS/LAPACK 库时,configure 会试图自动寻找适当的 BLAS/LAPACK 库。如果找到,则显示出 (并使用) 找到的库。如果找不到,则给出一条警告信息。

如果使用 Fedora Linux 并且没有其它合适的 BLAS/LAPACK 库时,可以考虑安装 lapack-devel和 blas-devel 包。 


然后安装Lapack,具体安装过程如下:


安装lapack

1) gzip –cd lapack-3.1.1.tgz tar xf -

2) cd lapack-3.1.1

3) cp make.inc.ifort make.inc (需要修改时gedit make.inc)

4) gedit Makefile

如果之前没安装blas:



include make.inc
 
all: lapack_install lib lapack_testing blas_testing
 
lib: lapacklib tmglib
#lib: blaslib lapacklib tmglib
 
clean: cleanlib cleantesting cleanblas_testing
.

修改成:

include make.inc
 
all: lapack_install lib lapack_testing blas_testing
 
#lib: lapacklib tmglib
lib: blaslib lapacklib tmglib
 
clean: cleanlib cleantesting cleanblas_testing
.

保存

6) make

7)如果机群允许复制。复制blas_LINUX.a lapack_LINUX.a和tmglib_LINUX.a则三个文件到/usr/lib和/usr/local/lib两个文件夹中,并改名为:libblas.a liblapack.a和libtmglib.a。不能复制的话到6)结束。


(http://blog.sina.com.cn/s/blog_7eb8a69a01014onk.html)


上面(7)在机器上,实际是librefblas.a, liblapack.a, libtmglib.a ,并且不需要重新命名。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值