INLA 算法自2009年被 Finn Lindgren and Håvard Rue 等人开发出来后,被广泛应用于空间统计建模,主要在学术领域,最近他们开发出来 PARDISO 库用于加速大规模稀疏对称矩阵的计算,这个加速库专为 INLA 包设计,有学术版和专业版,学术版免费而专业版收费,INLA 官网 http://www.r-inla.org 有丰富的介绍材料,除了卖软件 PARDISO 库,他们还有办培训、写教材做推广等,将学术成果商业化玩的飞起
INLA 近几年书籍陆续出现,如 Advanced Spatial Modeling with Stochastic Partial Differential Equations Using R and INLA
PARDISO 库的使用案例 https://github.com/arnedc/Needles
下面是R 包 INLA 内对 PARDISO 库的说明
The R-INLA page at the PARDISO project should open in your browser,
which gives more information (https://pardiso-project.org/r-inla)
The PARDISO package is a thread-safe, high-performance, and easy
to use software for solving sparse symmetric that arises in the
R-INLA approach to Bayesian inference within the R project for
Statistical Computing.
R-INLA supports PARDISO for MacOSX and Linux.
Windows support will be added later.
To improve R-INLA within parallel and high-performance computing,
we need a modern sparse-matrix library to build upon, and
and for this, PARDISO, is the very best choice in our opinion.
The PARDISO library is not enabled nor loaded by default
when calling inla(). You can you can enable it, by
- Obtaining a license key from pardiso-project.org/r-inla
The licenses is tied up to the username, so the same license
can be used one all computers where you have the same username.
(You can also collect various licenses in the same file, each
connected with different usernames.)
- Add the license key to R-INLA, by assigning the full path
of the key-file to variable 'pardiso.license', for example,
library(INLA)
inla.setOption("pardiso.license", "/sys/licenses/pardiso.lic")
- That is it!
Using remote computing with inla.call="remote", you may need to add
the full path to the license file (on the remote host) in the
/.inlarc file:
PardisoLicenseFile="FullPathToTheLicenseFile"
Otherwise, your local license file will be used if its available.
By default, the PARDISO solver will run in 'serial' mode, but for
large models, the parallel mode is preferred.
The mode can be controlled with
control.compute=list(openmp.strategy="pardiso.serial"),
and
control.compute=list(openmp.strategy="pardiso.parallel"),
Nested parallelism, will be supported in the future.
WARNING: The PARDISO support is highly experimental for the moment
and changes in the interface will likely occour.
Please report problems to help@r-inla.org
Havard Rue & Olaf Schenk
May 2018