Package: rmumps 5.2.1-30

Serguei Sokol

rmumps: Wrapper for MUMPS Library

Some basic features of 'MUMPS' (Multifrontal Massively Parallel sparse direct Solver) are wrapped in a class whose methods can be used for sequentially solving a sparse linear system (symmetric or not) with one or many right hand sides (dense or sparse). There is a possibility to do separately symbolic analysis, LU (or LDL^t) factorization and system solving. Third part ordering libraries are included and can be used: 'PORD', 'METIS', 'SCOTCH'. 'MUMPS' method was first described in Amestoy et al. (2001) <doi:10.1137/S0895479899358194> and Amestoy et al. (2006) <doi:10.1016/j.parco.2005.07.004>.

Authors:Serguei Sokol [aut, cre], Emmanuel Agullo [ctb], Patrick Amestoy [ctb, cph], Maurice Bremond [ctb], Alfredo Buttari [ctb], Philippe Combes [ctb], Marie Durand [ctb], Aurelia Fevre [ctb], Abdou Guermouche [ctb], Guillaume Joslin [ctb], Jacko Koster [ctb], Jean-Yves L'Excellent [ctb], Stephane Pralet [ctb], Chiara Puglisi [ctb], Francois-Henry Rouet [ctb], Wissam Sid-Lakhdar [ctb], Tzvetomila Slavova [ctb], Bora Ucar [ctb], Clement Weisbecker [ctb], Juergen Schulze [ctb], George Karypis [ctb], Douglas C. Schmidt [ctb], Isamu Hasegawa [ctb], Alexander Chemeris [ctb], Makoto Matsumoto [ctb], Takuji Nishimura [ctb], Francois Pellegrini [ctb], David Goudin [ctb], Pascal Henon [ctb], Pierre Ramet [ctb], Sebastien Fourestier [ctb], Jun-Ho Her [ctb], Cedric Chevalier [ctb], Timothy A. Davis [ctb, cph], Iain S. Duff [ctb, cph], John K. Reid [ctb, cph], Richard Stallman [ctb], Samuel Thibault [ctb, cph], CERFACS [cph], CNRS [cph], ENS Lyon [cph], INP Toulouse [cph], INRIA [cph], University of Bordeaux [cph], Regents of the University of Minnesota [cph], Free Software Foundation, Inc [cph], Alexander Chemeris [cph], Makoto Matsumoto [cph], Takuji Nishimura [cph], Universite de Bordeaux [cph], CNRS [cph], INSA [cph], INRAE [cph]

rmumps_5.2.1-30.tar.gz
rmumps_5.2.1-30.tar.gz(r-4.5-noble)rmumps_5.2.1-30.tar.gz(r-4.4-noble)
rmumps.pdf |rmumps.html
rmumps/json (API)
NEWS

# Install 'rmumps' in R:
install.packages('rmumps', repos = 'https://cloud.r-project.org')

Bug tracker:https://github.com/sgsokol/rmumps/issues0 issues

Uses libs:
  • openblas– Optimized BLAS
  • fortran– Runtime library for GNU Fortran applications
  • c++– GNU Standard C++ Library v3

On CRAN:

Conda:r-rmumps-5.2.1_22(2025-03-25)

fortranopenblascpp

2.78 score 2 packages 914 downloads 16 exports 1 dependencies

Last updated 10 months agofrom:adae4a799b. Checks:2 OK, 1 NOTE. Indexed: no.

TargetResultLatest binary
Doc / VignettesOKMar 12 2025
R-4.5-linux-x86_64OKMar 12 2025
R-4.4-linux-x86_64NOTEMar 12 2025

Exports:RmumpsRmumps__del_ptrRmumps__get_permutationRmumps__ptr_ijvRmumps__set_mat_ptrRmumps__set_permutationRmumps__solveptrRmumps__tripletRMUMPS_PERMRMUMPS_PERM_AMDRMUMPS_PERM_AMFRMUMPS_PERM_AUTORMUMPS_PERM_METISRMUMPS_PERM_PORDRMUMPS_PERM_QAMDRMUMPS_PERM_SCOTCH

Dependencies:Rcpp

Citation

To cite MUMPS in publications use:

P. R. Amestoy & al. (2001). A Fully Asynchronous Multifrontal Solver Using Distributed Dynamic Scheduling SIAM Journal on Matrix Analysis and Applications, 23(1), 15-41.

P. R. Amestoy & al. (2006). Hybrid scheduling for the parallel solution of linear systems Parallel Computing, 32(2), 136-156.

Corresponding BibTeX entries:

  @Article{,
    title = {A Fully Asynchronous Multifrontal Solver Using Distributed
      Dynamic Scheduling},
    author = {P. R. Amestoy and I. S. Duff and J. Koster and J.-Y.
      L'Excellent},
    journal = {SIAM Journal on Matrix Analysis and Applications},
    year = {2001},
    volume = {23},
    number = {1},
    pages = {15--41},
  }
  @Article{,
    title = {Hybrid scheduling for the parallel solution of linear
      systems},
    author = {P. R. Amestoy and A. Guermouche and J.-Y. L'Excellent and
      S. Pralet},
    journal = {Parallel Computing},
    year = {2006},
    volume = {32},
    number = {2},
    pages = {136--156},
  }

Readme and manuals

Rcpp Wrapper for MUMPS Library

MUMPS stands for "a MUltifrontal Massively Parallel sparse direct Solver" see more on their official site http://mumps.enseeiht.fr/. Currently, it is one of the most competitive direct solvers for sparse matrices. On my CPU (Xenon E5-2609 v2 @ 2.50GHz) I have a speedup ranging from 3 to 16 compared to the default solver from Matrix package. In addition, the precision of the solution is equal or even better than with Matrix.

Example of use:

   # prepare random sparse matrix
   library(Matrix)
   library(rmumps)
   n=2000
   a=Matrix(0, n, n)
   set.seed(7)
   ij=sample(1:(n*n), 15*n)
   a[ij]=runif(ij)
   diag(a)=0
   diag(a)=-rowSums(a)
   a[1,1]=a[1,1]-1
   am=Rmumps$new(a)
   b=as.double(a%*%(1:n)) # rhs for an exact solution vector 1:n
   # following time includes symbolic analysis, LU factorization and system solving
   system.time(x<-am$solve(b))
   bb=2*b
   # this second time should be much shorter
   # as symbolic analysis and LU factorization are already done
   system.time(xx<-am$solve(bb))
   # compare to Matrix corresponding times
   system.time(xm<-solve(a, b))
   system.time(xxm<-solve(a, bb))
   # compare to Matrix precision
   range(x-1:n)  # mumps
   range(xm-1:n) # Matrix
 
   # matrix inversion
   system.time(aminv <- am$inv())
   system.time(ainv <- solve(a)) # the same in Matrix
 
   # clean up by hand to avoid possible interference between gc() and
   # Rcpp object destructor after unloading this namespace
   rm(am)

Help Manual

Help pageTopics
Rcpp port of MUMPS library for LU or LDL^t factorization of sparse matricesrmumps-package rmumps
Rcpp Exported Class Wrapping MUMPS librarydeterminant.Rcpp_Rmumps dim.Rcpp_Rmumps ncol.Rcpp_Rmumps nrow.Rcpp_Rmumps print.Rcpp_Rmumps Rcpp_Rmumps-class Rmumps show.Rcpp_Rmumps solve.Rcpp_Rmumps solvet solvet.Rcpp_Rmumps
Delete via PointerRmumps__del_ptr
Get Permutation ParameterRmumps__get_permutation
Construct via Triplet PointersRmumps__ptr_ijv
Set Matrix via PointerRmumps__set_mat_ptr
Set Permutation ParameterRmumps__set_permutation
Solve via PointerRmumps__solveptr
Explore via TripletRmumps__triplet
Exported ConstantsRMUMPS_PERM RMUMPS_PERM_AMD RMUMPS_PERM_AMF RMUMPS_PERM_AUTO RMUMPS_PERM_METIS RMUMPS_PERM_PORD RMUMPS_PERM_QAMD RMUMPS_PERM_SCOTCH