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
矩阵维数 -
which
Ritz值的位置which="LA", "SA", "LM", "SM", "BE"
-
nev
计算本征值的个数0 < nev < n
-
tol
浮点精度 -
resid
残差向量 -
ncv
Lanczos 向量个数 -
v
Lanczos 向量,ncv
列 -
ldv
Lanczos 向量的首列长度 -
iparam
int[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]=np
ido=3
时有用 -
iparam[8]=numop
OP*x 计算的次数 -
iparam[9]=numob
B*x 计算的次数 -
iparam[10]=numreo
重正交化的次数
-
-
ipntr
int[11]
的数组,保存指向workl
,workd
中起始位置的指针 -
workd
3*N
长的数组,算法内部使用 -
workl
lworkl
长的数组,算法内部使用 -
lworkl
workl
的长度,至少ncv**2 + 8*ncv
-
info
运行提示和错误信息
XYeupd
参数说明
-
rvec
指定是否产生本征矢rvec=true
产生本征矢,rvec=false
只产生本征值 -
howmny
指定产生本征矢的个数howmny="A"
计算nev
个,howmny="P"
计算 nev Schur 本征矢,howmny="S"
计算一部分本征值,由select
指定 -
select
指定计算的本征矢 -
dr
Ritz 值的实部 -
di
Ritz 值的虚部 -
z
Ritz 向量 -
ldz
Ritz 向量的首列维数 -
sigmar
shift 的实部, iparam[6]=3 or 4 时有效 -
sigmai
shift 的虚部 -
workev
3*ncv 的内部数组 -
bmat
以下参数与XYaupd
相同 n
which
nev
tol
resid
ncv
v
ldv
iparam
ipntr
workd
workl
lworkl
info
编译
基本的编译过程
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