sdesrozis / alien

Alien: an interface for linear solvers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Alien

All Alien world into one git repository. This repository aims at easing development by compiling together Alien's core, its high level dependencies and its plugins.

How to use ?

Simply clone this repository.

git clone https://github.com/arcaneframework/alien.git
cd alien

After, you can run CMake (at least version 3.15).

mkdir build && cd build
cmake ..

Useful CMake options:

  • ALIEN_FRAMEWORK_EXTERNAL, compile each subproject separately, OFF by default
  • ALIEN_PLUGIN_HYPRE, whether Hypre plugin is compiled, OFF by default
  • ALIEN_PLUGIN_SUPERLU, whether SuperLUDist plugin is compiled, OFF by default
  • ALIEN_USE_HDF5, whether HDF5 support is enabled, OFF by default.

We can mention also other generic CMake options :

  • CMAKE_EXE_LINKER_FLAGS="-Wl,--no-as-needed", useful on debian based linux distribution (like ubuntu), as without linker drops libraries that are not explicitly referenced, breaking our plugin interface.
  • CMAKE_VERBOSE_MAKEFILE=ON

Requirements

Alien requires a recent build environment:

  • recent CMake (>= 3.15)
  • C++ compiler that supports C++-14 (gcc, llvm/clang, intel)
  • MPI
  • boost, at least with timer and program options components enabled
  • glib2
  • BLAS
  • Google Tests, for unit tests.

On Ubuntu-20.04, installing this package is sufficient:

apt-get install build-essential cmake gcc g++ gdb \
       libhypre-dev libsuperlu-dist-dev \
       libboost-dev libboost-program-options-dev libgtest-dev libglib2.0-dev

For GoogleTest, one must finish installation by running:

cd $(mktemp -d) && cmake /usr/src/googletest && cmake --build . --target install

How it works ?

This repository contains several other repositories, needed for Alien. It contains the following subdirectories:

  • framework: from Arcane, these subdirectories are synchronized by git subtree
    • arccon, which contains our build system, based on CMake;
    • arccore, which contains base features on which Alien is built, mainly Array and ParallelManager;
  • src, the main repository for linear algebra,
  • plugins, with different plugins for Alien, to call Hypre or SuperLU external libraries.

For developers

To update arccore and arccon, use git subtree.

For example, to upgrade arccore to last commit of branch main of framework repository, run:

cd ..
git clone git@github.com:arcaneframework/framework
cd framework
git subtree split -P arccore -b arccore
cd ../alien
git subtree pull --prefix=framework/arccore --squash ../framework arccore

About

Alien: an interface for linear solvers

License:Apache License 2.0


Languages

Language:C++ 85.1%Language:C# 8.1%Language:CMake 6.3%Language:C 0.3%Language:Dockerfile 0.1%Language:Shell 0.0%