Attention une mise à jour du serveur va être effectuée le lundi 17 mai entre 13h et 13h30. Cette mise à jour va générer une interruption du service de quelques minutes.

Commit 9d0c7136 authored by PRUVOST Florent's avatar PRUVOST Florent

Fix pages and improve the users doc

parent 1d966aa5
......@@ -312,7 +312,7 @@ pages:
- cd build
- cmake .. -DCHAMELEON_ENABLE_DOC=ON
- make doc -j5
- mv doc/doxygen ../public/
- mv doc/orgmode ../public/
- mv doc/doxygen/out-dev/html/ ../public/
- cp -r doc/orgmode/* ../public/
only:
- master@solverstack/chameleon
......@@ -61,6 +61,14 @@ FIND_PROGRAM(EMACS_COMPILER emacs)
FIND_PROGRAM(TEX_COMPILER tex)
if(EMACS_COMPILER)
# css direcory is required for the html output
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/css
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/css
${CMAKE_CURRENT_BINARY_DIR}/css
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/css)
# Add target
# ----------
add_custom_command(OUTPUT users_guide.html
......@@ -72,6 +80,7 @@ if(EMACS_COMPILER)
--kill
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/users_guide.org
${CMAKE_CURRENT_BINARY_DIR}/version.org
${CMAKE_CURRENT_BINARY_DIR}/css
)
add_custom_command(OUTPUT users_guide.pdf
COMMAND ${EMACS_COMPILER}
......
......@@ -6,12 +6,12 @@ Chameleon is written in C and depends on a couple of external
libraries that must be installed on the system.
# , it provides an interface to be called from Fortran
Chameleon can be built and installed 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]].
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]].
To get support to install a full distribution Chameleon + dependencies
we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
we encourage users to use [[sec:spack][Spack]].
** Getting Chameleon
......@@ -34,26 +34,19 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
- python: to generate files in the different precisions
- external libraries: this depends on the configuration, by default
the required libraries are
- [[http://runtime.bordeaux.inria.fr/StarPU/][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)
- runtimes: [[http://runtime.bordeaux.inria.fr/StarPU/][StarPU]] or [[http://icl.utk.edu/parsec/][PaRSEC]] or [[http://icl.cs.utk.edu/quark/][QUARK]]
- kernels : CBLAS, LAPACKE. These are C interfaces to Fortran
kernels BLAS and LAPACK. There exist several providers that can
be used with Chameleon (Intel MKL, Netlib, OpenBlas)
Optional libraries:
- [[http://icl.cs.utk.edu/quark/][quark]]
- [[https://developer.nvidia.com/cuda-downloads][cuda]]
- [[http://docs.nvidia.com/cuda/cublas/][cublas]]: comes with cuda
- mpi: [[http://www.open-mpi.org/][openmpi]]
- cuda: [[https://developer.nvidia.com/cuda-downloads][cuda]], [[http://docs.nvidia.com/cuda/cublas/][cublas]] (comes with cuda)
- mpi: [[http://www.open-mpi.org/][openmpi]], [[https://www.mpich.org/][mpich]], [[https://software.intel.com/en-us/mpi-library][intelmpi]]
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.
which gives some hints for the installation of dependencies for
Unix systems.
We give here some examples for a Debian system:
#+begin_src
......@@ -76,27 +69,35 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
# 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
wget http://starpu.gforge.inria.fr/files/starpu-1.2.6/starpu-1.2.6.tar.gz
tar xvzf starpu-1.2.6.tar.gz
cd starpu-1.2.6/
./configure --prefix=/usr/local --with-fxt=/usr/lib/x86_64-linux-gnu/
make -j5
sudo make install
# Install PaRSEC: to be used in place of StarPU
mkdir -p $HOME/install
cd $HOME/install
rm starpu-1.2.2/ starpu-1.2.2.tar.gz -rf
git clone https://bitbucket.org/mfaverge/parsec.git
cd parsec
git checkout mymaster
git submodule update
mkdir -p build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON
make -j5
sudo make install
# 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
git clone https://github.com/ecrc/quark
cd quark/
sed -i -e "s#prefix=.*#prefix=/usr/local#g" make.inc
sed -i -e "s#CFLAGS=.*#CFLAGS= -O2 -DADD_ -fPIC#g" make.inc
make
make install
cd $HOME/install
rm quark-0.9.0/ quark-0.9.0.tgz -rf
sudo make install
#+end_src
......@@ -161,20 +162,6 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
*Caution about the compatibility:* Chameleon has been mainly tested
with the reference TMGLIB from NETLIB, OpenBLAS and Intel MKL.
**** QUARK
[[http://icl.cs.utk.edu/quark/][QUARK]] (QUeuing And Runtime for Kernels) provides a library that
enables the dynamic execution of tasks with data dependencies in
a multi-core, multi-socket, shared-memory environment. One of
QUARK or StarPU Runtime systems has to be enabled in order to
schedule tasks on the architecture. If QUARK is enabled then
StarPU is disabled and conversely. Note StarPU is enabled by
default. When Chameleon is linked with QUARK, it is not possible
to exploit neither CUDA (for GPUs) nor MPI (distributed-memory
environment). You can use StarPU to do so.
*Caution about the compatibility:* Chameleon has been mainly tested
with the QUARK library 0.9.
**** StarPU
[[http://runtime.bordeaux.inria.fr/StarPU/][StarPU]] is a task programming library for hybrid architectures.
StarPU handles run-time concerns such as:
......@@ -185,14 +172,31 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
* Optimized cluster communications
StarPU can be used to benefit from GPUs and distributed-memory
environment. One of QUARK or StarPU runtime system has to be
enabled in order to schedule tasks on the architecture. If
StarPU is enabled then QUARK is disabled and conversely. Note
StarPU is enabled by default.
environment. Note StarPU is enabled by default.
*Caution about the compatibility:* Chameleon has been mainly tested
with StarPU-1.1 and 1.2 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
heterogeneous architectures. It can be used with MPI and Cuda.
*Caution about the compatibility:* Chameleon is compatible with
this version
https://bitbucket.org/mfaverge/parsec/branch/mymaster.
**** QUARK
[[http://icl.cs.utk.edu/quark/][QUARK]] (QUeuing And Runtime for Kernels) provides a library that
enables the dynamic execution of tasks with data dependencies in
a multi-core, multi-socket, shared-memory environment. When
Chameleon is linked with QUARK, it is not possible to exploit
neither CUDA (for GPUs) nor MPI (distributed-memory environment).
You can use PaRSEC or StarPU to do so.
*Caution about the compatibility:* Chameleon has been mainly tested
with the QUARK library coming from https://github.com/ecrc/quark.
**** FxT
[[http://download.savannah.gnu.org/releases/fkt/][FxT]] stands for both FKT (Fast Kernel Tracing) and FUT (Fast User
Tracing). This library provides efficient support for recording
......@@ -209,16 +213,14 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
[[http://www.open-mpi.org/projects/hwloc/][hwloc]] (Portable Hardware Locality) is a software package for
accessing the topology of a multicore system including components
like: cores, sockets, caches and NUMA nodes. The topology
discovery library, ~hwloc~, is not mandatory to use StarPU but
strongly recommended. It allows to increase performance, and to
perform some topology aware scheduling. ~hwloc~ is available in
major distributions and for most OSes and can be downloaded from
http://www.open-mpi.org/software/hwloc.
**** pthread
POSIX threads library is required to run Chameleon on Unix-like systems.
It is a standard component of any such system.
discovery library, ~hwloc~, is strongly recommended to be used
through the runtime system. It allows to increase performance,
and to perform some topology aware scheduling. ~hwloc~ is available
in major distributions and for most OSes and can be downloaded
from http://www.open-mpi.org/software/hwloc.
*Caution about the compatibility:* hwlov should be compatible with
the runtime system used.
**** OpenMPI
[[http://www.open-mpi.org/][OpenMPI]] is an open source Message Passing Interface
implementation for execution on multiple nodes with
......@@ -249,16 +251,16 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
<<sec: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 Cham]]
* [[http://morse.gforge.inria.fr/spack/spack.html#orgd5b1afe][Section Chameleon]]
dependencies) we encourage users to use *Spack*. Please refer to our
[[https://gitlab.inria.fr/solverstack/spack-repo/blob/master/README.org][Spack Repository]].
*** 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
git clone https://github.com/llnl/spack.git
export SPACK_ROOT=$PWD/spack
. $SPACK_ROOT/share/spack/setup-env.sh
git clone https://gitlab.inria.fr/solverstack/spack-repo.git
spack repo add spack-repo
spack install -v chameleon
# chameleon is installed here:
`spack location -i chameleon`
......@@ -267,7 +269,7 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
** 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.
CMake 3.10.2 but any version superior to 2.8 should be fine.
Here the steps to configure, build, test and install
1. configure:
......@@ -343,8 +345,8 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
[[sec:depdet][Dependencies detection]]
* *STARPU_LIBDIR=path/to/root/starpu/install/libs*, see
[[sec:depdet][Dependencies detection]]
* List of packages that can searched just like STARPU (with _DIR,
_INCDIR and _LIBDIR):
* List of packages that can be searched just like STARPU (with
_DIR, _INCDIR and _LIBDIR):
* *BLAS*, *CBLAS*, *EZTRACE*, *FXT*, *HWLOC*, *LAPACK*, *LAPACKE*, *QUARK*,
*SIMGRID*, *TMG*
......@@ -359,15 +361,18 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
**** Chameleon specific options
* *CHAMELEON_SCHED_STARPU=ON|OFF* (default ON): to link with
StarPU library (runtime system)
* *CHAMELEON_SCHED_PARSEC=ON|OFF* (default OFF): to link with
PARSEC library (runtime system)
* *CHAMELEON_SCHED_QUARK=ON|OFF* (default OFF): to link with QUARK
library (runtime system)
* *CHAMELEON_USE_MPI=ON|OFF* (default OFF): to link with MPI
library (message passing implementation for use of multiple
nodes with distributed memory), can only be used with StarPU
and PaRSEC
* *CHAMELEON_USE_CUDA=ON|OFF* (default OFF): to link with CUDA
runtime (implementation paradigm for accelerated codes on GPUs)
and cuBLAS library (optimized BLAS kernels on GPUs), can only
be used with StarPU
be used with StarPU and PaRSEC
* *CHAMELEON_ENABLE_DOC=ON|OFF* (default OFF): to control build of
the documentation contained in doc/ sub-directory
* *CHAMELEON_ENABLE_EXAMPLE=ON|OFF* (default ON): to control build
......@@ -403,8 +408,8 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
configure. Different cases:
1) detection of dependencies through environment variables:
- LD_LIBRARY_PATH should contain the list of paths where to find
the libraries:
- LD_LIBRARY_PATH (DYLD_LIBRARY_PATH on Mac OSX) 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
......@@ -414,9 +419,11 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
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
- you can specify the path at cmake configure by invoking
#+begin_example
cmake path/to/your/CMakeLists.txt -DLIB_DIR=path/to/your/lib
#+end_example
where LIB stands for the name of the lib to look for, /e.g./
#+begin_src
cmake path/to/your/CMakeLists.txt -DSTARPU_DIR=path/to/starpudir \
-DCBLAS_DIR= ...
......@@ -424,8 +431,9 @@ we encourage users to use the /morse/ branch of [[sec:spack][Spack]].
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
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
......
This diff is collapsed.
......@@ -362,7 +362,7 @@
exist default values for options.
For all steps, the program solves a linear system $Ax=B$ The
matrix values are randomly generated but ensure that matrix \$A\$ is
matrix values are randomly generated but ensure that matrix $A$ is
symmetric positive definite so that $A$ can be factorized in a
$LL^T$ form using the Cholesky factorization.
......@@ -746,7 +746,8 @@
The new function to understand is *CHAMELEON_dbuild_Tile*, e.g.
#+begin_example
struct data_pl data_A={(double)N, 51, N};
CHAMELEON_dbuild_Tile(ChamUpperLower, descA, (void*)&data_A, Cham_build_callback_plgsy);
CHAMELEON_dbuild_Tile(ChamUpperLower, descA, (void*)&data_A,
Cham_build_callback_plgsy);
#+end_example
The idea here is to let Chameleon fill the matrix data in a
......
HTML, BODY, A, TABLE, TR, TD, FORM, INPUT, SELECT, TEXTAREA, DIV, P, SPAN, H1, H2, H3, H4, H5, B, UL, LI, DD, DL, DT {
font-family: sans-serif, Times, "Times New Roman";
}
BODY {
margin: auto;
border: 0px;
padding: 0px;
background-color: rgb(250, 250, 250);
color: black;
font-size: 14px;
}
/* classe css de la page*/
#res_script{
border:0px solid black;
width:99%;
font-size:1.2em;
text-align:left;
color:black;
background-color:white;
}
/* Titre avec le résumé de la requete, le nb de publis, ...*/
div.ZoneTitreResultat
{
padding-left:10px;
width:95%;
}
.TitreResultats{
color:#363842;
font-size: 1.4em;
font-weight: bold;
}
.SousTitreResultats {
margin: 0px 0px 40px;
font-size: 1.1em;
color:#363842;
}
/* Zone pour afficher un message d'erreur*/
div.ZoneTitreErreur
{
padding-left:10px;
width:95%;
}
/*Libelle du nombre de publications affichées*/
.LibelleNbPubli {
margin: 0px 0px 40px;
font-size: 1.1em;
color:#363842;
font-weight: bold;
}
/*valeur du nombre de publications affichées*/
.ValeurNbPubli {
margin: 0px 0px 40px;
font-size: 1.1em;
color:#363842;
}
/* classes pour les rubriques pour certains type de classement (type de publi, année de publi) */
.Rubrique{
border: 0;
color:#58529f;
margin-left:0.2em;
margin-bottom:0.2em;
font-weight:bold;
font-size:1.4em;
}
.SousRubrique{
color:#58529f;
font-weight:bold;
margin-left:0.4em;
font-size:1.2em;
}
/* Classe le dl qui contient chaque publication */
.NoticeRes {
border: 0;
padding-bottom: 0.5em;
margin:0 0 1em;
}
.NoticeResAvecVignette {
border: 0;
padding-bottom: 0.5em;
min-height:100px;
}
/*classe dt qui permmettent d'afficher les noms des champs */
.ChampRes {
clear:both;
float:left;
text-align:left;
font-size:0.9em;
font-weight:bold;
width: 23%;
margin-left:1em;
margin-bottom: 0em;
margin-top: 0em;
padding: 0em;
}
.ChampResAvecVignette {
display:none;
width: 15%;
text-align:left;
font-size:0.9em;
color:#58529F;
font-weight:bold;
margin-bottom: 0em;
margin-top: 0em;
padding: 0em;
margin-left:120px;
}
/* classes dd pour l'affichage de la valeur des champs
/* Nom du champ : titre, auteur, detail, acces au texte integral...
- pratique pour connaitre le nom du champ et la classe css associée
- ne fonctionne pas si on affiche les vignettes */
/* Classe commune à tous les champs affichés */
.ValeurRes {
margin-left:25%;
margin-bottom: 0em;
margin-top: 0em;
padding: 0em;
text-align:left;
font-size: 0.9em;
font-size: 1em;
}
.ValeurRes a{
color:black;
text-decoration:underline;
font-size: 1em;
}
/* quand il y a affichage de vignette */
.ValeurResAvecVignette {
margin-left:120px;
margin-bottom: 0em;
margin-top: 0em;
padding: 0em;
text-align:left;
font-size: 0.9em;
font-size: 1em;
}
.ValeurResAvecVignette a{
color:black;
text-decoration:underline;
font-size: 1em;
}
/* classe pour les auteurs */
.Auteurs {
}
/* classe pour les titres */
.Titre {
font-weight:bold;
}
/* classe pour les identifiants */
.Identifiant {
}
/* classe des détails de publication : une classe par type */
.detail_revue,.detail_conf,.detail_cours,.detail_ouv,.detail_hdr,.detail_these,.detail_autre,.detail_brevet,.detail_rapport,.detail_sans_ref{
}
/* classe pour les doi */
.DOI{
}
/* classe pour les résumés */
.Debut_du_resume{
}
/* classe pour le type de document */
.Type_de_document{
}
/* classe pour l'audience */
.Audience{
}
/* affichage des vignettes*/
.Vignette {
float: left;
clear:left;
padding-right:0em;
margin-left:0.5em;
}
.VignetteImg {
width: auto;
height: auto;
}
/*affichage des fichiers joints*/
.Fichier_joint a{
text-decoration:none;
}
/*lien vers le bibtex*/
.LienBibtex{
}
.LienBibtexACoteFulltext{
margin-left:1em;
}
/*mois de la conférence*/
.MoisConf{
}
.ref_biblio_hal a{
text-decoration:none;
}
/* classe css de la page*/
#res_script{
border:0;
background-color:white;
color:black;
}
/*Titre*/
div.ZoneTitreResultat
{
display:none;
}
/* classe pour les rubriques pour certains type de classement (type de publi, année de publi) */
.Rubrique{
/* position: relative;*/
font-size:x-large;
color:#446;
letter-spacing:2px;
font-weight:bold;
background:#CCC;
text-align:left;
border: solid 1px #558;
padding: 3px 0px 2px 10px;
margin-top: 5px;
margin-bottom: 12px;
}
.SousRubrique{
font-weight:bold;
margin-left:10px;
font-size:1.3em;
}
/*nom du champ*/
.ChampRes {
display:none;
}
/* classe commune à tous les champs affichés */
.ValeurRes {
color:black;
margin-left:1em;
}
/* classe pour les auteurs */
.Auteurs {
}
/* classe pour les titres */
.Titre, .Titre a {
font-weight:bold;
color:#58529F;
}
/* classe pour les identifiants */
.Identifiant {
}
/* classe des détails de publication : une classe par type */
.detail_revue,.detail_conf,.detail_cours,.detail_ouv,.detail_hdr,.detail_these,.detail_autre,.detail_brevet,.detail_rapport,.detail_sans_ref{
}
/* classe pour les doi */
.DOI{
}
/* classe pour les résumés */
.Debut_du_resume{
}
/* classe pour le type de document */
.Type_de_document{
}
/* classe pour l'audience */
.Audience{
}
This diff is collapsed.
body {
padding: 2em 1em 2em 70px;
margin: 0;
font-family: sans-serif;
color: black;
background: white;
background-position: top left;
background-attachment: fixed;
background-repeat: no-repeat;
}
:link { color: #00C; background: transparent }
:visited { color: #609; background: transparent }
a:active { color: #C00; background: transparent }
a:link img, a:visited img { border-style: none }
a img { color: white; }
@media all {