NumSA

NumSA is a highly modular numerical analysis toolbox I developed during my stay at, King Abdullah University Of Science and Technology 2020. NumSA rely on the following dependencies to work: - PyBind11, this it the C++ Python binder, more info here, - Eigen, this is the linear algebra library we decied to use, more info here,

Getting Started

PyBind11

To compile pybind11 move in the pybind11 folder (dep/pybind11) and use the following commands,

mkdir build
cd build
cmake ..
make check -j 4

Eigen

To compile QHull move in the pybind11 folder (dep/QHull) and use the following commands,

mkdir build
cd build
cmake ..
make install

last operation might require root privileges. An other possibility in Debian system is to install the package using the following command,

apt-get install libeigen3-dev

last operation might require root privileges.

TFHessian

The TFHessian package inside NumSA require tensorflow, numpy and scipy to work. When installing NumSA python package with the option Hessian pip will take care of installing all requirements. To install NumSA with the Hessian option run the following command inside the py folder,

pip install -e .[Hessian]

FEM

Suggested PETSc configuration,

./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-fblaslapack --download-openmpi --download-mumps --download-scalapack --download-parmetis --download-metis --with-petsc4py=1
make all
make check

while SLEPc suggested configuration,

./configure --with-slepc4py=1

Bibliography

  1. Halko, N., Martinsson, P.G. and Tropp, J.A., 2011. Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions. SIAM review, 53(2), pp.217-288.

  2. Safaryan, M., Islamov, R., Qian, X. and Richtárik, P., 2021. FedNL: Making Newton-Type Methods Applicable to Federated Learning. arXiv preprint arXiv:2106.02969.

  3. He, J., Li, L., Xu, J. and Zheng, C., 2018. Relu deep neural networks and linear finite elements. arXiv preprint arXiv:1807.03973.

  4. Yu, B., 2017. The deep Ritz method: a deep learning-based numerical algorithm for solving variational problems. arXiv preprint arXiv:1710.00211.