ubuntu14.04下配置phg

0. 如果是安装完ubuntu后第一次配置phg,那么要首先apt-get install g++  gcc  gfortran;

    并且还要安装mpich,原因是phg要用到mpi做并行,至于mpich的下载和安装如下,确保安装了g++和gcc和gfortron编译器:

    1). 按照自己习惯将mpich-3.1.4.tar.gz源码解压到 /usr/local/src 目录下

    2). cd /usr/local/src/mpich-3.1.4/

    3). ./configure --prefix=/usr/local/mpich

          (...省略...)

         make

          (...省略...)

         make install

          (...省略...)

        安装结束!

    4). 添加下面这行到/etc/profile文件的最后,然后重新起动系统使环境变量永久生效。

          export PATH=/usr/local/mpich-3.1.4/bin:$PATH


     具体更细节的mpich的安装可以参考:http://www.lupaworld.com/thread-871330-1-1.html


1. 首先从官网下载好压缩文件:http://lsec.cc.ac.cn/phg/

2. 按照我自己在ubuntu14.04下安装软件的习惯,将源码解压到了/usr/local/src目录下

 

3. 进入到phg-0.9.2目录下

4. 可以查看 INSTALL内容:vim INSTALL

5. 下面是具体配置phg

1). 首先查看configure 的帮助内容: ./configure --help | more
     在所有configure‘选项’内容中需要注意的是

    a).  ----prefix=/path 这个‘选项’,其中/path是自己安装位置的路径,我自的安装路径为/usr/local/phg

     b1).  还有下下面的那个静态库的选项,

         尤其要在 ./configure 选项中要加入 --disable-shared ,否则在下面的 make all 或make install 操作中会提示下面的错误:

/usr/local/src/phg-0.9.2/src/libphg.so:对‘feenableexcept’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘sqrt’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘tan’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘log’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘feclearexcept’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘tgamma’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘exp’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘sin’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘pow’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘cos’未定义的引用
collect2: error: ld returned 1 exit status
make[1]: *** [navier-stokes] 错误 1
make[1]:正在离开目录 `/usr/local/src/phg-0.9.2/examples'
make: *** [all] 错误 2

    b2). 如果在 ./configure 选项中没有加入 --disable-shared 在下面的 make all 或make install 操作中会提示下面的错误:

/usr/local/src/phg-0.9.2/src/libphg.so:对‘feenableexcept’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘sqrt’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘tan’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘log’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘feclearexcept’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘tgamma’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘exp’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘sin’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘pow’未定义的引用
/usr/local/src/phg-0.9.2/src/libphg.so:对‘cos’未定义的引用
collect2: error: ld returned 1 exit status
make[1]: *** [navier-stokes] 错误 1
make[1]:正在离开目录 `/usr/local/src/phg-0.9.2/examples'
make: *** [all] 错误 2

          解决方法一:如同 b1) 中在 ./configure 选项中要加入 --disable-shared

          解决方法二:由错误提示可知,明显都是对于一些数学函数没有定义,那么肯定是在 make 过程中,没有将 libm.a(这个库其实应该是在安装gcc或个g++时自带的) 包含(include)进去,在根目录下搜索 libm.a,可以看到该库在目录 /usr/lib/x86_64-linux-gnu/ 下,再来对比 phg/Makefile.inc(关于 Makefile.inc 可以再查查具体含义) 文档中 LIBS= 这一项中 -L/usr/lib/x86_64-linux-gnu 后面没有接着 -lm(这里可以自行从网上找找如何包含库文件的语法),所以在 -L/usr/lib/x86_64-linux-gnu -lm,然后保存。

                                   再 make all 或 make install 就ok了。


2). 然后进行./configure 配置

3). make clean; make

4). 按照 INSTALL 的内容,进行 make all 

5). make install

6). make install-doc


安装成功,但是还是有下面的警告,貌似可以忽略了:



6. 配置好phg后,接下来就要跑跑example了,要想要用mpich -np 2 ./poisson来开2个进程的话,还需要如下的配置

1). 按照 INSTALL 的内容,在'obj/'文件夹中参考 obj/ReadMe.txt 中说明的操作(要根据自己的机子类型)

      只是我自己的操作在 ./configure 和 make 步骤时略微不同,下面是我自己的操作

      cd phg-x.x.x

      cp obj/mpich-x86_64/double_int/*.o src/.

      rm -f src/{refine,coarsen}.c src/libphg.*

      ./configure --prefix=/usr/local/phg/ --disable-shared

      make all

2). 第二点其实是关于 Makefile 的,对于 Makefile 内容并不是很了解,但大概能看懂是什么什么意思,这里想要说的是按照pgh用户手册中提供的方法

           如上面phg手册中提供的Makefile文件的内容很简单,但是由此make出来的可执行文件不能用 mpirun -np 2 ./poisson,只能用 mpirun -np 1 ./poisson,

           也就是说由此make出的可执行文件只能用单线程,不能用多线程。所以最好的办法是在 phg 源码中的 phg-x.x.x/examples/Makefile 中进行修改,修改

           时仍需要特别注意一些路径,比如lib的路径等等


7. phg源码中在 phg-x.x.x/utils 文件夹中提供了几个shell脚本

1). 比较有用的就是 phgdoc 这个 shell 脚本,例如可以利用命令 ./phgdoc phgImport 来查询函数 phgImport    的用法。

      如果 ./phgdoc 不是可执行文件时可以利用 chmod a+x phgdoc 来进行权限的修改。

      第一次用可能会提示 gawk: 未找到命令,此时要安装 gawk 即可。

2). 最重要的一个脚本就是 utils/tetgen2medit 因为自己一直用的是 tetgen 来生成网格的,所以这条脚本就将 tetgen 生成的网格

     转换成 medit 格式的了,所以很重要,但是在 utils/tetgen2medit 文件中没有添加 PATH 路径,以致在执行 ./tetgen2medit 时总

     是提示错误

     a). 首先可以看到是没添加 PATH 路径的

    

     执行时总是提示有错误:

    

     

      b).  所以在 tetgen2medit 脚本中添加如下的路径:

     

       其实其中最重要的路径是那个 /usr/local/src/tetgen1.5.0/build,其实也就是可执行文件 tetgen 所在的目录,因为没添加路径时提示的错误就是 tetgen 找不到命令,

       当然你把 tetgen 拷贝到其他文件夹下然后添加相应的路径也是可以的。其余添加的路径只是为了以防万一。

     

       这样在执行如下的命令就是成功的

       

       c). 注意上图中的脚本 utils/tetgen2medit 执行命令时命令格式 ./tetgen2medit mytest.poly -pq0.9a0.15 >mytest1.mesh 其中的 -pq0.9a0.15 是 tetgen 的命令选项。

       

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值