Draft: Rabab/al4san
I have initiated a merge request for chameleon with al4san integration. I would really appreciate if you can accept it.
Merge request reports
Activity
Hello @faverge,
Thanks you very much for your respond. I am using Jenkins currently and I will be happy to do it in your side.
Thank you again
Dear @fpruvost,
I would like to ask you how can I help you in order to integrate al4san in the hiepacs image for the IC., in order for the pull request to compile.
Could you please share with me your username on github to give you an access to al4san repository?
Thank you and I appreciate your support.
Hello @fpruvost,
Yes it is a private repository on github. You have an access to it at https://github.com/ecrc/al4san-dev/invitations
Please give me the Docker image SSH key to add it to the deploy key list of al4san.
Thank you.
Hello @fpruvost ,
I have done adding the ssh key.
Building Al4san resemble chameleon:
1- Enable quark using AL4SAN_SCHED_QUARK option. For quark runtime, you need to use quark runtime directory inside al4san package which has exposed one private function for task flag.
2- Enable starpu using AL4SAN_SCHED_STARPU option. For starpu, you need to use 1.3 branch nightly snapshot.
3- Enable parsec using AL4SAN_SCHED_PARSEC option. In order for chameleon to work with last commit from parsec the header #include <parsec/insert_function.h> inside chameleon_parsec.h needs to be changed to #include <parsec/interfaces/superscalar/insert_function.h>.
Thank you very much
Hello @fpruvost ,
First, I will give you just a brief of what AL4SAN is and what does it means for Chamaleon. AL4SAN is abstraction layer that Chameleon will use to switch between different runtime systems when it is coming to define the task. Therefore, Chameleon does not need to define codelets for each runtime instead it will use AL4SAN APIs as unified interface to Quark, StarPU, and PaRSEC.
As you see, in Chameleon in this merge request, there is al4san-codelet folder which contains Cholesky, QR, and Blas3 codelets. These codelets use al4san task api for defining task insert and task unpack and it will enable switching between runtimes without changing the codelet code for each runtime.
Here it is the steps for enabling chameleon with al4san. You need first to add FindAL4SAN.cmake to cmake_modules/morse_cmake/modules/find/. I have attached FindAL4SAN.cmake module. FindAL4SAN.cmake
For Quark runtime:
1. You need to build, compile and install quark runtime inside al4san repository. 2. Building AL4SAN with Quark runtime as backend: cmake .. -DAL4SAN_SCHED_QUARK=ON -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DQUARK_INCDIR=al4san/quark-0.9.0 -DQUARK_LIBDIR=al4san /quark-0.9.0 3. Compile, install, and use PKG_CONFIG_PATH environment variable to specify paths in which pkg-config will search for al4san.pc that built based on Quark. 4. Then, you will be able to build, compile, install Chameleon. Chameleon with Al4san can be enabled by using cmake option -DCHAELEON_USE_AL4SAN=ON:
cmake .. -DCHAMELEON_SCHED_QUARK=ON -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DCHAMELEON_USE_AL4SAN=ON
5. Chameleon now will use al4san with quark as backend.
For StarPU runtime:
1. You need to build, compile and install 1.3 branch nightly snapshot. 2. Building AL4SAN with StarPU runtime as backend:
AL4SAN-StarPU:
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DAL4SAN_SCHED_STARPU=ON
AL4SAN-StarPU-mpi:
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DAL4SAN_SCHED_STARPU=ON -DAL4SAN_USE_MPI=ON
AL3SAN-StarPU-gpu:
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DAL4SAN_SCHED_STARPU=ON -DAL4SAN_ENABLE_CUDA=ON -DAL4SAN_USE_CUDA=ON
3. Compile, install, and use PKG_CONFIG_PATH environment variable to specify paths in which pkg-config will search for al4san.pc that built based on StarPU. 4. Then, you will be able to build, compile, install Chameleon. Chameleon with Al4san can be enabled by using cmake option -DCHAELEON_USE_AL4SAN=ON:
*Chameleon -StarPU *:
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DCHAMELEON_SCHED_STARPU=ON -DCHAMELEON_USE_ALTANAL=ON
Chameleon-StarPU-mpi:
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DCHAMELEON_SCHED_STARPU=ON -DCHAMELEON_USE_ALTANAL=ON -DCHAMELEON_USE_MPI=ON
Chameleon-StarPU-gpu:
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DCHAMELEON_SCHED_STARPU=ON -DCHAMELEON_ENABLE_CUDA=ON -DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_ALTANAL=ON
5. Chameleon now use al4san with starpu as backend.
For PaRSEC runtime:
1. You need to build, compile and install parsec runtime. Moreover, In order for chameleon to work with last commit from parsec the header #include <parsec/insert_function.h> inside chameleon_parsec.h needs to be changed to #include <parsec/interfaces/superscalar/insert_function.h>. 2. Building AL4SAN with PaRSEC runtime as backend:
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DAL4SAN_SCHED_PARSEC=ON -DAL4SAN_USE_MPI=ON
3. Compile, install, and use PKG_CONFIG_PATH environment variable to specify paths in which pkg-config will search for al4san.pc that built based on PaRSEC. 4. Then, you will be able to build, compile, install Chameleon. Chameleon with Al4san can be enabled by using cmake option -DCHAELEON_USE_AL4SAN=ON:
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DCHAMELEON_SCHED_PARSEC=ON -DCHAMELEON_USE_MPI=ON -DCHAMELEON_USE_ALTANAL=ON
5. Chameleon now will use al4san with parsec as backend.
Please note when CHAMELEON_USE_AL4SAN option is OFF, the chameleon should run as usual.
I hope these details are clear and let me know if you have any question.
Edited by Rabab AlomairyYou could at least have mentioned the world cup championship, that would make more sense ;-)
Are you referring to AL4SAN repo? If yes, we want to get AL4SAN out asap, probably in a couple of weeks or so. But in the meantime, can't we integrate in a dev branch of chameleon using a tarball of Al4SAN? This won't be disruptive and will be a non-intrusive solution. Thoughts?
StarPU and quark are OK. I am not sure about PaRSEC. @Rabab ?
Hello @fpruvost
AL4SAN is compatible with:
1- starpu 1.2.6 the last release
2- parsec from
https://bitbucket.org/mfaverge/parsec.git
3- Quark from
https://github.com/ecrc/quark
. There is some slight changes for quark for purpose of our al4san.Edited by Rabab Alomairy@fpruvost Have you found FindAL4SAN.cmake or you can find it in the attachment? You need to add FindAL4SAN.cmake to chameleon/cmake_modules/morse_cmake/modules/find
Edited by Rabab Alomairyadded 1 commit
- 5b32d9a0 - include_directories for al4san under al4san cmake