大部分转自
1.
首先确认要安装机器的配置和操作系统,我的是这样的
lsb_release
–a
LSB
Version:
:core-3.0-ia32:core-3.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch
Distributor
ID: RedHatEnterpriseAS
Description:
Red Hat Enterprise Linux AS release 4 (Nahant Update
4)
Release:
4
Codename:
NahantUpdate4
cat /proc/cpuinfo | grep name | cut -f2
-d: | uniq –c
查看CPU配置
4
Intel(R) Xeon(TM) CPU
3.40GHz
下载或寻找对应版本的Intel编译器,Intel的MKL数据库,如果要并行还需要下载并行软件包MPICH2或其他MPI软件包
我的是32位的操作系统,intel的cpu,我下载了如下两个编译器:
l_fc_p_10.1.008_ia32.tar.gz;
mkl数据库为:l_mkl_p_10.0.011.tgz
2.
Intel编译器和mkl的安装
查看各个安装软件的压缩包中的install.txt
从中找到Perform the
following steps to install the
compiler.
注意r我的serial numbe是以文件的形式存在,直接指定路径即可:/…/ licenses/*.lic
打开.bashrc
export
PATH=/…/intel/fc/10.1.018/bin:$PATH
export
PATH=/…/intel/cc/10.1.008/bin:$PATH
export cc=icc
export fc=ifort
source
/…/fc/10.1.018/bin/ifortvars.sh
source
/…/intel/idb/10.1.018/bin/idbvars.sh
source
/…/intel/cc/10.1.008/bin/iccvars.sh
source
/…/intel/idb/10.1.008/bin/idbvars.sh
source
/…/intel/mkl/10.0.011/tools/environment/mklvars32.sh
source
which
ifort,which icc
查看路径是否一致。
3.
CPMD串行的安装
具体的安装过程已有人总结过,我在这里注意提一下我的Makefile的设置,我选用的是PC-IFC平台,
./mkcofin.sh
PC-IFC >Makefile
make
clean
make
根据make提示的信息修改
首先删除Makefile中FFLAGS表示中无法识别的如w95,tpp6等信息(FFlags是设置ifort编译参数的)
其次在LFLAGS中建立mkl数据库的链接,这一块要看mkl的说明书,参看/…/intel/mkl/10.0.011/lib
*.os
Mkl的说明书中有Detailed directory
structure
lib/32 Contains all
libraries for IA-32 architecture
Static Libraries
Interface layer
libmkl_intel.a
library for Intel® compiler
libmkl_gf.a
library for GNU Fortran compiler
Threading
layer
libmkl_intel_thread.a
drivers library supporting Intel compiler
libmkl_gnu_thread.a
drivers library supporting GNU compiler
libmkl_sequential.a
drivers library
Computational layer
libmkl_core.a
library for IA-32 architecture
libmkl_ia32.a
library. Contains references to Intel MKL libraries
libmkl_lapack.a
library. Contains references to Intel MKL libraries
libmkl_solver.a
Solver, Interval Solver, and GMP routines
libmkl_solver_sequential.a
version of Sparse Solver, Interval Solver, and GMP
routines library
libmkl_scalapack.a
library. Contains references to Intel MKL libraries
libmkl_scalapack_core.a
ScaLAPACK routines
libmkl_cdft.a Dummy library.
references to Intel MKL libraries
libmkl_cdft_core.a
version of FFTs
RTL layer
libguide.a
Intel® Legacy OpenMP* run-time library for static
linking
libiomp5.a
run-time library for static
linking libmkl_blacs.a BLACS routines supporting the following
MPICH versions:
• Topspin* MPICH version 1.2.5 configured with ch_vapi
device
• Myricom* MPICH version 1.2.5.10
• ANL* MPICH version 1.2.5.2
libmkl_blacs_intelmpi.a
routines supporting Intel MPI 1.0
libmkl_blacs_intelmpi20.a
BLACS routines supporting Intel MPI 2.0 and 3.0, and
MPICH2.0
libmkl_blacs_openmpi.a
routines supporting OpenMPI.
具体每个mkl版本这部分说明可能有所不同
根据这部分说明
我的设置如下:
FFLAGS = -c
-O3
LFLAGS =
-L/…/intel/mkl/10.0.011/lib/32 -lmkl_intel -lmkl_sequential
-lmkl_core -lmkl_ia32 -lmkl_lapack -lmkl_solver_sequential
-lmkl_scalapack -lmkl_cdft -lguide -lbiomp5 -lpthread
–static
CFLAGS = -c
-O2 -Wall
CPP = /lib/cpp
-P -C -traditional
CPPFLAGS =
-D__Linux -D__PGI -DFFT_DEFAULT -DLINUX_IFC
NOOPT_FLAG
=
CC =
icc
FC =
ifort
LD =
ifort
AR =
ar
修改后再次make
clean,make
4.
CPMD并行的安装
我选用的是PC-IFC-MPI平台,
首先安装mpich2并行软件
安装成功后,设置环境变量(.bashrc):
export
PATH=/home/myanping/mpich2-install/bin/:$PATH
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/myanping/mpich2-install/lib/
source一下.bashrc文件
./mkcofin.sh
PC-IFC-MPI >Makefile
make
clean
make
根据make提示的信息修改删除Makefile中FFLAGS表示中无法识别的如w95,tpp6等信息(FFlags是设置ifort编译参数的)
在LFLAGS中不仅要建立适合并行的mkl数据库的链接,还有建立mpi库的链接
我的设置如下:
FFLAGS = -c
-O3
LFLAGS =
-L/home/myanping/intel/mkl/10.0.011/lib/32 -lmkl_intel
-lmkl_intel_thread -lmkl_core -lmkl_ia32 -lmkl_lapack -lmkl_solver
-lmkl_scalapack -lmkl_cdft -lguide -lbiomp5 -lmkl_blacs
-lmkl_blacs_intelmpi -lpthread -static -Vaxlib \
-L/home/myanping/mpich2-install/lib -lfmpich
-lmpich
CFLAGS = -c
-O2 -Wall
CPP = /lib/cpp
-P -C -traditional
CPPFLAGS = -D__Linux -D__PGI -DFFT_DEFAULT
\
-DPARALLEL -DMYRINET -DLINUX_IFC
NOOPT_FLAG =
CC =
mpicc
FC =
mpif77
LD =
mpif77
AR =
ar
make
clean
make
编译成功。
最关键的步骤修改 Makefiel中的”Default
Configuration for PC-IFC”。
这是其中各个部分代表的意思
FFLAGS Fortran flags
LFLAGS Link editor flags
CFLAGS C compiler flags
CPP Preprocessor program
CPPFLAGS CPP flags
FC Fortran compiler
LD Link editor
AR Archive library maintainer
RANLIB Converts archives to random libraries
SRC Source files directory (default=.)
DEST Object files directory (default=.)
Use to write irat.inc in the right directory
BIN Use to put the cpmd.x executable
(default=.)
(只是个人意见)主要修改的部分LFLAGS,需要详细的看你的MKL文件/opt/intel/mkl/10.2.5.035/lib中有哪些东西,根据不同版本的MKL内容修改,这里我借鉴了myanping在分子模拟论坛中MKL列表(网址1)
Detailed directory structure
lib/32 Contains all libraries for IA-32 architecture
Static Libraries
Interface layer
libmkl_intel.a Interface library for Intel®
compiler
libmkl_gf.a Interface library for GNU Fortran compiler
Threading layer
libmkl_intel_thread.a Parallel drivers library supporting Intel
compiler
libmkl_gnu_thread.a Parallel drivers library supporting GNU
compiler
libmkl_sequential.a Sequential drivers library
Computational layer
libmkl_core.a Kernel library for IA-32 architecture
libmkl_ia32.a Dummy library. Contains references to Intel MKL
libraries
libmkl_lapack.a Dummy library. Contains references to Intel MKL
libraries
libmkl_solver.a Sparse Solver, Interval Solver, and GMP
routines
libmkl_solver_sequential.a Sequential version of Sparse Solver,
Interval Solver, and GMP
routines library
libmkl_scalapack.a Dummy library. Contains references to Intel MKL
libraries
libmkl_scalapack_core.a ScaLAPACK routines
libmkl_cdft.a Dummy library. Contains references to Intel MKL
libraries
libmkl_cdft_core.a Cluster version of FFTs
RTL layer
libguide.a Intel® Legacy OpenMP* run-time library
for static linking
libiomp5.a Intel® Compatibility OpenMP* run-time
library for static
linking libmkl_blacs.a BLACS routines supporting the following
MPICH versions:
• Topspin* MPICH version 1.2.5 configured with ch_vapi
device
• Myricom* MPICH version 1.2.5.10
• ANL* MPICH version 1.2.5.2
libmkl_blacs_intelmpi.a BLACS routines supporting Intel MPI
1.0
libmkl_blacs_intelmpi20.a BLACS routines supporting Intel MPI 2.0
and 3.0, and MPICH2.0
libmkl_blacs_openmpi.a BLACS routines supporting
OpenMPI.
具体每个mkl版本这部分说明可能有所不同。
又去掉了FFLAGS中的一些无法识别的如w95,tpp6等信息,在CPPFLAGS中添加了-DINTEL_MKL,在LD添加了-i-static,最终版本
#————— Default Configuration for PC-IFC —————
SRC = .
DEST = .
BIN = .
FFLAGS = -c -O3
LFLAGS = -L/opt/intel/mkl/10.2.5.035/lib/32 -lmkl_intel
-lmkl_blas95 -lmkl_blacs -lmkl_lapack -lmkl_sequential -lmkl_core
-lmkl_solver_sequential -lguide -liomp5 -lpthread -lmkl_solver
-lmkl_vml_ia
CFLAGS = -c -O2 -Wall
CPP = /lib/cpp -P -C -traditional
CPPFLAGS = -D__Linux -D__PGI -DFFT_DEFAULT -DLINUX_IFC
-DINTEL_MKL
NOOPT_FLAG =
CC = gcc
FC = ifort
LD = ifort -i-static
AR = ar
#—————————————————————————-
# Personal Configuration
#—————————————————————————-
#—————————————————————————-
# End of Personal Configuration
#—————————————————————————-
CFGDEST = .
CFGMACH = PC-IFC