Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
fabulous
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Packages
Packages
Container Registry
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
solverstack
fabulous
Commits
e595a587
Commit
e595a587
authored
Apr 20, 2017
by
MIJIEUX Thomas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update INSTALL.org to match upstream chameleon merge(C++ header type)
parent
2c557ffa
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
79 deletions
+45
-79
INSTALL.org
INSTALL.org
+28
-59
RESULTS.org
RESULTS.org
+17
-20
No files found.
INSTALL.org
View file @
e595a587
# -*- mode: org -*-
# -*- coding: utf-8 -*-
#+TITLE: Fabulous installation procedure (Plafrim2)
* INSTALLATION on PLAFRIM2 with chameleon
** With SPACK
*** Install SPACK
If you dont have spack, download it:
#+begin_src sh
#+begin_src
ba
sh
cd ${HOME}
git clone https://github.com/solverstack/spack.git
#+end_src
Set SPACK_ROOT variable to the directory where spack is installed:
#+begin_src bash :session *INSTALLFABULOUS* :tangle install-fabulous.sh
#!/bin/bash
export SPACK_ROOT=/home/tmijieux/spack
#+end_src
Load spack to into your terminal environment:
#+begin_src sh :tangle load_spack.sh
PWD=$(pwd)
WORKDIR=${WORKDIR:-${PWD}}
export SPACK_ROOT=${SPACK_ROOT:-${WORKDIR}}
#+begin_src bash :session *INSTALLFABULOUS* :tangle install-fabulous.sh
source ${SPACK_ROOT}/share/spack/setup-env.sh
export MODULEPATH=$SPACK_ROOT/share/spack/modules/linux-x86_64:$MODULEPATH
spack compiler find
...
...
@@ -20,68 +28,30 @@
*** Install Fabulous
On plafrim, you need to load the required modules:
#+begin_src
sh :tangle plafrim_module
.sh
#+begin_src
bash :session *INSTALLFABULOUS* :tangle install-fabulous
.sh
module purge
module load compiler/gcc/6.1.0
module load build/cmake/3.2.1
module load intel/mkl/64/11.2/2016.0.0
#+end_src
Fabulous is a c++ application that use Chameleon kernel whose API are written in C.
More specifically Chameleon API use C literal complex types that does not exist in C++.
The good point is that C complex type 'float _Complex' and 'double _Complex'
are 'binary compatible' (they have the same memory layout and constraints) with
c++ std::complex<float> and std::complex<double>.
Hence it is possible to replace C complex type with C++ complex types in Chameleon header
depending on the langage of the targeted application.
(For instance, this is done in LAPACKE header, see 'lapacke_config.h')
This is (currently) not handled in the main branch of Chameleon, so we need to clone
a fork of the main chameleon release which can do that.
(you can expect that it will be included in the main release in the future)
#+begin_src sh :tangle install_with_chameleon.sh
#!/bin/bash
PWD=$(pwd)
WORKDIR=${WORKDIR:-${PWD}}
cd ${WORKDIR}
source plafrim_module.sh
source load_spack.sh
git clone https://gitlab.inria.fr/tmijieux/chameleon.git --branch complex_type_header
cd chameleon
git submodule init && git submodule update
cd ..
#+end_src
Set shell variables for spack to find the dependencies
#+begin_src
sh :tangle install_with_chameleon
.sh
#+begin_src
bash :session *INSTALLFABULOUS* :tangle install-fabulous
.sh
export CMAKE_DIR=/cm/shared/dev/apps/build/cmake/3.2.1
export CHAMELEON_DIR=${WORKDIR}/chameleon
#+end_src
Check the specification with:
#+begin_src
sh :tangle install_with_chameleon
.sh
SPEC="fabulous@develop+chameleon%gcc@6.1.0 ^chameleon@
src
^mkl@exist ^cmake@exist"
#+begin_src
bash :session *INSTALLFABULOUS* :tangle install-fabulous
.sh
SPEC="fabulous@develop+chameleon%gcc@6.1.0 ^chameleon@
master
^mkl@exist ^cmake@exist"
spack spec ${SPEC}
#+end_src
If you use the tangled script, this prompt you so you can check the spec
safely before installing:
#+begin_src sh :tangle install_with_chameleon.sh
echo CMAKE_DIR=${CMAKE_DIR}
echo CHAMELEON_DIR=${CHAMELEON_DIR}
read -p "Is this ok? [Y/n] " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
#+end_src
On plafrim, spack may have troubles fetching the required dependencies
on the internet. If you encounter this issue, you can create a spack
mirror on your machine and sent it to plafrim:
#+begin_src sh
#+begin_src
ba
sh
#local machine:
spack mirror create -d
chameleon_mirror -D -o fabulous
spack mirror create -d
fabulous_mirror -D -o fabulous@develop+chameleon^chameleon@master
# mirror store dependencies as compressed archives already
# so it is not very useful to add anymore compression at this stage:
tar cf fabulous_mirror.tar fabulous_mirror/
...
...
@@ -92,21 +62,20 @@
#+end_src
If everything looks good, you can proceed the installation with:
#+begin_src
sh :tangle install_with_chameleon
.sh
#+begin_src
bash :session *INSTALLFABULOUS* :tangle install-fabulous
.sh
spack install -v ${SPEC}
#+end_src
To perform all this with an automated script you can do
#+begin_src emacs-lisp
You can perform these actions either manually, by evaluating the code blocks
directly inside emacs if your org-mode support it, or by tangling this org
document to produce [[./install-fabulous.sh][install-fabulous.sh]] and execute it:
#+begin_src emacs-lisp :results silent
(org-babel-tangle)
#+end_src
or with the emacs command:
#+begin_src emacs
M-x org-babel-tangle
#+end_src
then:
#+begin_src sh
chmod +x ./install
_with_chameleon
.sh
./install
_with_chameleon
.sh
#+begin_src
ba
sh
chmod +x ./install
-fabulous
.sh
./install
-fabulous
.sh
#+end_src
RESULTS.org
View file @
e595a587
...
...
@@ -2,10 +2,8 @@
# -*- coding: utf-8 -*-
#+TITLE: FABuLOuS numericals results
#+STARTUP: showeverything
* RESULTS
** Get Test files
* Get Test files
[[file:./build/src/data/young1c.mtx][young1c.mtx]]
[[file:./build/src/data/matrices_BEM/MatconeSpherePC_MAIN_MAIN_0][MatconeSpherePC_MAIN_MAIN_0]] (binary)
[[file:./build/src/data/matrices_BEM/coneSpherePC_RHS_MAIN.0.res][coneSpherePC_RHS_MAIN.0.res]] (binary)
...
...
@@ -21,8 +19,8 @@
[[file:./build/src/data/bidiagonalmatrix3.mtx][bidiagonalmatrix3.mtx]]
[[file:./build/src/data/bidiagonalmatrix4.mtx][bidiagonalmatrix3.mtx]]
**
*
Downloads
#+begin_src shell :session *DOWNLOADS* :results
none
** Downloads
#+begin_src shell :session *DOWNLOADS* :results
silent
files=(
"ftp://math.nist.gov/pub/MatrixMarket2/Harwell-Boeing/bcsstruc2/bcsstk14.mtx.gz"
"ftp://math.nist.gov/pub/MatrixMarket2/Harwell-Boeing/sherman/sherman4.mtx.gz"
...
...
@@ -38,10 +36,10 @@ for i in "${files[@]}"; do
done
#+end_src
*
*
Run Examples
* Run Examples
Set this variable to your work directory (where you downloaded fabulous):
#+begin_src sh :session *TEST* :results
none
export WORKDIR=/home/tmijieux/fabulous
#+begin_src sh :session *TEST* :results
silent
export WORKDIR=/home/tmijieux/fabulous
# for example
#+end_src
To be able to run the following test cases, you must have compiled fabulous:
...
...
@@ -53,9 +51,9 @@ cmake .. # -DCHAMELEON_DIR=$(spack location -i chameleon)
make
#+end_src
**
*
Impact of restart parameter
***
*
run test case
#+begin_src sh :session *TEST* :results
none
** Impact of restart parameter
*** run test case
#+begin_src sh :session *TEST* :results
silent
cd ${WORKDIR}/build/src/test_core/
mkdir -p ../data/res
sizes=(200 400 600 800 1000)
...
...
@@ -64,7 +62,7 @@ for siz in "${sizes[@]}"; do
done
#+end_src
***
*
plot the graphic
*** plot the graphic
#+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R*
library(ggplot2)
df <- read.table("./build/src/data/res/r=200.res", header=T)
...
...
@@ -78,10 +76,9 @@ ggplot(df, aes(x=nb_mvp, y=maxRes, color=name)) +
geom_hline(aes(yintercept=1e-4, color="threshold")) +
scale_y_log10() + ggtitle("Memory usage influence (young1c IB IMGS-RUHE)")
#+end_src
*** Impact of incremental QR factorization
**** run test case
#+begin_src sh :session *TEST* :results none
** Impact of incremental QR factorization
*** run test case
#+begin_src sh :session *TEST* :results silent
cd ${WORKDIR}/build/src/test_core/
./testMatrixMarketChoice -t BLOCK -s CGS -m 900 -A STDDR -u -o "Basic_GELS"
./testMatrixMarketChoice -t BLOCK -s CGS -m 900 -A QR -u -o "QR_factorization"
...
...
@@ -96,14 +93,14 @@ ggplot(df, aes(x=global_iteration, y=least_square_time, color=name)) +
#+end_src
**
*
Influence of the Algorithm
***
*
run test case
#+begin_src sh :session *TEST* :results
none
** Influence of the Algorithm
*** run test case
#+begin_src sh :session *TEST* :results
silent
cd ${WORKDIR}/build/src/test_core/
mkdir -p ../data/res
./testMatrixIW_DR
#+end_src
***
*
plot the graphic
*** plot the graphic
#+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R*
library(ggplot2)
df <- read.table("./build/src/data/res/STD.res", header=T)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment