arpack
ARPACK
新版本在 arpack-ng , 文档在 rice - ARPACK
函数说明
头文件 arpack.h 中的函数有
-
<?>neupd_c计算一般矩阵的本征值,<?> = sdcz -
<?>naupd_c计算一般矩阵的反向通信接口,<?> = sdcz -
<?>seupd_c计算对称矩阵的本征值,<?> = sd -
<?>saupd_c计算对称矩阵的反向通信接口,<?> = sd
arpack 中没有计算复厄米矩阵的函数,复矩阵一律用一般矩阵的计算函数
XYaupd 参数说明
-
ido反向通信标志,第一次运行ido=0 -
bmat问题类型标志,标准本征值问题bmat="I", 扩展本征值问题bmat="G" -
n矩阵维数 -
whichRitz值的位置which="LA", "SA", "LM", "SM", "BE" -
nev计算本征值的个数0 < nev < n -
tol浮点精度 -
resid残差向量 -
ncvLanczos 向量个数 -
vLanczos 向量,ncv列 -
ldvLanczos 向量的首列长度 -
iparamint[11]的数组,保存了 11 个设置参数-
iparam[0]=ishift选择隐式移动的方法,ishift=0由用户指定,ishift=1由约化三对角矩阵决定 -
iparam[1]=levec没用 -
iparam[2]=mxiter最大 Arnoldi 更新迭代次数 -
iparam[3]=nb块大小,只能取nb=1 -
iparam[4]=nconv收敛了的 Ritz 值个数 -
iparam[5]=iupd没用 -
iparam[6]=mode指定本征值问题的类型只能取mode = 1,2,3,4,5 -
iparam[7]=npido=3时有用 -
iparam[8]=numopOP*x 计算的次数 -
iparam[9]=numobB*x 计算的次数 -
iparam[10]=numreo重正交化的次数
-
-
ipntrint[11]的数组,保存指向workl,workd中起始位置的指针 -
workd3*N长的数组,算法内部使用 -
workllworkl长的数组,算法内部使用 -
lworklworkl的长度,至少ncv**2 + 8*ncv -
info运行提示和错误信息
XYeupd 参数说明
-
rvec指定是否产生本征矢rvec=true产生本征矢,rvec=false只产生本征值 -
howmny指定产生本征矢的个数howmny="A"计算nev个,howmny="P"计算 nev Schur 本征矢,howmny="S"计算一部分本征值,由select指定 -
select指定计算的本征矢 -
drRitz 值的实部 -
diRitz 值的虚部 -
zRitz 向量 -
ldzRitz 向量的首列维数 -
sigmarshift 的实部, iparam[6]=3 or 4 时有效 -
sigmaishift 的虚部 -
workev3*ncv 的内部数组 -
bmat以下参数与XYaupd相同 nwhichnevtolresidncvvldviparamipntrworkdworkllworklinfo
编译
基本的编译过程
sh bootstrap
./configure
make
make check
make install
ILP64: int64 支持
-
LP64在 MKL 中表示int做指标 -
ILP64表示long long int做指标
arpack 沿用了 MKL 的叫法。
配置:
- 编译时定义
INTERFACE64 - 使用
arpackdef.h头文件 - 使用
a_int类型 (architecture int)
INTERFACE64=1 ./configure --enable-mpi --enable-icb --with-blas=openblas64
icb: 生成 c 头文件
arpack-ng 使用 fortran 的 isocbinding(icb) 生成 c 头文件
./configure --enable-icb
cmake -D ICB=ON
parpack: MPI 支持
./configure --enable-mpi
使用 cmake
-
BLA_VENDOR=Intel10_64ilp使用 ilp64 的 MKL -
CMAKE_POSITION_INDEPENDENT_CODE=ON使用-fPIC
CC=gcc FC=gfortran cmake -D MPI=ON -D ICB=ON -DCMAKE_INSTALL_PREFIX=$HOME/app/arpack -DBLA_VENDOR=Intel10_64ilp -DBUILD_SHARED_LIBS=OFF -DINTERFACE64=1 -DCMAKE_POSITION_INDEPENDENT_CODE=ON ..
评论
Comments powered by Disqus