diff --git a/doc/user/chapters/installing.org b/doc/user/chapters/installing.org index 8724ccffc507b4a9c71867a744706de5e65ef06c..da94a391f974c34cdd3be230791b68d80346aa87 100644 --- a/doc/user/chapters/installing.org +++ b/doc/user/chapters/installing.org @@ -3,13 +3,14 @@ libraries that must be installed on the system. # , it provides an interface to be called from Fortran Chameleon can be built and installed on UNIX systems (Linux) by the -standard means of [[http://www.cmake.org/][CMake]]. General information about CMake, as well as -installation binaries and CMake source code are available from [[http://www.cmake.org/cmake/resources/software.html][here]]. +standard means of [[http://www.cmake.org/][CMake]]. +General information about CMake, as well as installation binaries and CMake +source code are available from +[[http://www.cmake.org/cmake/resources/software.html][here]]. To get support to install a full distribution Chameleon + dependencies -we encourage users to use [[sec:ug:guix][GNU Guix]] or [[sec:ug:spack][Spack]]. - -Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and [[sec:ug:brew][MacOSX]]. +we encourage users to use [[sec:ug:guix][GNU Guix]] or [[sec:ug:spack][Spack]] +and [[sec:ug:brew][Brew]] on macOS. *** Getting Chameleon :PROPERTIES: @@ -90,9 +91,9 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and # Install StarPU (with MPI and FxT enabled) mkdir -p $HOME/install cd $HOME/install - wget https://files.inria.fr/starpu/starpu-1.3.10/starpu-1.3.10.tar.gz - tar xvzf starpu-1.3.10.tar.gz - cd starpu-1.3.10/ + wget https://files.inria.fr/starpu/starpu-1.4.7/starpu-1.4.7.tar.gz + tar xvf starpu-1.4.7.tar.gz + cd starpu-1.4.7 ./configure --prefix=/usr/local --with-fxt=/usr/lib/x86_64-linux-gnu/ make -j5 sudo make install @@ -203,8 +204,8 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and StarPU can be used to benefit from GPUs and distributed-memory environment. Note StarPU is enabled by default. - *Caution about the compatibility:* Chameleon has been mainly tested - with StarPU-1.1, 1.2 and 1.3 releases. + *Caution about the compatibility:* current Chameleon has been mainly tested + with StarPU-1.4 releases. ***** PaRSEC [[http://icl.utk.edu/parsec/][PaRSEC]] is a generic framework for architecture aware scheduling and management of micro-tasks on distributed many-core @@ -462,40 +463,6 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and The [[https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html#variable:CMAKE_PREFIX_PATH][CMAKE_PREFIX_PATH]] can be used to indicate where dependencies are installed. -*** Distribution Debian -:PROPERTIES: -:CUSTOM_ID: doc-install-debian -:END: - <<sec:ug:debian>> - Download one of the available package for your distribution here - https://gitlab.inria.fr/solverstack/chameleon/-/packages, then - install as follows - #+begin_src sh - sudo apt-get install ./chameleon_1.2.0-1_amd64.deb -y - // and to uninstall use - // sudo apt-get autoremove -y chameleon - #+end_src - Chameleon will be installed on your system meaning you can use - drivers for performance tests - #+begin_src sh - export OPENBLAS_NUM_THREADS=1 - mpiexec -n 2 chameleon_stesting -o gemm -n 6400 - #+end_src - and use Chameleon library in your own project - #+begin_src sh - # example usage: use chameleon library in your own cmake project (we provide a CHAMELEONConfig.cmake) - git clone https://gitlab.inria.fr/solverstack/distrib.git - cd distrib/cmake/test/chameleon && mkdir build && cd build && cmake .. && make && ./test_chameleon - - # example usage: use chameleon library in your own not cmake project - # use pkg-config to get compiler flags and linking - pkg-config --cflags chameleon - pkg-config --libs chameleon - # if there are static libraries use the --static option of pkg-config - #+end_src - - Do not hesitate to send an [[mailto:florent.pruvost@inria.fr][email]] if you need a package for your - Debian distribution. *** Distribution of Chameleon using GNU Guix :PROPERTIES: :CUSTOM_ID: doc-install-guix @@ -503,7 +470,7 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and <<sec:ug:guix>> We provide [[http://guix.gnu.org/][Guix]] packages to install Chameleon with its dependencies - in a reproducible way on GNU/Linux systems. For MacOSX please refer + in a reproducible way on GNU/Linux systems. For macOS please refer to the next sections about Brew or Spack packaging. If you are "root" on the system you can install Guix and directly @@ -523,11 +490,6 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and sudo ./guix-install.sh #+end_src - or on Debian - #+begin_src sh :eval never-export - sudo apt install guix - #+end_src - The Chameleon packages are not official Guix packages. It is then necessary to add a channel to get additional packages. Create a ~/.config/guix/channels.scm file with the following snippet: @@ -574,12 +536,18 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and Notice that there exist several build variants - chameleon (default) : with starpu - with mpi - with OpenBlas + - chameleon-aocl : with starpu - with mpi - with FLAME/BLIS from AMD + - chameleon-mkl : default version but with Intel MKL sequential to replace OpenBlas - chameleon-mkl-mt : default version but with Intel MKL multithreaded to replace OpenBlas - - chameleon-mkl-mt-wompi : with Intel MKL multithreaded and without mpi - - chameleon-cuda : with starpu - with mpi - with cuda - - chameleon-cuda-wompi : with starpu - without mpi - with cuda - - chameleon-cuda-mkl-mt : with starpu - with mpi - with cuda - with Intel MKL multithreaded to replace OpenBlas - - chameleon-cuda-mkl-mt-wompi : with starpu - without mpi - with cuda - with Intel MKL multithreaded to replace OpenBlas + - chameleon-mkl-mt-nompi : with Intel MKL multithreaded and without mpi + - chameleon-cuda : with starpu - with cuda - with OpenBlas - with mpi + - chameleon-cuda-nompi : with starpu - with cuda - with OpenBlas - without mpi + - chameleon-cuda-mkl-mt : with starpu - with cuda - with Intel MKL multithreaded - with mpi + - chameleon-cuda-mkl-mt-nompi : with starpu - with cuda - with Intel MKL multithreaded - without mpi + - chameleon-hip : with starpu - with hip - with OpenBlas - with mpi + - chameleon-hip-nompi : with starpu - with hip - with OpenBlas - without mpi + - chameleon-hip-mkl-mt : with starpu - with hip - with Intel MKL multithreaded - with mpi + - chameleon-hip-mkl-mt-nompi : with starpu - with hip - with Intel MKL multithreaded - without mpi - chameleon-simgrid : with starpu - with mpi - with simgrid - chameleon-openmp : with openmp - without mpi - chameleon-parsec : with parsec - without mpi @@ -599,7 +567,7 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and Change some dependencies #+begin_src sh # install chameleon with intel mkl to replace openblas, nmad to replace openmpi and starpu with fxt - guix install chameleon --with-input=openblas=mkl --with-input=openmpi=nmad --with-input=starpu=starpu-fxt + guix install chameleon --with-input=openblas=intel-oneapi-mkl --with-input=openmpi=nmad --with-input=starpu=starpu-fxt #+end_src **** Generate a Chameleon Docker image with Guix @@ -607,7 +575,7 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and To install Chameleon and its dependencies within a docker image (OpenMPI stack) #+begin_src sh - docker_chameleon=`guix pack -f docker chameleon chameleon --with-branch=chameleon=master --with-input=openblas=mkl mkl starpu hwloc openmpi openssh slurm bash coreutils inetutils util-linux procps git grep tar sed gzip which gawk perl emacs-minimal vim gcc-toolchain make cmake pkg-config -S /bin=bin --entry-point=/bin/bash` + docker_chameleon=`guix pack -f docker chameleon chameleon --with-branch=chameleon=master --with-input=openblas=intel-oneapi-mkl intel-oneapi-mkl starpu hwloc openmpi@4 openssh slurm bash coreutils inetutils util-linux procps git grep tar sed gzip which gawk perl emacs-minimal vim gcc-toolchain pkg-config -S /bin=bin --entry-point=/bin/bash` # Load the generated tarball as a docker image docker_chameleon_tag=`docker load --input $docker_chameleon | grep "Loaded image: " | cut -d " " -f 3-` # Change tag name, see the existing image name with "docker images" command, then change to a more simple name @@ -656,7 +624,7 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and #+begin_src sh # define reproducible guix environment guix describe -f channels > guix-channels.scm - guix shell --export-manifest chameleon-cuda --with-branch=chameleon=master --with-input=openblas=mkl bash coreutils emacs gawk grep inetutils openmpi openssh procps sed time util-linux vim which > guix-manifests.scm + guix shell --export-manifest chameleon-cuda --with-branch=chameleon=master --with-input=openblas=intel-oneapi-mkl bash coreutils emacs gawk grep inetutils openmpi@4 openssh procps sed time util-linux vim which > guix-manifests.scm SINGULARITY_IMAGE=`guix time-machine -C guix-channels.scm -- pack -f squashfs -m guix-manifests.scm -S /bin=bin --entry-point=/bin/bash` cp $SINGULARITY_IMAGE chameleon-cuda.gz.sif @@ -682,7 +650,7 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and One can generate a tar.gz archive the same way as the singularity image #+begin_src sh guix describe -f channels > guix-channels.scm - guix shell --export-manifest chameleon-cuda --with-branch=chameleon=master --with-input=openblas=mkl bash coreutils emacs gawk grep inetutils openmpi openssh procps sed time util-linux vim which > guix-manifests.scm + guix shell --export-manifest chameleon-cuda --with-branch=chameleon=master --with-input=openblas=intel-oneapi-mkl bash coreutils emacs gawk grep inetutils openmpi openssh procps sed time util-linux vim which > guix-manifests.scm PACKRR=`guix time-machine --channels=guix-channels.scm -- pack -RR --manifest=guix-manifests.scm -S /bin=bin` cp $PACKRR chameleon-cuda.tar.gz # copy the archive on the supercomputer, e.g. 'supercomputer' @@ -716,7 +684,6 @@ Finally some packages or also available for [[sec:ug:debian][Debian/Ubuntu]] and git clone https://github.com/spack/spack.git . spack/share/spack/setup-env.sh cd spack - git checkout v0.19.1 #+end_src Chameleon is then available diff --git a/doc/user/homepage.org b/doc/user/homepage.org index 39c060adfe232fa4c4e9d67c750b4a361cec7f29..5b322025c4bd5a5db5c61effe939a798886e9f01 100644 --- a/doc/user/homepage.org +++ b/doc/user/homepage.org @@ -58,35 +58,34 @@ propose several solutions. 1) You just want to have a try, to see if it can be installed well on your system, what are the performances on simple cases, run - the examples, or simply use the last stable version: we recommand - to use one of our packages, .deb ones for those who work on a - Linux Debian or Ubuntu distribution, Guix or Spack on other Linux - systems, Brew on macOS. + the examples, or simply use the last stable version: we recommend + to use one of our packages, Guix or Spack on Linux systems, Brew on + macOS. 2) You want to use it but you need a change somewhere in the stack like considering another version (git branch), change the default BLAS/LAPACK or MPI, use your favorite compiler, modify some sources: you may try with Guix or Spack because these package managers allow to build from sources and thus many options can be changed dynamically (command line), or directly build from source - with the native build system of the library (Makefile, GNU - autotools, CMake) following the procedures described in the - installation guide of the library, cf. [[sec:quickstartguide]]. + with CMake following the procedures described in the installation guide of + the library, cf. [[sec:quickstartguide]]. 3) You need a tool for reproducibility of your experiments: Guix is recommended. #+ATTR_HTML: :alt Table of download materials image :title Table of download materials :align center - | Git | Release source | Debian/Ubuntu | [[https://brew.sh/][Brew]] (Mac) | [[https://guix.gnu.org/en/][Guix]] (Linux) | [[https://spack.readthedocs.io/en/latest/][Spack]] (Linux/Mac) | + | Git | Release source | [[https://brew.sh/][Brew]] (Mac) | [[https://guix.gnu.org/en/][Guix]] (Linux) | [[https://spack.readthedocs.io/en/latest/][Spack]] (Linux/Mac) | |-----------+----------------+---------------+------------+--------------+-------------------| - | [[https://gitlab.inria.fr/solverstack/chameleon][Chameleon]] | [[https://gitlab.inria.fr/api/v4/projects/616/packages/generic/source/v1.2.0/chameleon-1.2.0.tar.gz][1.2.0]] | [[https://gitlab.inria.fr/solverstack/chameleon/-/packages][packages]] | [[https://gitlab.inria.fr/solverstack/brew-repo][brew-repo]] | [[https://gitlab.inria.fr/guix-hpc/guix-hpc-non-free][guix-repo]] | [[https://github.com/spack/spack][spack-repo]] | + | [[https://gitlab.inria.fr/solverstack/chameleon][Chameleon]] | [[https://gitlab.inria.fr/api/v4/projects/616/packages/generic/source/v1.3.0/chameleon-1.3.0.tar.gz][v1.3.0]] | [[https://gitlab.inria.fr/solverstack/brew-repo][brew-repo]] | [[https://gitlab.inria.fr/guix-hpc/guix-hpc-non-free][guix-repo]] | [[https://github.com/spack/spack][spack-repo]] | Some packages are part of the official distribution and we just provide the package name. For others we provide links where you can find either a file to install or a package recipe that can be used with Brew, Guix, Spack. If there are no package available for your - distribution please [[sec:contact][contact us]] and we will try to find a solution. + distribution please [[sec:contact][contact us]] and we will try to find a + solution. All these packages have been successfully installed and tested on - Unix systems: *Linux* (Debian testing, Ubuntu 22.04 LTS) and *macOS* + Unix systems: *Linux* (Debian testing, Ubuntu 22.04 and 24.04 LTS) and *macOS* (Catalina). * Quick start guide @@ -108,7 +107,7 @@ :PROPERTIES: :CUSTOM_ID: quickstart-install-cmake :END: -**** Linux Ubuntu 22.04 +**** Linux Ubuntu :PROPERTIES: :CUSTOM_ID: quickstart-install-cmake-ubuntu :END: @@ -135,14 +134,14 @@ Then to install Chameleon from sources with CMake, proceed as follows #+begin_src sh :eval never-export - wget https://gitlab.inria.fr/api/v4/projects/616/packages/generic/source/v1.2.0/chameleon-1.2.0.tar.gz - tar xvf chameleon-1.2.0.tar.gz - cd chameleon-1.2.0 + wget https://gitlab.inria.fr/api/v4/projects/616/packages/generic/source/v1.3.0/chameleon-1.3.0.tar.gz + tar xvf chameleon-1.3.0.tar.gz + cd chameleon-1.3.0 # or clone the master branch from the git repository to get the last version # git clone --recursive https://gitlab.inria.fr/solverstack/chameleon.git && cd chameleon - mkdir build && cd build - cmake .. -DCHAMELEON_USE_MPI=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install - make -j5 install + cmake -B build -DCHAMELEON_USE_MPI=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install + cmake --build build/ -j5 + cmake --install build/ #+end_src See more examples in the [[sec:ug:cmake][user's guide]]. @@ -157,9 +156,9 @@ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # install compiler and tools - brew install htop tmux gcc automake autoconf libtool doxygen emacs zlib bzip2 bison hwloc pkgconfig openblas openmpi + brew install htop tmux gcc llvm automake autoconf libtool doxygen emacs zlib bzip2 bison hwloc pkgconfig openblas openmpi - # gcc and g++ are missing (avoid to use clang version in /usr/bin) + # gcc and g++ are missing (avoid to use clang version in /usr/bin or use the clang from brew, see package llvm, e.g. clang-17) ln -sf /usr/local/bin/gcc-11 /usr/local/bin/gcc ln -sf /usr/local/bin/g++-11 /usr/local/bin/g++ @@ -169,15 +168,14 @@ # cmake checks blas.pc not openblas.pc sudo cp /usr/local/opt/openblas/lib/pkgconfig/openblas.pc /usr/local/opt/openblas/lib/pkgconfig/blas.pc #+end_src - - CBLAS/LAPACKE is required (OpenBLAS or Intel MKL) - - we recommend to install StarPU as runtime system with MPI - enabled + - CBLAS/LAPACKE is required (OpenBLAS or Intel MKL or Reference Lapack) + - we recommend to install StarPU as runtime system with MPI enabled #+begin_src sh :eval never-export # install last starpu release cd $HOME - wget https://files.inria.fr/starpu/starpu-1.3.10/starpu-1.3.10.tar.gz - tar xvf starpu-1.3.10.tar.gz - cd starpu-1.3.10 + wget https://files.inria.fr/starpu/starpu-1.4.7/starpu-1.4.7.tar.gz + tar xvf starpu-1.4.7.tar.gz + cd starpu-1.4.7 ./configure make -j5 sudo make install @@ -185,31 +183,15 @@ Then to install Chameleon from sources with CMake, proceed as follows #+begin_src sh :eval never-export - wget https://gitlab.inria.fr/api/v4/projects/616/packages/generic/source/v1.2.0/chameleon-1.2.0.tar.gz - tar xvf chameleon-1.2.0.tar.gz - cd chameleon-1.2.0 + wget https://gitlab.inria.fr/api/v4/projects/616/packages/generic/source/v1.3.0/chameleon-1.3.0.tar.gz + tar xvf chameleon-1.3.0.tar.gz + cd chameleon-1.3.0 # or clone from git repository # git clone --recursive https://gitlab.inria.fr/solverstack/chameleon.git && cd chameleon - mkdir build && cd build - cmake .. -DCHAMELEON_USE_MPI=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install - make -j5 install + cmake -B build -DCHAMELEON_USE_MPI=ON -DBLA_PREFER_PKGCONFIG=ON -DBUILD_SHARED_LIBS=ON + cmake --build build -j5 + sudo cmake --install build #+end_src -*** Debian/Ubuntu packages -:PROPERTIES: -:CUSTOM_ID: quickstart-install-debian-ubuntu -:END: - Visit the [[https://gitlab.inria.fr/solverstack/chameleon/-/packages][packages]] page and download the appropriate file for your - system. Then in a shell terminal - #+begin_src sh :eval never-export - # to install one of our non offical package, for example on Ubuntu 22.04 - wget https://gitlab.inria.fr/api/v4/projects/616/packages/generic/ubuntu_22.04/1.2.0/chameleon_1.2.0-1_amd64.deb - sudo apt-get install -y ./chameleon_1.2.0-1_amd64.deb - // and to uninstall use - // sudo apt-get autoremove -y chameleon - mpiexec -n 2 chameleon_dtesting -o potrf -t 2 -n 3200 --nowarmup - #+end_src - If there are no package available for your Debian/Ubuntu - distribution please [[sec:contact][contact us]] and we will try to provide one. *** Brew packages :PROPERTIES: @@ -240,11 +222,6 @@ sudo ./guix-install.sh #+end_src - or on Debian - #+begin_src sh :eval never-export - sudo apt install guix - #+end_src - Guix packages are stored in our [[https://gitlab.inria.fr/guix-hpc/guix-hpc][guix-hpc]], and [[https://gitlab.inria.fr/guix-hpc/guix-hpc-non-free][guix-hpc-non-free]] (for versions with Intel MKL and/or CUDA) git repositories. Please refer to the README to see how to add our package to the list of @@ -283,10 +260,8 @@ Examples: #+begin_src sh :eval never-export # please read https://spack.readthedocs.io/en/latest/getting_started.html - git clone https://github.com/spack/spack.git + git clone -c feature.manyFiles=true --depth=2 https://github.com/spack/spack.git . spack/share/spack/setup-env.sh - cd spack - git checkout v0.19.1 spack install chameleon # chameleon is installed here: spack location -i chameleon @@ -318,18 +293,14 @@ the ~CMAKE_PREFIX_PATH~ (https://cmake.org/cmake/help/latest/envvar/CMAKE_PREFIX_PATH.html) as environment variable or CMake variable to give the root - installation directory where Chameleon is installed or use the - ~CHAMELEON_ROOT~ environment variable. Example of ~CMakeLists.txt~ for - Chameleon + installation directory where Chameleon is installed. + Example of ~CMakeLists.txt~ for project using Chameleon #+begin_src :eval never-export project(CHAMELEON_EXAMPLE C Fortran) - # to be able to use CHAMELEON_ROOT env. var. - cmake_policy(SET CMP0074 NEW) - # look for CHAMELEON on the system - # Hint: use CHAMELEON_ROOT (env. var. or cmake var.) to the installation directory of - # CHAMELEON if not installed in a standard path + # Hint if not installed in a standard system directory: + # add chameleon installation directory in the CMAKE_PREFIX_PATH (env. var. or cmake var.) find_package(CHAMELEON REQUIRED) diff --git a/doc/user/news.org b/doc/user/news.org index 352a97c3a2c8d08f89638ef19f8278e8da5a40f6..577d2b2709fbc069f496eddaf3a4aefa308a3932 100644 --- a/doc/user/news.org +++ b/doc/user/news.org @@ -1,3 +1,4 @@ ++ [2025-02-19] *Release 1.3.0* available, see [[https://gitlab.inria.fr/solverstack/chameleon/-/releases/v1.3.0][changes]], [[https://gitlab.inria.fr/api/v4/projects/616/packages/generic/source/v1.3.0/chameleon-1.3.0.tar.gz][download source tarball]]. + [2023-07-04] *Release 1.2.0* available, see [[https://gitlab.inria.fr/solverstack/chameleon/-/releases/v1.2.0][changes]], [[https://gitlab.inria.fr/api/v4/projects/616/packages/generic/source/v1.2.0/chameleon-1.2.0.tar.gz][download source tarball]]. + [2023-02-08] *Added support for HIP and hipblas (CUDA and ROC backend)*, see [[https://gitlab.inria.fr/solverstack/chameleon/-/merge_requests/355][MR 355]]. + [2023-01-18] *Add parallel kernels support*, see [[https://gitlab.inria.fr/solverstack/chameleon/-/merge_requests/206][MR 206]].