The mini-chameleon educational-purpose project
Table of Contents
1. Home
1.1. About mini-chameleon
mini-chameleon is an educational-purpose project aiming at
designing a dense linear algebra solver for modern supercomputers.
Initially, the project includes only testing routines, while the
development of the actual computational routines is yet to be
completed. The objective is to implement a dense matrix-matrix
multiplication (GEMM) and an LU factorization (GETRF).
The project is named after the fully-featured chameleon dense linear algebra library.
1.3. Acknowledgements
The project has been originally written by Emmanuel Agullo and Mathieu Faverge for the option « Calcul Intensif et Sciences des données (CISD) » at Enseirb-Matmeca. Alycia Lisito is currently being contributing as well.
We are immensely thankful to the plafrim team for their constant and responsive support. We thank all CISD students for their very valuable feedback as well.
2. Setup
2.1. Clone mini-chameleon
git clone --recurse-submodules https://gitlab.inria.fr/solverstack/mini-examples/mini-chameleon.git
In the following, we assume to be in the mini-chameleon folder:
cd mini-chameleon
2.2. Set up guix
2.2.1. Install guix package management tool
The project can be conducted on any machine with guix package management tool pre-installed. If you're on a cluster where guix is deployed (see the list), such as plafrim, this step can be skipped. Otherwise, you can install guix on your Linux laptop in 5 minutes: just follow the binary install instructions.
2.2.2. Set up reference guix channels provided for mini-chameleon
As mentioned above, we assume to be in the mini-chameleon folder and we position guix to use reference channels for mini-chameleon
mkdir -p ~/.config/guix # in case it does not already exist ln -s $(pwd)/channels.scm ~/.config/guix/ # position the proposed channels for later "guix pull" ; alternative: cp ./channels.scm ~/.config/guix/channels.scm guix build hello # avoid issue with permissions guix pull --allow-downgrades # set up guix with hash guix # make sur the new guix is taken into account by bash guix describe --format=channels # check you have the expected channels
2.2.3. Enter a guix shell environment with dependencies for building mini-chameleon
guix shell --pure -D mini-chameleon bash gcc-toolchain -- bash --norc
2.3. Build and test mini-chameleon
mkdir -p build/debug cmake . -B build/debug/ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_STARPU=ON # -DENABLE_CUDA=ON ln -s build/debug/compile_commands.json . # Build: cmake --build build/debug # Test correction ./build/debug/testings/check_dgemm -v seq ./build/debug/testings/check_dgetrf -v seq # Test performance ./build/debug/testings/perf_dgemm -v seq --check ./build/debug/testings/perf_dgetrf -v seq --check
2.4. How to update?
2.4.1. Update mini-chameleon
We assume your git remote on gitlab.inria.fr is named inria:
git remote rename origin inria
You can then update mini-chameleon from gitlab.inria.fr reference with:
git pull inria
2.4.2. Update guix (if required)
Thanks to the above symbolic link to ~/.config/guix/channels.scm,
updating mini-chameleon directly positions up-to-date guix
channels. We thus can thus simply update guix itself with:
guix pull --allow-downgrades
3. Expected work
4. Tutorials
- Further notes to on getting started started.
- Tutorial: from basic hello world to
slurm,mpiandguix.