RESULTS.org 17.4 KB
Newer Older
1 2 3
# -*- mode: org -*-
# -*- coding: utf-8 -*-

4 5
#+TITLE: FABuLOuS numericals results

6
#+NAME: fabulous_root
MIJIEUX Thomas's avatar
MIJIEUX Thomas committed
7 8 9
#+BEGIN_SRC shell
echo ${HOME}/fabulous/
#+END_SRC
10

11 12 13 14 15 16
* RESULTS
  :PROPERTIES:
  :header-args:shell: :var WORKDIR=fabulous_root :session *fabulous* :results silent
  :header-args:R: :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session
  :END:
** Setup workstation
17
   To be able to run the following test cases, you must have compiled fabulous:
18

19 20
   For this, you may possibly need load mkl into environement:
   #+BEGIN_SRC shell
21
source /opt/intel/mkl/bin/mklvars.sh intel64
22
   #+END_SRC
23

24 25 26 27 28 29 30
   or with spack
   #+BEGIN_SRC shell
spack load mkl
spack load chameleon
spack load starpu+fxt
   #+END_SRC

31 32
   Setup the build system:
   #+BEGIN_SRC shell
33 34 35 36
mkdir -p ${WORKDIR}/build
cd ${WORKDIR}/build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo \
      -DFABULOUS_DEBUG_MODE=ON \
37 38
      -DFABULOUS_BUILD_EXAMPLES=ON \
      -DFABULOUS_USE_CHAMELEON=ON \
39 40 41
      -DFABULOUS_LAPACKE_NANCHECK=OFF # \
    # -DCHAMELEON_DIR=$(spack location -i chameleon)
   #+END_SRC
42

43 44
   Eventually compile fabulous:
   #+BEGIN_SRC shell
45
cd ${WORKDIR}/build
46 47
make -j4
   #+END_SRC
48

49 50 51 52 53
** Get Test files
*** File list
    [[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)
54

55
    [[file:./build/src/data/sherman4.mtx][sherman4.mtx]]
56

57 58 59
    [[file:./build/src/data/young4c.mtx][young4c.mtx]]
    [[file:./build/src/data/bcsstk14.mtx][bcsstk14.mtx]]
    [[file:./build/src/data/sherman5.mtx][sherman5.mtx]]
60

61 62 63 64 65
    [[file:./build/src/data/bidiagonalmatrix1.mtx][bidiagonalmatrix1.mtx]]
    [[file:./build/src/data/bidiagonalmatrix2.mtx][bidiagonalmatrix2.mtx]]
    [[file:./build/src/data/bidiagonalmatrix3.mtx][bidiagonalmatrix3.mtx]]
    [[file:./build/src/data/bidiagonalmatrix4.mtx][bidiagonalmatrix3.mtx]]
*** Downloads
66
    #+BEGIN_SRC sh :session *fabulous_downloads* :results silent
67
cd $WORKDIR
68 69 70 71 72 73 74
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"
    "ftp://math.nist.gov/pub/MatrixMarket2/Harwell-Boeing/sherman/sherman5.mtx.gz"
    "ftp://math.nist.gov/pub/MatrixMarket2/Harwell-Boeing/acoust/young1c.mtx.gz"
    "ftp://math.nist.gov/pub/MatrixMarket2/Harwell-Boeing/acoust/young4c.mtx.gz"
)
75
mkdir -p ./build/src/data/
76 77 78
for i in "${files[@]}"; do
    filename=$(basename "$i")
    filename="${filename%.*}" # strip gz extension
79
    curl $i | zcat > ./build/src/data/$filename
80
done
81
    #+END_SRC
82 83 84 85 86
** Cleanup results directory
   #+BEGIN_SRC shell
mkdir -p ${WORKDIR}/build/src/data/res
rm ${WORKDIR}/build/src/data/res/* -rf
   #+END_SRC
87 88 89
** Run Examples
*** Influence of restart(m) parameter
**** run test case
90
     #+BEGIN_SRC shell
91
cd ${WORKDIR}/build/src/test_basic/
92 93 94 95 96
mkdir -p ../data/res
sizes=(200 400 600 800 1000)
for siz in "${sizes[@]}"; do
    ./testMatrixMarketChoice -t RUHE -s IMGS -m $siz -A IB -u -o "r=$siz"
done
97
     #+END_SRC
98
**** plot the graphic
99 100 101 102 103
     This graphic seems to indicate than a larger restart parameter help
     to speed up the convergence (but this is not necessarily true, a
     collection of references in IB-BGMRES-DR, Section 4.5, show that
     the contrary is possible)
     #+BEGIN_SRC R
104
library(ggplot2)
105 106 107 108 109
df <- read.csv("./build/src/data/res/r=200.res")
df <- rbind(df, read.csv("./build/src/data/res/r=400.res"))
df <- rbind(df, read.csv("./build/src/data/res/r=600.res"))
df <- rbind(df, read.csv("./build/src/data/res/r=800.res"))
df <- rbind(df, read.csv("./build/src/data/res/r=1000.res"))
110 111 112 113
ggplot(df, aes(x=nb_mvp, y=maxRes, color=name)) +
    geom_line() +
    geom_hline(aes(yintercept=1e-4, color="threshold")) +
    scale_y_log10() + ggtitle("Memory usage influence (young1c IB IMGS-RUHE)")
114
     #+END_SRC
115 116
*** Influence of incremental QR factorization
**** run test case
117
     #+BEGIN_SRC shell
118
cd ${WORKDIR}/build/src/test_basic/
MIJIEUX Thomas's avatar
MIJIEUX Thomas committed
119
mkdir -p ../data/res
120 121 122 123 124
./testMatrixMarketChoice -t BLOCK -s CGS -m 700 \
                         -A STDDR -u -o "Full_GELS"
./testMatrixMarketChoice -t BLOCK -s CGS -m 700 \
                         -A QR -u -o "GELS_with_Incremental_QR_factorization"
     #+END_SRC
125
**** plot the graphic
126
     #+BEGIN_SRC R
127
library(ggplot2)
128
df <- read.csv("./build/src/data/res/Full_GELS.res")
129 130
df <- rbind(df, read.csv("./build/src/data/res/" +
                         "GELS_with_Incremental_QR_factorization.res"))
131
ggplot(df, aes(x=global_iteration, y=least_square_time, color=name)) +
132 133 134
    geom_line() +
    ggtitle("Least Square duration (young1c)")
     #+END_SRC
135 136
*** Influence of the Algorithm
**** run test case
137
     #+BEGIN_SRC shell
138
cd ${WORKDIR}/build/src/test_basic/
139 140
mkdir -p ../data/res
./testMatrixIW_DR
141
     #+END_SRC
142
**** plot the graphic
143
     #+BEGIN_SRC R
144
library(ggplot2)
145 146 147 148
library(latex2exp)
df <- read.csv("./build/src/data/res/STD.res")
df <- rbind(df, read.csv("./build/src/data/res/STD+DR.res"))
df <- rbind(df, read.csv("./build/src/data/res/IB.res"))
149
name <- df$name
150 151
df$name_min <- paste(name, " min")
df$name_max <- paste(name, " max")
152 153 154 155
ggplot(df, aes(x=nb_mvp)) +
    geom_line(aes(y=maxRes, color=name_max)) +
    geom_line(aes(y=minRes, color=name_min)) +
    geom_hline(aes(yintercept=1e-7, color="threshold")) +
156
    scale_y_log10() + ylab(TeX("$\\eta_b$")) +
157
    ggtitle("coneSphere problem with CGS RUHE (STD, STD+DR and IB algorithm)")
158
     #+END_SRC
159 160
*** young1c (nrhs=6, m=90, k=5)
**** run test case
161
     #+BEGIN_SRC shell
162
cd ${WORKDIR}/build/src/test_basic/
MIJIEUX Thomas's avatar
MIJIEUX Thomas committed
163
mkdir -p ../data/res
MIJIEUX Thomas's avatar
MIJIEUX Thomas committed
164
./testMatrixMarketChoice -n 6 -t BLOCK -s MGS -m 90 -e 1e-6 -A QR  -u -o "BGMRES"
165
./testMatrixMarketChoice -n 6 -t BLOCK -s MGS -m 90 -e 1e-6 -A IB -u -o "IB-BGMRES"
MIJIEUX Thomas's avatar
MIJIEUX Thomas committed
166
./testMatrixMarketChoice -n 6 -t RUHE -s MGS -m 90 -e 1e-6 -A QRDR -r DEFLATED -p 5 -u -o "BGMRES-DR"
MIJIEUX Thomas's avatar
MIJIEUX Thomas committed
167
./testMatrixMarketChoice -n 6 -t RUHE -s MGS -m 90 -e 1e-6 -A IBDR -r DEFLATED -p 5 -u -o "IB-BGMRES-DR"
168
     #+END_SRC
169 170
**** plot the graphic
     In this experience, I try to mimic the parameters of section 4.2, example 8.
171 172 173
     The experience results are different because the right hand side are
     generated randomly with different random number generator, the kernels
     used may be different and some algorithms may differ a little.
174

175
     For IB versions, the algorithms do differ:
176 177 178 179
     the experience presented here implement an extension computing
     'Inexact breakdown on R0', while the result presented in the article
     do not (Figure 2, Example 8, left side)
     #+BEGIN_SRC R
180 181
library(ggplot2)
library(latex2exp)
182 183 184 185
df <- read.csv("./build/src/data/res/BGMRES.res")
df <- rbind(df, read.csv("./build/src/data/res/IB-BGMRES.res"))
df <- rbind(df, read.csv("./build/src/data/res/BGMRES-DR.res"))
df <- rbind(df, read.csv("./build/src/data/res/IB-BGMRES-DR.res"))
186 187 188 189 190
ggplot(df, aes(x=nb_mvp)) +
    geom_line(aes(y=maxRes, color=name)) +
    geom_line(aes(y=minRes, color=name)) +
    scale_y_log10() + geom_hline(aes(yintercept=1e-6, color="threshold")) +
    ggtitle("young1c (nrhs=6, m=90 k=5)") + ylab(TeX("$\\eta_b$ (min, max)"))
191
     #+END_SRC
MIJIEUX Thomas's avatar
MIJIEUX Thomas committed
192

193 194
*** lightInTissue (nrhs=6, m=90, k=5)
**** run test case
195
     #+BEGIN_SRC shell
196 197 198
cd ${WORKDIR}/build/src/test_basic/
mkdir -p ../data/res
#nbRHS=6; maxSpace=90
199 200 201 202 203 204 205 206 207 208 209
./testMatrixMarketChoice -f ../data/matlab/lightINtissue.mtx -k CSC \
                         -n 6 -m 90 -A QR -e 1e-6 -u -o "BGMRES"
./testMatrixMarketChoice -f ../data/matlab/lightINtissue.mtx -k CSC \
                         -n 6 -m 90 -A IB -e 1e-6 -u -o "IB-BGMRES"
./testMatrixMarketChoice -f ../data/matlab/lightINtissue.mtx -k CSC \
                         -n 6 -m 90 -A QRDR -r DEFLATED -p 5 -e 1e-6 \
                         -u -o "BGMRES-DR"
./testMatrixMarketChoice -f ../data/matlab/lightINtissue.mtx -k CSC \
                         -n 6 -m 90 -A IBDR -r DEFLATED -p 5 -e 1e-6 \
                         -u -o "IB-BGMRES-DR"
     #+END_SRC
210
**** plot the graphic
211
     #+BEGIN_SRC R
212 213
library(ggplot2)
library(latex2exp)
214 215 216 217
df <- read.csv("./build/src/data/res/BGMRES.res")
df <- rbind(df, read.csv("./build/src/data/res/IB-BGMRES.res"))
df <- rbind(df, read.csv("./build/src/data/res/BGMRES-DR.res"))
df <- rbind(df, read.csv("./build/src/data/res/IB-BGMRES-DR.res"))
218 219 220 221
ggplot(df, aes(x=nb_mvp)) +
    geom_line(aes(y=maxRes, color=name)) +
    geom_line(aes(y=minRes, color=name)) +
    scale_y_log10() + geom_hline(aes(yintercept=1e-6, color="threshold")) +
222 223 224
    ggtitle("lightInTissue (nrhs=6, m=90 k=5)") +
    ylab(TeX("$\\eta_b$ (min, max)"))
     #+END_SRC
225

226 227
*** Influence of deflated restart (k) parameter (nrhs=6, m=90)
**** run test case
228
     #+BEGIN_SRC shell
229
cd ${WORKDIR}/build/src/test_basic/
230 231
mkdir -p ../data/res
#nbRHS=6; maxSpace=90
232 233 234 235 236 237 238 239 240
./testMatrixMarketChoice -n 6 -t RUHE -s MGS -m 90 -e 1e-6 -A QRDR \
                         -r DEFLATED -p 5 -u -o "BGMRES-DR(05)"
./testMatrixMarketChoice -n 6 -t RUHE -s MGS -m 90 -e 1e-6 -A QRDR \
                         -r DEFLATED -p 10 -u -o "BGMRES-DR(10)"
./testMatrixMarketChoice -n 6 -t RUHE -s MGS -m 90 -e 1e-6 -A QRDR \
                         -r DEFLATED -p 15 -u -o "BGMRES-DR(15)"
./testMatrixMarketChoice -n 6 -t RUHE -s MGS -m 90 -e 1e-6 -A QRDR \
                         -r DEFLATED -p 20 -u -o "BGMRES-DR(20)"
     #+END_SRC
241
**** plot the graphic
242
     #+BEGIN_SRC R
243 244
library(ggplot2)
library(latex2exp)
245 246 247 248
df <- read.csv("./build/src/data/res/BGMRES-DR(05).res")
df <- rbind(df, read.csv("./build/src/data/res/BGMRES-DR(10).res"))
df <- rbind(df, read.csv("./build/src/data/res/BGMRES-DR(15).res"))
df <- rbind(df, read.csv("./build/src/data/res/BGMRES-DR(20).res"))
249 250 251 252
ggplot(df, aes(x=nb_mvp)) +
    geom_line(aes(y=maxRes, color=name)) +
    geom_line(aes(y=minRes, color=name)) +
    scale_y_log10() + geom_hline(aes(yintercept=1e-6, color="threshold")) +
253 254 255
    ggtitle("young1c (nrhs=6, m=90 k=(5,10,15,20))") +
    ylab(TeX("$\\eta_b$ (min, max)"))
     #+END_SRC
256 257
*** csc lightInTissue timing
**** run test
258
     #+BEGIN_SRC shell
259
cd ${WORKDIR}/build/src/test_basic/
260
nmkdir -p ../data/res
261
#nbRHS=6; maxSpace=90
262
./testMatrixMarketChoice -f ../data/matlab/lightINtissue.mtx -k CSC \
263 264 265
                         -t BLOCK -s CGS \
                         -n 6 -m 90 -A IBDR -r DEFLATED -p 5 -e 1e-4 \
                         -u -o "IB-BGMRES-DR"
266
     #+END_SRC
267
**** plot
268
     #+BEGIN_SRC R
269 270
library(ggplot2)
library(latex2exp)
271 272
df <- read.csv("./build/src/data/res/IB-BGMRES-DR.res")
ggplot(df, aes(x=global_iteration)) +
273 274
    geom_line(aes(y=time, color="total")) +
    geom_line(aes(y=least_square_time, color="gels")) +
275 276 277
    geom_line(aes(y=mvp_time, color="mvp")) +
    geom_line(aes(y=ortho_time, color="ortho")) +
    geom_line(aes(y=ib_time, color="ib")) +
MIJIEUX Thomas's avatar
MIJIEUX Thomas committed
278
#   geom_line(aes(y=ib_time+ortho_time+mvp_time+least_square_time, color="SUM")) +
279 280
    ylab(TeX("Time (s)")) +
    ggtitle("lightInTissue (nrhs=6, m=90 k=5)")
281
     #+END_SRC
282 283
*** qr ib dr
**** run test
284
     #+BEGIN_SRC shell
285 286 287
cd ${WORKDIR}/build/src/test_basic/
mkdir -p ../data/res
#nbRHS=6; maxSpace=90
288 289 290 291 292
./testMatrixMarketChoice -n 6 -t RUHE -s MGS -m 90 -e 1e-6 -A IBDR \
                         -r DEFLATED -p 5 -u -o "IB-BGMRES-DR"
./testMatrixMarketChoice -n 6 -t RUHE -s MGS -m 90 -e 1e-6 -A QRIBDR \
                         -r DEFLATED -p 5 -u -o "QR-IB-BGMRES-DR"
     #+END_SRC
293
**** plot
294
     #+BEGIN_SRC R
295 296
library(ggplot2)
library(latex2exp)
297 298
df <- read.csv("./build/src/data/res/IB-BGMRES-DR.res")
df <- rbind(df, read.csv("./build/src/data/res/QR-IB-BGMRES-DR.res"))
299 300 301 302 303
ggplot(df, aes(x=nb_mvp)) +
    geom_line(aes(y=maxRes, color=name)) +
    geom_line(aes(y=minRes, color=name)) +
    scale_y_log10() + geom_hline(aes(yintercept=1e-6, color="threshold")) +
    ggtitle("young1c (nrhs=6, m=90 k=5)") + ylab(TeX("$\\eta_b$ (min, max)"))
304
     #+END_SRC
305 306
*** qr ib dr timing
**** run test
307
     #+BEGIN_SRC shell
308 309 310
cd ${WORKDIR}/build/src/test_basic/
mkdir -p ../data/res
#nbRHS=6; maxSpace=90
311
./testMatrixMarketChoice -n 100 -t BLOCK -s CGS -m 700 -e 1e-4 -A IBDR \
312
                         -r DEFLATED -p 5 -u -o "IB-BGMRES-DR"
313
./testMatrixMarketChoice -n 100 -t BLOCK -s CGS -m 700 -e 1e-4 -A QRIBDR \
314 315
                         -r DEFLATED -p 5 -u -o "QR-IB-BGMRES-DR"
     #+END_SRC
316 317 318 319
     RESULTS FILES:
     file:~/fabulous/build/src/data/res/IB-BGMRES-DR.res
     file:~/fabulous/build/src/data/res/QR-IB-BGMRES-DR.res

320
**** plot
321
     #+BEGIN_SRC R
322
library(ggplot2)
323 324
df <- read.csv("./build/src/data/res/IB-BGMRES-DR.res")
df <- rbind(df, read.csv("./build/src/data/res/QR-IB-BGMRES-DR.res"))
325
ggplot(df, aes(x=nb_mvp)) +
326 327 328 329
    geom_line(aes(y=least_square_time, color=paste(name,"gels"))) +
    geom_line(aes(y=facto_time, color=paste(name, "facto"))) +
    geom_line(aes(y=facto_time+least_square_time, color=paste(name, "sum"))) +
    ggtitle("young1c (nrhs=100, m=500 k=5, max_mvp=10000)") +
330 331
    ylab("time (s)")
     #+END_SRC
332 333 334 335 336 337 338 339 340 341 342 343 344
**** papi (commit 20c31809be1f04a1b575008f9527abbec07a2f21 / branch papi)
     Try to compare PAPI hw counter with estimation of Gflops/s we computed:
     #+BEGIN_SRC R
library(ggplot2)
df <- read.csv("./build/src/data/res/IB-BGMRES-DR.res")
df <- rbind(df, read.csv("./build/src/data/res/QR-IB-BGMRES-DR.res"))
ggplot(df, aes(x=nb_mvp)) +
    geom_line(aes(y=ortho_flops/(ortho_time*1000000000.0), color=paste(name, " Estimate Gflops/s"))) +
    geom_line(aes(y=papi_flop_s/1000.0, color=paste(name, " PAPI Gflops/s"))) +
#    geom_line(aes(y=papi_flop_s, color=paste(name, " PAPI Mflops/s")) +
    ggtitle("young1c (nrhs=100, m=500 k=5, max_mvp=10000)") +
    ylab("time (s)")
     #+END_SRC
345 346 347 348 349 350

     #+BEGIN_SRC R
library(ggplot2)
df <- read.csv("./build/src/data/res/IB-BGMRES-DR.res")
df <- rbind(df, read.csv("./build/src/data/res/QR-IB-BGMRES-DR.res"))
ggplot(df, aes(x=nb_mvp)) +
351
    geom_point(aes(y=papi_flop_s, color=paste(name, " PAPI Mflops/s"))) +
352 353 354 355
    ggtitle("young1c (nrhs=100, m=500 k=5, max_mvp=10000)") +
    ylab("time (s)")
     #+END_SRC

356
*** with chameleon
357
**** run test
358
     #+BEGIN_SRC shell
359 360 361
cd ${WORKDIR}/build/src/test_cham/
mkdir -p ../data/res
#nbRHS=6; maxSpace=90
362 363 364 365 366 367
# following variable MUST have a trailing slash
export STARPU_FXT_PREFIX=${WORKDIR}/build/
# plafrim:
#spack load mpi; spack load hwloc; spack load starpu; spack load chameleon
#option -z for chameleon with 1 core only
./testMatrixMarketChoice_cham -z -n 50 -e 1e-4 -A CHAMDR -u -o "CHAM-TL"
368
# ./testMatrixMarketChoice_cham -n 100 -e 1e-4 -A CHAMQR -u -o "CHAM-QR"
369
     #+END_SRC
370
**** plot
371 372
     The following graph represent relative percentages spent
     in each stage of the algorithm
373
     #+BEGIN_SRC R
374 375
library(ggplot2)
library(latex2exp)
376
df <- read.csv("./build/src/data/res/CHAM-TL.res")
377 378 379 380 381
ggplot(df, aes(x=global_iteration)) +
    geom_line(aes(y=100, color="total")) +
    geom_line(aes(y=(least_square_time/time)*100, color="Gels")) +
    geom_line(aes(y=(ortho_time/time)*100, color="Ortho")) +
    geom_line(aes(y=(mvp_time/time)*100, color="Mvp")) +
382 383 384 385 386
    geom_line(aes(y=((mvp_time+ortho_time+
                      least_square_time)/time)*100, color="SUM")) +
    ggtitle("Relative % time spent (young1c CHAM) (nrhs=50)") +
    ylab(TeX("$\\% time"))
     #+END_SRC
387 388
*** young1c chameleon comparison QR (nrhs=6, m=90, k=5)
**** run test case
389
     #+BEGIN_SRC shell
390 391
cd ${WORKDIR}/build/src/test_basic/
mkdir -p ../data/res
392 393
./testMatrixMarketChoice -n 6 -t BLOCK -s MGS -m 90 -e 1e-6 \
                         -A QR -u -o "QR"
394
cd ${WORKDIR}/build/src/test_cham/
395 396 397
./testMatrixMarketChoice_cham -z -n 6 -t RUHE -s MGS -m 90 -e 1e-6 \
                              -A CHAMQR -u -o "CHAMQR"
     #+END_SRC
398
**** plot the graphic
399
     #+BEGIN_SRC R
400 401
library(ggplot2)
library(latex2exp)
402 403
df <- read.csv("./build/src/data/res/QR.res")
df <- rbind(df, read.csv("./build/src/data/res/CHAMQR.res"))
404 405 406 407 408
ggplot(df, aes(x=nb_mvp)) +
    geom_line(aes(y=maxRes, color=name)) +
    geom_line(aes(y=minRes, color=name)) +
    scale_y_log10() + geom_hline(aes(yintercept=1e-6, color="threshold")) +
    ggtitle("young1c (nrhs=6, m=90 k=5)") + ylab(TeX("$\\eta_b$ (min, max)"))
409
     #+END_SRC
410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453
*** GCR first results nrhs=10 m=300
**** test case
    #+BEGIN_SRC shell
cd ${WORKDIR}/build/src/test_basic/
mkdir -p ../data/res
./testGCR 10 300
    #+END_SRC
    file:~/fabulous/build/src/data/res/young1c_IMGS_BLOCK_BGCR.res
**** graphic
     The max and min displayed here are the max and min of the not discared direction
     This is why the min may be increasing on this graphic: This means a direction was discarded
     and its norm is not taken into account anymore.
     #+BEGIN_SRC R
library(ggplot2)
df <- read.csv("./build/src/data/res/young1c_IMGS_BLOCK_BGCR.res")
ggplot(df, aes(x=nb_mvp)) +
    geom_line(aes(y=maxRes, color="max")) +
    geom_line(aes(y=minRes, color="min")) +
    geom_hline(aes(yintercept=1e-4, color="threshold")) +
    scale_y_log10() +
    ggtitle("GCR nrhs=10 m=300")
     #+END_SRC
*** GCR first results nrhs=6 m=90
**** test case
    #+BEGIN_SRC shell
cd ${WORKDIR}/build/src/test_basic/
mkdir -p ../data/res
./testGCR 6 90
    #+END_SRC
    file:~/fabulous/build/src/data/res/young1c_IMGS_BLOCK_BGCR.res
**** graphic
     The max and min displayed here are the max and min of the not discared direction
     This is why the min may be increasing on this graphic: This means a direction was discarded
     and its norm is not taken into account anymore.
     #+BEGIN_SRC R
library(ggplot2)
df <- read.csv("./build/src/data/res/young1c_IMGS_BLOCK_BGCR.res")
ggplot(df, aes(x=nb_mvp)) +
    geom_line(aes(y=maxRes, color="max")) +
    geom_line(aes(y=minRes, color="min")) +
    geom_hline(aes(yintercept=1e-4, color="threshold")) +
    scale_y_log10() +
    ggtitle("GCR nrhs=6 m=90")
     #+END_SRC