From 06655d3fb1178c82ea417c6fe05642d7d62b331c Mon Sep 17 00:00:00 2001 From: Florent Pruvost <florent.pruvost@inria.fr> Date: Tue, 5 Sep 2017 14:59:26 +0200 Subject: [PATCH] fix docs -> doc, update ChangeLog --- ChangeLog | 1 + INSTALL.org | 288 -------------------------------------------------- README.org | 8 +- READMEDEV.org | 19 ++-- 4 files changed, 18 insertions(+), 298 deletions(-) delete mode 100644 INSTALL.org diff --git a/ChangeLog b/ChangeLog index f58b24a5b..2480d12b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,7 @@ chameleon-1.0.0 - Add First stage algorithm fo r the SVD/EVD solvers - add timing drivers time_zpotrs_tile and time_zgeqrs_tile - deactivate warmup by default +- add an orgmode user guide documentation, see in doc/orgmode/ chameleon-0.9.1 ------------------------------------------------------------------------ diff --git a/INSTALL.org b/INSTALL.org deleted file mode 100644 index 036273832..000000000 --- a/INSTALL.org +++ /dev/null @@ -1,288 +0,0 @@ -#+TITLE: A quick installation guide -#+LANGUAGE: en -#+OPTIONS: H:3 num:t \n:nil @:t ::t |:t _:nil ^:nil -:t f:t *:t <:t -#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil pri:nil tags:not-in-toc html-style:nil - -This is a brief discussion about Chameleon installation and usage. -For more information, please read the document users_guide. - -Chameleon is written in C, it provides an interface to be called from -Fortran and depends on a couple of external libraries that must be -installed on the system. - -* Chameleon prerequisites - - To install Chameleon's libraries, header files, and executables, one - needs: - - CMake (version 2.8 minimum): the build system - - C and Fortran compilers: GNU compiler suite, Clang, Intel or IBM - can be used - - python: to generate files in the different precisions - - external libraries: this depends on the configuration, by default - the required libraries are - - StarPU: http://runtime.bordeaux.inria.fr/StarPU/ - - CBLAS, LAPACKE: these are interfaces and there exist several - providers that can be used with Chameleon - - Intel MKL, Netlib, OpenBlas - - BLAS, LAPACK, TMGLIB: there exist several providers that can be - used with Chameleon - - Eigen, Intel MKL, Netlib, OpenBlas - - pthread (libpthread) - - math (libm) - - Optional libraries: - - quark: http://icl.cs.utk.edu/quark/ - - cuda: https://developer.nvidia.com/cuda-downloads - - cublas: comes with cuda http://docs.nvidia.com/cuda/cublas/ - - mpi: openmpi http://www.open-mpi.org/ - - These packages must be installed on the system before trying to - configure/build chameleon. Please look at the distrib/ directory - which gives some hints for the installation of dependencies for Unix - systems. - - We give here some examples for a Debian system: - #+begin_src - - # Update Debian packages list - sudo apt-get update - # Install Netlib blas, lapack, tmglib, cblas and lapacke suite - sudo apt-get install -y liblapack-dev liblapacke-dev - # Alernatively to Netlib, OpenBLAS could be used (faster kernels) - sudo apt-get install -y libopenblas-dev liblapacke-dev - # Install OpenMPI - sudo apt-get install -y libopenmpi-dev - # Install hwloc (used by StarPU or QUARK, already a dependency of OpenMPI) - sudo apt-get install -y libhwloc-dev - # install FxT, usefull to export some nice execution traces with StarPU - sudo apt-get install -y libfxt-dev - # Install cuda and cuBLAS : only if you have a GPU cuda compatible - sudo apt-get install -y nvidia-cuda-toolkit nvidia-cuda-dev - - # Install StarPU (with MPI and FxT enabled) - mkdir -p $HOME/install - cd $HOME/install - wget http://starpu.gforge.inria.fr/files/starpu-1.2.2/starpu-1.2.2.tar.gz - tar xvzf starpu-1.2.2.tar.gz - cd starpu-1.2.2/ - ./configure --prefix=$HOME/install/starpu --disable-opencl --disable-cuda --with-fxt=/usr/lib/x86_64-linux-gnu/ - make - make install - cd $HOME/install - rm starpu-1.2.2/ starpu-1.2.2.tar.gz -rf - - # Install QUARK : to be used in place of StarPU - mkdir -p $HOME/install - cd $HOME/install - wget http://icl.cs.utk.edu/projectsfiles/quark/pubs/quark-0.9.0.tgz - tar xvzf quark-0.9.0.tgz - cd quark-0.9.0/ - sed -i -e "s#prefix=\.\/install#prefix=$HOME/install/quark#g" make.inc - sed -i -e "s#CFLAGS=-O2#CFLAGS=-O2 -fPIC#g" make.inc - make - make install - cd $HOME/install - rm quark-0.9.0/ quark-0.9.0.tgz -rf - - #+end_src - -** Distribution of Chameleon using Spack - - To get support to install a full distribution (Chameleon + - dependencies) we encourage users to use the morse branch of *Spack*. - - Please read these documentations: - - * [[http://morse.gforge.inria.fr/spack/spack.html][Spack Morse]] - * [[http://morse.gforge.inria.fr/spack/spack.html#orgd5b1afe][Section Chameleon]] - -*** Usage example for a simple distribution of Chameleon - - #+begin_src sh - git clone https://github.com/solverstack/spack.git - . ./spack/share/spack/setup-env.sh - spack install -v chameleon - # chameleon is installed here: - `spack location -i chameleon` - #+end_src - -* Build and install Chameleon with CMake - Compilation of Chameleon libraries and executables are done with - CMake (http://www.cmake.org/). This version has been tested with - CMake 3.5.1 but any version superior to 2.8 should be fine. - - Usage: three steps are required to compile and install Chameleon - - 1. configure : - #+begin_src - cmake path/to/chameleon -DOPTION1= -DOPTION2= ... - # see the "Options" section to get list of options - # see the "Dependencies detection" for details about libraries detection - #+end_src - 2. build : - #+begin_src - make - # do not hesitate to use -j[ncores] option to speedup the compilation - #+end_src - 3. install (optional) : - #+begin_src - make install - #+end_src - Do not forget to specify the install directory with - *-DCMAKE_INSTALL_PREFIX* at configure - #+begin_example - cmake /home/jdoe/chameleon -DCMAKE_INSTALL_PREFIX=/home/jdoe/install/chameleon - #+end_example - -** Dependencies detection - You have different choices to detect dependencies on your system, - either by setting some environment variables containing paths to - the libs and headers or by specifying them directly at cmake - configure. Different cases : - - 1) detection of dependencies through environment variables: - - LD_LIBRARY_PATH should contain the list of paths where to find - the libraries: - #+begin_src - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:install/path/to/your/lib - #+end_src - - INCLUDE should contain the list of paths where to find the - header files of libraries - #+begin_src - export INCLUDE=$INCLUDE:install/path/to/your/headers - #+end_src - 2) detection with user's given paths: - - you can specify the path at cmake configure by invoking ~cmake - path/to/your/CMakeLists.txt -DLIB_DIR=path/to/your/lib~ where - LIB stands for the name of the lib to look for - #+begin_src - cmake path/to/your/CMakeLists.txt -DSTARPU_DIR=path/to/starpudir \ - -DCBLAS_DIR= ... - #+end_src - it is also possible to specify headers and library directories - separately - #+begin_src - cmake path/to/your/CMakeLists.txt -DSTARPU_INCDIR=path/to/libstarpu/include/starpu/1.1 \ - -DSTARPU_LIBDIR=path/to/libstarpu/lib - #+end_src - - note: BLAS and LAPACK detection can be tedious so that we - provide a verbose mode you can set *-DBLAS_VERBOSE=ON* or - *-DLAPACK_VERBOSE=ON* to activate it - 3) using pkg-config for libraries that provide .pc files - - update your *PKG_CONFIG_PATH* to the paths where to find .pc - files of installed external libraries like hwloc, starpu, some - blas/lapack, etc - -** Options - You can optionally activate some options at cmake configure (like CUDA, MPI, ...) - invoking ~cmake path/to/your/CMakeLists.txt -DOPTION1= -DOPTION2= ...~ - #+begin_src - cmake /home/jdoe/chameleon/ -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_INSTALL_PREFIX=/home/jdoe/install/ \ - -DCHAMELEON_USE_CUDA=ON \ - -DCHAMELEON_USE_MPI=ON \ - -DBLA_VENDOR=Intel10_64lp \ - -DSTARPU_DIR=/home/jdoe/install/starpu-1.2/ \ - -DCHAMELEON_ENABLE_TRACING=ON - #+end_src - - You can get the full list of options with *-L[A][H]* options of cmake command - #+begin_src - cmake -LH /home/jdoe/chameleon/ - #+end_src - - You can also set the options thanks to the *ccmake* interface. Some - options (non-exhaustive list): - - Native into CMake: - * *CMAKE_BUILD_TYPE=Debug|Release* - * *CMAKE_INSTALL_PREFIX=path/to/your/install/dir* (where headers, - libraries, executables, etc, will be copied when invoking make - install) - * *BUILD_SHARED_LIBS=ON|OFF* - * *CMAKE_C_COMPILER=gcc|icc|...* - * *CMAKE_Fortran_COMPILER=gfortran|ifort|...* - - Related to specific modules (find_package) to find external - libraries: - * *BLA_VENDOR=Intel10_64lp* (to use intel mkl for example, see the - list of BLA_VENDOR in FindBLAS.cmake in - cmake_modules/morse/find) - * *STARPU_DIR=path/to/root/starpu/install*, see section - "Dependencies detection" - * *STARPU_INCDIR=path/to/root/starpu/install/headers*, see section - "Dependencies detection" - * *STARPU_LIBDIR=path/to/root/starpu/install/libs*, see section - "Dependencies detection" - * List of packages that can searched just like STARPU (with _DIR, - _INCDIR and _LIBDIR): - * *BLAS*, *CBLAS*, *EZTRACE*, *FXT*, *HWLOC*, *LAPACK*, *LAPACKE*, *QUARK*, - *SIMGRID, *TMG* - - Chameleon specific: - * *CHAMELEON_USE_MPI=ON|OFF* (default OFF) - * *CHAMELEON_USE_CUDA=ON|OFF* (default OFF) - * *CHAMELEON_ENABLE_DOCS=ON|OFF* (default OFF) - * *CHAMELEON_ENABLE_EXAMPLE=ON|OFF* (default ON) - * *CHAMELEON_ENABLE_PRUNING_STATS=ON|OFF* (default OFF) - * *CHAMELEON_ENABLE_TESTING=ON|OFF* (default ON) - * *CHAMELEON_ENABLE_TIMING=ON|OFF* (default ON) - * *CHAMELEON_ENABLE_TRACING=ON|OFF* (default OFF) - * *CHAMELEON_SCHED_STARPU=ON|OFF* (default ON) - * *CHAMELEON_SCHED_QUARK=ON|OFF* (default OFF) - * *CHAMELEON_SIMULATION=ON|OFF* (default OFF) - - Libraries detected with an official cmake module (see module files - in CMAKE_ROOT/Modules/): CUDA - MPI - Threads - - Libraries detected with our cmake modules (see module files in - cmake_modules/morse_cmake/modules/find/ directory of Chameleon - sources): BLAS - CBLAS - EZTRACE - FXT - HWLOC - LAPACK - LAPACKE - - QUARK - SIMGRID - STARPU - TMG - -* Use FxT profiling through StarPU - StarPU can generate its own trace log files by compiling it with the - ~--with-fxt~ option at the configure step (you can have to specify the - directory where you installed FxT by giving ~--with-fxt=...~ instead - of ~--with-fxt~ alone). By doing so, traces are generated after each - execution of a program which uses StarPU in the directory pointed by - the STARPU_FXT_PREFIX environment variable. - #+begin_example - export STARPU_FXT_PREFIX=/home/jdoe/fxt_files/ - #+end_example - When executing a ~./timing/...~ Chameleon program, if it has been - enabled (StarPU compiled with FxT and - *-DCHAMELEON_ENABLE_TRACING=ON*), you can give the option ~--trace~ to - tell the program to generate trace log files. - - Finally, to generate the trace file which can be opened with Vite - program (http://vite.gforge.inria.fr/), you can use the - *starpu_fxt_tool* executable of StarPU. This tool should be in - ~$STARPU_INSTALL_REPOSITORY/bin~. You can use it to generate the - trace file like this: - #+begin_src - path/to/your/install/starpu/bin/starpu_fxt_tool -i prof_filename - #+end_src - There is one file per mpi processus (prof_filename_0, - prof_filename_1 ...). To generate a trace of mpi programs you can - call it like this: - #+begin_src - path/to/your/install/starpu/bin/starpu_fxt_tool -i prof_filename* - #+end_src - The trace file will be named paje.trace (use -o option to specify an - output name). Alternatively, for non mpi execution (only one - processus and profiling file), you can set the environment variable - *STARPU_GENERATE_TRACE=1* to automatically generate the paje trace - file. - -* Use simulation mode with StarPU-SimGrid - Simulation mode can be activated by setting the cmake option - CHAMELEON_SIMULATION to ON. This mode allows you to simulate - execution of algorithms with StarPU compiled with SimGrid - (http://simgrid.gforge.inria.fr/). To do so, we provide some - perfmodels in the simucore/perfmodels/ directory of Chameleon - sources. To use these perfmodels, please set your *STARPU_HOME* - environment variable to - ~path/to/your/chameleon_sources/simucore/perfmodels~. Finally, you - need to set your *STARPU_HOSTNAME* environment variable to the name of - the machine to simulate. For example: *STARPU_HOSTNAME=mirage*. Note - that only POTRF kernels with block sizes of 320 or 960 (simple and - double precision) on mirage and sirocco machines are available for - now. Database of models is subject to change. diff --git a/README.org b/README.org index 9ea3c9d31..8acc071e3 100644 --- a/README.org +++ b/README.org @@ -43,7 +43,6 @@ dedicated to dense linear algebra. now. Future releases will be available on this gitlab project. * Documentation - ** User guide The user guide is available directly in the sources as emacs orgmode files, see : @@ -51,6 +50,13 @@ dedicated to dense linear algebra. 2) [[file:doc/orgmode/chapters/installing.org][Installing]] 3) [[file:doc/orgmode/chapters/using.org][Using]] + This documentation could also be generated in html and/or pdf : + #+begin_src + # build the doc with cmake (emacs with orgmode and latex are required), e.g. + cmake .. -DCHAMELEON_ENABLE_DOC=ON + make doc + #+end_src + ** Source code documentation (doxygen) There is no up-to-date documentation of Chameleon. We would like to provide a doxygen documentation hosted on [[https://about.gitlab.com/2016/04/07/gitlab-pages-setup/][gitlab]] in the diff --git a/READMEDEV.org b/READMEDEV.org index cdaefe4fe..486662318 100644 --- a/READMEDEV.org +++ b/READMEDEV.org @@ -28,7 +28,6 @@ developers must follow and that should be read by contributors. * Documentation <<sec:doc>> ** Generate the documentation - *** Prerequisites To generate the documentation you need to have [[http://www.stack.nl/~dimitri/doxygen/][Doxygen]] and @@ -36,25 +35,25 @@ developers must follow and that should be read by contributors. For example, on Debian systems: #+begin_src sh - sudo apt install doxygen texinfo + sudo apt install doxygen texinfo texlive texlive-latex-extra emacs #+end_src *** configure + make documentation Enter into the Chameleon's source root directory and configure - with *CHAMELEON_ENABLE_DOCS=ON*, then generate the documentation - with ~make docs~ + with *CHAMELEON_ENABLE_DOC=ON*, then generate the documentation + with ~make doc~ #+begin_src sh cd chameleon mkdir build && cd build - cmake .. -DCHAMELEON_ENABLE_DOCS=ON - make docs + cmake .. -DCHAMELEON_ENABLE_DOC=ON + make doc #+end_src ** Rules about source code documentation - Please refer to this file for the documentation guidelines [[file:docs/doxygen/README.org][README]]. + Please refer to this file for the documentation guidelines [[file:doc/doxygen/README.org][README]]. * Naming and writting conventions @@ -83,8 +82,10 @@ developers must follow and that should be read by contributors. #+begin_src sh export CHAMELEON_ROOT=/path/to/chameleon/sources/to/be/released - cmake $CHAMELEON_ROOT -DCHAMELEON_ENABLE_DOCS=ON - make docs && cp docs/texinfo/users_guide.pdf $CHAMELEON_ROOT && make package_source + cmake $CHAMELEON_ROOT -DCHAMELEON_ENABLE_DOC=ON + make doc + cp doc/orgmode/users_guide.pdf $CHAMELEON_ROOT + make package_source #+end_src A tarball chameleon-major.minor.patch.tar.gz should be generated -- GitLab