diff --git a/.gitignore b/.gitignore index 44e463e..27de307 100644 --- a/.gitignore +++ b/.gitignore @@ -19,5 +19,5 @@ vignettes/*.pdf cpuinfo hosts-list.txt ssh/rsa.key -*.rds +results/*.rds *.html diff --git a/README.md b/README.md index 6774470..8b5ff48 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,1714 @@ -# blasbenchmarks +# BLAS libraries benchmarks +Andrzej Wójtowicz + +Document generation date: 2016-05-26 19:23:05 + + + +## Table of Contents + + 1. [Configuration](#configuration) + 2. [Results per host](#results-per-host) + * [Intel Core i5-4590 + NVIDIA GeForce GT 430](#intel-core-i5-4590-nvidia-geforce-gt-430) + * [Intel Core i5-3570](#intel-core-i5-3570) + * [Intel Core i3-2120](#intel-core-i3-2120) + * [Intel Core i3-3120M](#intel-core-i3-3120m) + 3. [Results per library](#results-per-library) + * [Netlib](#netlib) + * [Atlas (st)](#atlas-st) + * [OpenBLAS](#openblas) + * [Atlas (mt)](#atlas-mt) + * [GotoBLAS2](#gotoblas2) + * [MKL](#mkl) + * [BLIS](#blis) + +*** + +## Configuration + +**R software**: [Microsoft R Open](https://mran.microsoft.com/open/). + +**Libraries**: + +|CPU (single-threaded)|CPU (multi-threaded)|GPU| +|---|---|---| +|[Netlib](http://www.netlib.org/) (debian package)|[OpenBLAS](http://www.openblas.net/) (debian package)|[NVIDIA cuBLAS](https://developer.nvidia.com/cublas) (NVBLAS + Intel MKL)| +|[ATLAS](http://math-atlas.sourceforge.net/) (debian package)|[ATLAS](http://math-atlas.sourceforge.net/) (dev branch)| | +| |[GotoBLAS2](https://prs.ism.ac.jp/~nakama/SurviveGotoBLAS2/) (Survive fork)| | +| |[Intel MKL](https://mran.microsoft.com/download/) (part of Microsoft R Open)| | +| |[BLIS](https://github.com/flame/blis)| | + +**Hosts**: + +|No.|CPU|GPU| +|---|---|---| +|1.|[Intel Core i5-4590](http://ark.intel.com/products/80815/Intel-Core-i5-4590-Processor-6M-Cache-up-to-3_70-GHz)|[NVIDIA GeForce GT 430](http://www.geforce.com/hardware/desktop-gpus/geforce-gt-430/specifications)| +|2.|[Intel Core i5-3570](http://ark.intel.com/products/65702/Intel-Core-i5-3570-Processor-6M-Cache-up-to-3_80-GHz)| - | +|3.|[Intel Core i3-2120](http://ark.intel.com/products/53426/Intel-Core-i3-2120-Processor-3M-Cache-3_30-GHz)| - | +|4.|[Intel Core i3-3120M](http://ark.intel.com/products/71465/Intel-Core-i3-3120M-Processor-3M-Cache-2_50-GHz)| - | + +**Benchmarks**: [Urbanek](http://r.research.att.com/benchmarks/R-benchmark-25.R), [Revolution](https://gist.github.com/andrie/24c9672f1ea39af89c66#file-rro-mkl-benchmark-r), [Gcbd](https://cran.r-project.org/web/packages/gcbd/vignettes/gcbd.pdf). + + + + + +# Results per host + +## Intel Core i5-4590 + NVIDIA GeForce GT 430 + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h1_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h1_b3_t1.png)![](gen/img/img_ph_h1_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h1_b3_t2.png)![](gen/img/img_ph_h1_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h1_b3_t3.png)![](gen/img/img_ph_h1_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h1_b3_t4.png)![](gen/img/img_ph_h1_b3_t4b.png) + + + +## Intel Core i5-3570 + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h2_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h2_b3_t1.png)![](gen/img/img_ph_h2_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h2_b3_t2.png)![](gen/img/img_ph_h2_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h2_b3_t3.png)![](gen/img/img_ph_h2_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h2_b3_t4.png)![](gen/img/img_ph_h2_b3_t4b.png) + + + +## Intel Core i3-2120 + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h3_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h3_b3_t1.png)![](gen/img/img_ph_h3_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h3_b3_t2.png)![](gen/img/img_ph_h3_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h3_b3_t3.png)![](gen/img/img_ph_h3_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h3_b3_t4.png)![](gen/img/img_ph_h3_b3_t4b.png) + + + +## Intel Core i3-3120M + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_ph_h4_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h4_b3_t1.png)![](gen/img/img_ph_h4_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h4_b3_t2.png)![](gen/img/img_ph_h4_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h4_b3_t3.png)![](gen/img/img_ph_h4_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_ph_h4_b3_t4.png)![](gen/img/img_ph_h4_b3_t4b.png) + + + + +# Results per library + +## Netlib + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l1_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l1_b3_t1.png)![](gen/img/img_pl_l1_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l1_b3_t2.png)![](gen/img/img_pl_l1_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l1_b3_t3.png)![](gen/img/img_pl_l1_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l1_b3_t4.png)![](gen/img/img_pl_l1_b3_t4b.png) + + + +## ATLAS (st) + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l2_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l2_b3_t1.png)![](gen/img/img_pl_l2_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l2_b3_t2.png)![](gen/img/img_pl_l2_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l2_b3_t3.png)![](gen/img/img_pl_l2_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l2_b3_t4.png)![](gen/img/img_pl_l2_b3_t4b.png) + + + +## OpenBLAS + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l3_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l3_b3_t1.png)![](gen/img/img_pl_l3_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l3_b3_t2.png)![](gen/img/img_pl_l3_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l3_b3_t3.png)![](gen/img/img_pl_l3_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l3_b3_t4.png)![](gen/img/img_pl_l3_b3_t4b.png) + + + +## ATLAS (mt) + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l4_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l4_b3_t1.png)![](gen/img/img_pl_l4_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l4_b3_t2.png)![](gen/img/img_pl_l4_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l4_b3_t3.png)![](gen/img/img_pl_l4_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l4_b3_t4.png)![](gen/img/img_pl_l4_b3_t4b.png) + + + +## GotoBLAS2 + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l5_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l5_b3_t1.png)![](gen/img/img_pl_l5_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l5_b3_t2.png)![](gen/img/img_pl_l5_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l5_b3_t3.png)![](gen/img/img_pl_l5_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l5_b3_t4.png)![](gen/img/img_pl_l5_b3_t4b.png) + + + +## MKL + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l6_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l6_b3_t1.png)![](gen/img/img_pl_l6_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l6_b3_t2.png)![](gen/img/img_pl_l6_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l6_b3_t3.png)![](gen/img/img_pl_l6_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l6_b3_t4.png)![](gen/img/img_pl_l6_b3_t4b.png) + + + +## BLIS + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l7_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l7_b3_t1.png)![](gen/img/img_pl_l7_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l7_b3_t2.png)![](gen/img/img_pl_l7_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l7_b3_t3.png)![](gen/img/img_pl_l7_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l7_b3_t4.png)![](gen/img/img_pl_l7_b3_t4b.png) + + + +## cuBLAS + + + +### Urbanek benchmark + +#### 2800x2800 cross-product matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b1_t1.png) + + + +#### Linear regr. over a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b1_t2.png) + + + +#### Eigenvalues of a 640x640 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b1_t3.png) + + + +#### Determinant of a 2500x2500 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b1_t4.png) + + + +#### Cholesky decomposition of a 3000x3000 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b1_t5.png) + + + +#### Inverse of a 1600x1600 random matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b1_t6.png) + + + +#### Escoufier's method on a 45x45 matrix + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b1_t7.png) + + + +### Revolution benchmark + +#### Matrix Multiply + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b2_t1.png) + + + +#### Cholesky Factorization + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b2_t2.png) + + + +#### Singular Value Deomposition + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b2_t3.png) + + + +#### Principal Components Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b2_t4.png) + + + +#### Linear Discriminant Analysis + +Time in seconds - 10 runs - lower is better + +![](gen/img/img_pl_l8_b2_t5.png) + + + +### Gcbd benchmark + +#### Matrix Multiply + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l8_b3_t1.png)![](gen/img/img_pl_l8_b3_t1b.png) + + + +#### QR Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l8_b3_t2.png)![](gen/img/img_pl_l8_b3_t2b.png) + + + +#### Singular Value Deomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l8_b3_t3.png)![](gen/img/img_pl_l8_b3_t3b.png) + + + +#### Triangular Decomposition + +Time in seconds regarding matrix size - right panel on log scale - from 50 to 5 runs - lower is better + +![](gen/img/img_pl_l8_b3_t4.png)![](gen/img/img_pl_l8_b3_t4b.png) diff --git a/gen/data/benchmark.results.rds b/gen/data/benchmark.results.rds new file mode 100644 index 0000000..987f529 Binary files /dev/null and b/gen/data/benchmark.results.rds differ diff --git a/gen/data/hosts.info.rds b/gen/data/hosts.info.rds new file mode 100644 index 0000000..251b5b2 Binary files /dev/null and b/gen/data/hosts.info.rds differ diff --git a/gen/img/img_ph_h1_b1_t1.png b/gen/img/img_ph_h1_b1_t1.png new file mode 100644 index 0000000..321d496 Binary files /dev/null and b/gen/img/img_ph_h1_b1_t1.png differ diff --git a/gen/img/img_ph_h1_b1_t2.png b/gen/img/img_ph_h1_b1_t2.png new file mode 100644 index 0000000..117c436 Binary files /dev/null and b/gen/img/img_ph_h1_b1_t2.png differ diff --git a/gen/img/img_ph_h1_b1_t3.png b/gen/img/img_ph_h1_b1_t3.png new file mode 100644 index 0000000..2aaf536 Binary files /dev/null and b/gen/img/img_ph_h1_b1_t3.png differ diff --git a/gen/img/img_ph_h1_b1_t4.png b/gen/img/img_ph_h1_b1_t4.png new file mode 100644 index 0000000..d848fec Binary files /dev/null and b/gen/img/img_ph_h1_b1_t4.png differ diff --git a/gen/img/img_ph_h1_b1_t5.png b/gen/img/img_ph_h1_b1_t5.png new file mode 100644 index 0000000..fc3c015 Binary files /dev/null and b/gen/img/img_ph_h1_b1_t5.png differ diff --git a/gen/img/img_ph_h1_b1_t6.png b/gen/img/img_ph_h1_b1_t6.png new file mode 100644 index 0000000..1b3a336 Binary files /dev/null and b/gen/img/img_ph_h1_b1_t6.png differ diff --git a/gen/img/img_ph_h1_b1_t7.png b/gen/img/img_ph_h1_b1_t7.png new file mode 100644 index 0000000..082c323 Binary files /dev/null and b/gen/img/img_ph_h1_b1_t7.png differ diff --git a/gen/img/img_ph_h1_b2_t1.png b/gen/img/img_ph_h1_b2_t1.png new file mode 100644 index 0000000..3179936 Binary files /dev/null and b/gen/img/img_ph_h1_b2_t1.png differ diff --git a/gen/img/img_ph_h1_b2_t2.png b/gen/img/img_ph_h1_b2_t2.png new file mode 100644 index 0000000..d529280 Binary files /dev/null and b/gen/img/img_ph_h1_b2_t2.png differ diff --git a/gen/img/img_ph_h1_b2_t3.png b/gen/img/img_ph_h1_b2_t3.png new file mode 100644 index 0000000..9d2b3f2 Binary files /dev/null and b/gen/img/img_ph_h1_b2_t3.png differ diff --git a/gen/img/img_ph_h1_b2_t4.png b/gen/img/img_ph_h1_b2_t4.png new file mode 100644 index 0000000..739652d Binary files /dev/null and b/gen/img/img_ph_h1_b2_t4.png differ diff --git a/gen/img/img_ph_h1_b2_t5.png b/gen/img/img_ph_h1_b2_t5.png new file mode 100644 index 0000000..2254fd6 Binary files /dev/null and b/gen/img/img_ph_h1_b2_t5.png differ diff --git a/gen/img/img_ph_h1_b3_t1.png b/gen/img/img_ph_h1_b3_t1.png new file mode 100644 index 0000000..e1ba795 Binary files /dev/null and b/gen/img/img_ph_h1_b3_t1.png differ diff --git a/gen/img/img_ph_h1_b3_t1b.png b/gen/img/img_ph_h1_b3_t1b.png new file mode 100644 index 0000000..28ce104 Binary files /dev/null and b/gen/img/img_ph_h1_b3_t1b.png differ diff --git a/gen/img/img_ph_h1_b3_t2.png b/gen/img/img_ph_h1_b3_t2.png new file mode 100644 index 0000000..7423620 Binary files /dev/null and b/gen/img/img_ph_h1_b3_t2.png differ diff --git a/gen/img/img_ph_h1_b3_t2b.png b/gen/img/img_ph_h1_b3_t2b.png new file mode 100644 index 0000000..8caaded Binary files /dev/null and b/gen/img/img_ph_h1_b3_t2b.png differ diff --git a/gen/img/img_ph_h1_b3_t3.png b/gen/img/img_ph_h1_b3_t3.png new file mode 100644 index 0000000..d79f580 Binary files /dev/null and b/gen/img/img_ph_h1_b3_t3.png differ diff --git a/gen/img/img_ph_h1_b3_t3b.png b/gen/img/img_ph_h1_b3_t3b.png new file mode 100644 index 0000000..d4342ef Binary files /dev/null and b/gen/img/img_ph_h1_b3_t3b.png differ diff --git a/gen/img/img_ph_h1_b3_t4.png b/gen/img/img_ph_h1_b3_t4.png new file mode 100644 index 0000000..11ee057 Binary files /dev/null and b/gen/img/img_ph_h1_b3_t4.png differ diff --git a/gen/img/img_ph_h1_b3_t4b.png b/gen/img/img_ph_h1_b3_t4b.png new file mode 100644 index 0000000..0cffb61 Binary files /dev/null and b/gen/img/img_ph_h1_b3_t4b.png differ diff --git a/gen/img/img_ph_h2_b1_t1.png b/gen/img/img_ph_h2_b1_t1.png new file mode 100644 index 0000000..5223881 Binary files /dev/null and b/gen/img/img_ph_h2_b1_t1.png differ diff --git a/gen/img/img_ph_h2_b1_t2.png b/gen/img/img_ph_h2_b1_t2.png new file mode 100644 index 0000000..d0a139b Binary files /dev/null and b/gen/img/img_ph_h2_b1_t2.png differ diff --git a/gen/img/img_ph_h2_b1_t3.png b/gen/img/img_ph_h2_b1_t3.png new file mode 100644 index 0000000..ea9ba91 Binary files /dev/null and b/gen/img/img_ph_h2_b1_t3.png differ diff --git a/gen/img/img_ph_h2_b1_t4.png b/gen/img/img_ph_h2_b1_t4.png new file mode 100644 index 0000000..4756b57 Binary files /dev/null and b/gen/img/img_ph_h2_b1_t4.png differ diff --git a/gen/img/img_ph_h2_b1_t5.png b/gen/img/img_ph_h2_b1_t5.png new file mode 100644 index 0000000..70ef1df Binary files /dev/null and b/gen/img/img_ph_h2_b1_t5.png differ diff --git a/gen/img/img_ph_h2_b1_t6.png b/gen/img/img_ph_h2_b1_t6.png new file mode 100644 index 0000000..f6f4a1a Binary files /dev/null and b/gen/img/img_ph_h2_b1_t6.png differ diff --git a/gen/img/img_ph_h2_b1_t7.png b/gen/img/img_ph_h2_b1_t7.png new file mode 100644 index 0000000..d08bd36 Binary files /dev/null and b/gen/img/img_ph_h2_b1_t7.png differ diff --git a/gen/img/img_ph_h2_b2_t1.png b/gen/img/img_ph_h2_b2_t1.png new file mode 100644 index 0000000..dad435e Binary files /dev/null and b/gen/img/img_ph_h2_b2_t1.png differ diff --git a/gen/img/img_ph_h2_b2_t2.png b/gen/img/img_ph_h2_b2_t2.png new file mode 100644 index 0000000..41aaad9 Binary files /dev/null and b/gen/img/img_ph_h2_b2_t2.png differ diff --git a/gen/img/img_ph_h2_b2_t3.png b/gen/img/img_ph_h2_b2_t3.png new file mode 100644 index 0000000..20fb0c8 Binary files /dev/null and b/gen/img/img_ph_h2_b2_t3.png differ diff --git a/gen/img/img_ph_h2_b2_t4.png b/gen/img/img_ph_h2_b2_t4.png new file mode 100644 index 0000000..2fad7a9 Binary files /dev/null and b/gen/img/img_ph_h2_b2_t4.png differ diff --git a/gen/img/img_ph_h2_b2_t5.png b/gen/img/img_ph_h2_b2_t5.png new file mode 100644 index 0000000..d331c85 Binary files /dev/null and b/gen/img/img_ph_h2_b2_t5.png differ diff --git a/gen/img/img_ph_h2_b3_t1.png b/gen/img/img_ph_h2_b3_t1.png new file mode 100644 index 0000000..492cf0b Binary files /dev/null and b/gen/img/img_ph_h2_b3_t1.png differ diff --git a/gen/img/img_ph_h2_b3_t1b.png b/gen/img/img_ph_h2_b3_t1b.png new file mode 100644 index 0000000..a9d116f Binary files /dev/null and b/gen/img/img_ph_h2_b3_t1b.png differ diff --git a/gen/img/img_ph_h2_b3_t2.png b/gen/img/img_ph_h2_b3_t2.png new file mode 100644 index 0000000..0a0b91b Binary files /dev/null and b/gen/img/img_ph_h2_b3_t2.png differ diff --git a/gen/img/img_ph_h2_b3_t2b.png b/gen/img/img_ph_h2_b3_t2b.png new file mode 100644 index 0000000..34775fa Binary files /dev/null and b/gen/img/img_ph_h2_b3_t2b.png differ diff --git a/gen/img/img_ph_h2_b3_t3.png b/gen/img/img_ph_h2_b3_t3.png new file mode 100644 index 0000000..ff339b8 Binary files /dev/null and b/gen/img/img_ph_h2_b3_t3.png differ diff --git a/gen/img/img_ph_h2_b3_t3b.png b/gen/img/img_ph_h2_b3_t3b.png new file mode 100644 index 0000000..3ad54c6 Binary files /dev/null and b/gen/img/img_ph_h2_b3_t3b.png differ diff --git a/gen/img/img_ph_h2_b3_t4.png b/gen/img/img_ph_h2_b3_t4.png new file mode 100644 index 0000000..c5bdd5f Binary files /dev/null and b/gen/img/img_ph_h2_b3_t4.png differ diff --git a/gen/img/img_ph_h2_b3_t4b.png b/gen/img/img_ph_h2_b3_t4b.png new file mode 100644 index 0000000..8befcba Binary files /dev/null and b/gen/img/img_ph_h2_b3_t4b.png differ diff --git a/gen/img/img_ph_h3_b1_t1.png b/gen/img/img_ph_h3_b1_t1.png new file mode 100644 index 0000000..af80e24 Binary files /dev/null and b/gen/img/img_ph_h3_b1_t1.png differ diff --git a/gen/img/img_ph_h3_b1_t2.png b/gen/img/img_ph_h3_b1_t2.png new file mode 100644 index 0000000..227d404 Binary files /dev/null and b/gen/img/img_ph_h3_b1_t2.png differ diff --git a/gen/img/img_ph_h3_b1_t3.png b/gen/img/img_ph_h3_b1_t3.png new file mode 100644 index 0000000..5b1a01e Binary files /dev/null and b/gen/img/img_ph_h3_b1_t3.png differ diff --git a/gen/img/img_ph_h3_b1_t4.png b/gen/img/img_ph_h3_b1_t4.png new file mode 100644 index 0000000..5acc965 Binary files /dev/null and b/gen/img/img_ph_h3_b1_t4.png differ diff --git a/gen/img/img_ph_h3_b1_t5.png b/gen/img/img_ph_h3_b1_t5.png new file mode 100644 index 0000000..b854c0e Binary files /dev/null and b/gen/img/img_ph_h3_b1_t5.png differ diff --git a/gen/img/img_ph_h3_b1_t6.png b/gen/img/img_ph_h3_b1_t6.png new file mode 100644 index 0000000..14857b4 Binary files /dev/null and b/gen/img/img_ph_h3_b1_t6.png differ diff --git a/gen/img/img_ph_h3_b1_t7.png b/gen/img/img_ph_h3_b1_t7.png new file mode 100644 index 0000000..7582548 Binary files /dev/null and b/gen/img/img_ph_h3_b1_t7.png differ diff --git a/gen/img/img_ph_h3_b2_t1.png b/gen/img/img_ph_h3_b2_t1.png new file mode 100644 index 0000000..2f052fd Binary files /dev/null and b/gen/img/img_ph_h3_b2_t1.png differ diff --git a/gen/img/img_ph_h3_b2_t2.png b/gen/img/img_ph_h3_b2_t2.png new file mode 100644 index 0000000..b797c26 Binary files /dev/null and b/gen/img/img_ph_h3_b2_t2.png differ diff --git a/gen/img/img_ph_h3_b2_t3.png b/gen/img/img_ph_h3_b2_t3.png new file mode 100644 index 0000000..40bdb7d Binary files /dev/null and b/gen/img/img_ph_h3_b2_t3.png differ diff --git a/gen/img/img_ph_h3_b2_t4.png b/gen/img/img_ph_h3_b2_t4.png new file mode 100644 index 0000000..2d98fd1 Binary files /dev/null and b/gen/img/img_ph_h3_b2_t4.png differ diff --git a/gen/img/img_ph_h3_b2_t5.png b/gen/img/img_ph_h3_b2_t5.png new file mode 100644 index 0000000..1d0d8e5 Binary files /dev/null and b/gen/img/img_ph_h3_b2_t5.png differ diff --git a/gen/img/img_ph_h3_b3_t1.png b/gen/img/img_ph_h3_b3_t1.png new file mode 100644 index 0000000..20b2d74 Binary files /dev/null and b/gen/img/img_ph_h3_b3_t1.png differ diff --git a/gen/img/img_ph_h3_b3_t1b.png b/gen/img/img_ph_h3_b3_t1b.png new file mode 100644 index 0000000..e1ae397 Binary files /dev/null and b/gen/img/img_ph_h3_b3_t1b.png differ diff --git a/gen/img/img_ph_h3_b3_t2.png b/gen/img/img_ph_h3_b3_t2.png new file mode 100644 index 0000000..5fa02a0 Binary files /dev/null and b/gen/img/img_ph_h3_b3_t2.png differ diff --git a/gen/img/img_ph_h3_b3_t2b.png b/gen/img/img_ph_h3_b3_t2b.png new file mode 100644 index 0000000..6598fcf Binary files /dev/null and b/gen/img/img_ph_h3_b3_t2b.png differ diff --git a/gen/img/img_ph_h3_b3_t3.png b/gen/img/img_ph_h3_b3_t3.png new file mode 100644 index 0000000..a98027f Binary files /dev/null and b/gen/img/img_ph_h3_b3_t3.png differ diff --git a/gen/img/img_ph_h3_b3_t3b.png b/gen/img/img_ph_h3_b3_t3b.png new file mode 100644 index 0000000..578e702 Binary files /dev/null and b/gen/img/img_ph_h3_b3_t3b.png differ diff --git a/gen/img/img_ph_h3_b3_t4.png b/gen/img/img_ph_h3_b3_t4.png new file mode 100644 index 0000000..fc1fc01 Binary files /dev/null and b/gen/img/img_ph_h3_b3_t4.png differ diff --git a/gen/img/img_ph_h3_b3_t4b.png b/gen/img/img_ph_h3_b3_t4b.png new file mode 100644 index 0000000..ab94a90 Binary files /dev/null and b/gen/img/img_ph_h3_b3_t4b.png differ diff --git a/gen/img/img_ph_h4_b1_t1.png b/gen/img/img_ph_h4_b1_t1.png new file mode 100644 index 0000000..e5daddc Binary files /dev/null and b/gen/img/img_ph_h4_b1_t1.png differ diff --git a/gen/img/img_ph_h4_b1_t2.png b/gen/img/img_ph_h4_b1_t2.png new file mode 100644 index 0000000..9885a71 Binary files /dev/null and b/gen/img/img_ph_h4_b1_t2.png differ diff --git a/gen/img/img_ph_h4_b1_t3.png b/gen/img/img_ph_h4_b1_t3.png new file mode 100644 index 0000000..919e4b1 Binary files /dev/null and b/gen/img/img_ph_h4_b1_t3.png differ diff --git a/gen/img/img_ph_h4_b1_t4.png b/gen/img/img_ph_h4_b1_t4.png new file mode 100644 index 0000000..67d48f2 Binary files /dev/null and b/gen/img/img_ph_h4_b1_t4.png differ diff --git a/gen/img/img_ph_h4_b1_t5.png b/gen/img/img_ph_h4_b1_t5.png new file mode 100644 index 0000000..974f349 Binary files /dev/null and b/gen/img/img_ph_h4_b1_t5.png differ diff --git a/gen/img/img_ph_h4_b1_t6.png b/gen/img/img_ph_h4_b1_t6.png new file mode 100644 index 0000000..d24d83b Binary files /dev/null and b/gen/img/img_ph_h4_b1_t6.png differ diff --git a/gen/img/img_ph_h4_b1_t7.png b/gen/img/img_ph_h4_b1_t7.png new file mode 100644 index 0000000..37ad0f5 Binary files /dev/null and b/gen/img/img_ph_h4_b1_t7.png differ diff --git a/gen/img/img_ph_h4_b2_t1.png b/gen/img/img_ph_h4_b2_t1.png new file mode 100644 index 0000000..ccd626d Binary files /dev/null and b/gen/img/img_ph_h4_b2_t1.png differ diff --git a/gen/img/img_ph_h4_b2_t2.png b/gen/img/img_ph_h4_b2_t2.png new file mode 100644 index 0000000..4f72685 Binary files /dev/null and b/gen/img/img_ph_h4_b2_t2.png differ diff --git a/gen/img/img_ph_h4_b2_t3.png b/gen/img/img_ph_h4_b2_t3.png new file mode 100644 index 0000000..7e5578b Binary files /dev/null and b/gen/img/img_ph_h4_b2_t3.png differ diff --git a/gen/img/img_ph_h4_b2_t4.png b/gen/img/img_ph_h4_b2_t4.png new file mode 100644 index 0000000..bad8a5e Binary files /dev/null and b/gen/img/img_ph_h4_b2_t4.png differ diff --git a/gen/img/img_ph_h4_b2_t5.png b/gen/img/img_ph_h4_b2_t5.png new file mode 100644 index 0000000..76ead3b Binary files /dev/null and b/gen/img/img_ph_h4_b2_t5.png differ diff --git a/gen/img/img_ph_h4_b3_t1.png b/gen/img/img_ph_h4_b3_t1.png new file mode 100644 index 0000000..615597c Binary files /dev/null and b/gen/img/img_ph_h4_b3_t1.png differ diff --git a/gen/img/img_ph_h4_b3_t1b.png b/gen/img/img_ph_h4_b3_t1b.png new file mode 100644 index 0000000..fd5ba94 Binary files /dev/null and b/gen/img/img_ph_h4_b3_t1b.png differ diff --git a/gen/img/img_ph_h4_b3_t2.png b/gen/img/img_ph_h4_b3_t2.png new file mode 100644 index 0000000..fcde574 Binary files /dev/null and b/gen/img/img_ph_h4_b3_t2.png differ diff --git a/gen/img/img_ph_h4_b3_t2b.png b/gen/img/img_ph_h4_b3_t2b.png new file mode 100644 index 0000000..4fa26d8 Binary files /dev/null and b/gen/img/img_ph_h4_b3_t2b.png differ diff --git a/gen/img/img_ph_h4_b3_t3.png b/gen/img/img_ph_h4_b3_t3.png new file mode 100644 index 0000000..fd5a876 Binary files /dev/null and b/gen/img/img_ph_h4_b3_t3.png differ diff --git a/gen/img/img_ph_h4_b3_t3b.png b/gen/img/img_ph_h4_b3_t3b.png new file mode 100644 index 0000000..75bd8be Binary files /dev/null and b/gen/img/img_ph_h4_b3_t3b.png differ diff --git a/gen/img/img_ph_h4_b3_t4.png b/gen/img/img_ph_h4_b3_t4.png new file mode 100644 index 0000000..daa64e5 Binary files /dev/null and b/gen/img/img_ph_h4_b3_t4.png differ diff --git a/gen/img/img_ph_h4_b3_t4b.png b/gen/img/img_ph_h4_b3_t4b.png new file mode 100644 index 0000000..ba3b43c Binary files /dev/null and b/gen/img/img_ph_h4_b3_t4b.png differ diff --git a/gen/img/img_pl_l1_b1_t1.png b/gen/img/img_pl_l1_b1_t1.png new file mode 100644 index 0000000..299b107 Binary files /dev/null and b/gen/img/img_pl_l1_b1_t1.png differ diff --git a/gen/img/img_pl_l1_b1_t2.png b/gen/img/img_pl_l1_b1_t2.png new file mode 100644 index 0000000..c6e2298 Binary files /dev/null and b/gen/img/img_pl_l1_b1_t2.png differ diff --git a/gen/img/img_pl_l1_b1_t3.png b/gen/img/img_pl_l1_b1_t3.png new file mode 100644 index 0000000..ee146e7 Binary files /dev/null and b/gen/img/img_pl_l1_b1_t3.png differ diff --git a/gen/img/img_pl_l1_b1_t4.png b/gen/img/img_pl_l1_b1_t4.png new file mode 100644 index 0000000..77a3636 Binary files /dev/null and b/gen/img/img_pl_l1_b1_t4.png differ diff --git a/gen/img/img_pl_l1_b1_t5.png b/gen/img/img_pl_l1_b1_t5.png new file mode 100644 index 0000000..e44612f Binary files /dev/null and b/gen/img/img_pl_l1_b1_t5.png differ diff --git a/gen/img/img_pl_l1_b1_t6.png b/gen/img/img_pl_l1_b1_t6.png new file mode 100644 index 0000000..059c164 Binary files /dev/null and b/gen/img/img_pl_l1_b1_t6.png differ diff --git a/gen/img/img_pl_l1_b1_t7.png b/gen/img/img_pl_l1_b1_t7.png new file mode 100644 index 0000000..b046a6b Binary files /dev/null and b/gen/img/img_pl_l1_b1_t7.png differ diff --git a/gen/img/img_pl_l1_b2_t1.png b/gen/img/img_pl_l1_b2_t1.png new file mode 100644 index 0000000..e901fb5 Binary files /dev/null and b/gen/img/img_pl_l1_b2_t1.png differ diff --git a/gen/img/img_pl_l1_b2_t2.png b/gen/img/img_pl_l1_b2_t2.png new file mode 100644 index 0000000..142c1ef Binary files /dev/null and b/gen/img/img_pl_l1_b2_t2.png differ diff --git a/gen/img/img_pl_l1_b2_t3.png b/gen/img/img_pl_l1_b2_t3.png new file mode 100644 index 0000000..1ae4067 Binary files /dev/null and b/gen/img/img_pl_l1_b2_t3.png differ diff --git a/gen/img/img_pl_l1_b2_t4.png b/gen/img/img_pl_l1_b2_t4.png new file mode 100644 index 0000000..34eafa3 Binary files /dev/null and b/gen/img/img_pl_l1_b2_t4.png differ diff --git a/gen/img/img_pl_l1_b2_t5.png b/gen/img/img_pl_l1_b2_t5.png new file mode 100644 index 0000000..2f7a8d0 Binary files /dev/null and b/gen/img/img_pl_l1_b2_t5.png differ diff --git a/gen/img/img_pl_l1_b3_t1.png b/gen/img/img_pl_l1_b3_t1.png new file mode 100644 index 0000000..1972c1e Binary files /dev/null and b/gen/img/img_pl_l1_b3_t1.png differ diff --git a/gen/img/img_pl_l1_b3_t1b.png b/gen/img/img_pl_l1_b3_t1b.png new file mode 100644 index 0000000..56f097b Binary files /dev/null and b/gen/img/img_pl_l1_b3_t1b.png differ diff --git a/gen/img/img_pl_l1_b3_t2.png b/gen/img/img_pl_l1_b3_t2.png new file mode 100644 index 0000000..9836c02 Binary files /dev/null and b/gen/img/img_pl_l1_b3_t2.png differ diff --git a/gen/img/img_pl_l1_b3_t2b.png b/gen/img/img_pl_l1_b3_t2b.png new file mode 100644 index 0000000..2a14b98 Binary files /dev/null and b/gen/img/img_pl_l1_b3_t2b.png differ diff --git a/gen/img/img_pl_l1_b3_t3.png b/gen/img/img_pl_l1_b3_t3.png new file mode 100644 index 0000000..b644978 Binary files /dev/null and b/gen/img/img_pl_l1_b3_t3.png differ diff --git a/gen/img/img_pl_l1_b3_t3b.png b/gen/img/img_pl_l1_b3_t3b.png new file mode 100644 index 0000000..3646c59 Binary files /dev/null and b/gen/img/img_pl_l1_b3_t3b.png differ diff --git a/gen/img/img_pl_l1_b3_t4.png b/gen/img/img_pl_l1_b3_t4.png new file mode 100644 index 0000000..63e3b6a Binary files /dev/null and b/gen/img/img_pl_l1_b3_t4.png differ diff --git a/gen/img/img_pl_l1_b3_t4b.png b/gen/img/img_pl_l1_b3_t4b.png new file mode 100644 index 0000000..dbd74f7 Binary files /dev/null and b/gen/img/img_pl_l1_b3_t4b.png differ diff --git a/gen/img/img_pl_l2_b1_t1.png b/gen/img/img_pl_l2_b1_t1.png new file mode 100644 index 0000000..831c2bf Binary files /dev/null and b/gen/img/img_pl_l2_b1_t1.png differ diff --git a/gen/img/img_pl_l2_b1_t2.png b/gen/img/img_pl_l2_b1_t2.png new file mode 100644 index 0000000..6da08bc Binary files /dev/null and b/gen/img/img_pl_l2_b1_t2.png differ diff --git a/gen/img/img_pl_l2_b1_t3.png b/gen/img/img_pl_l2_b1_t3.png new file mode 100644 index 0000000..c67324d Binary files /dev/null and b/gen/img/img_pl_l2_b1_t3.png differ diff --git a/gen/img/img_pl_l2_b1_t4.png b/gen/img/img_pl_l2_b1_t4.png new file mode 100644 index 0000000..537ae5e Binary files /dev/null and b/gen/img/img_pl_l2_b1_t4.png differ diff --git a/gen/img/img_pl_l2_b1_t5.png b/gen/img/img_pl_l2_b1_t5.png new file mode 100644 index 0000000..2545ad1 Binary files /dev/null and b/gen/img/img_pl_l2_b1_t5.png differ diff --git a/gen/img/img_pl_l2_b1_t6.png b/gen/img/img_pl_l2_b1_t6.png new file mode 100644 index 0000000..0954019 Binary files /dev/null and b/gen/img/img_pl_l2_b1_t6.png differ diff --git a/gen/img/img_pl_l2_b1_t7.png b/gen/img/img_pl_l2_b1_t7.png new file mode 100644 index 0000000..8677344 Binary files /dev/null and b/gen/img/img_pl_l2_b1_t7.png differ diff --git a/gen/img/img_pl_l2_b2_t1.png b/gen/img/img_pl_l2_b2_t1.png new file mode 100644 index 0000000..caa62f8 Binary files /dev/null and b/gen/img/img_pl_l2_b2_t1.png differ diff --git a/gen/img/img_pl_l2_b2_t2.png b/gen/img/img_pl_l2_b2_t2.png new file mode 100644 index 0000000..205396f Binary files /dev/null and b/gen/img/img_pl_l2_b2_t2.png differ diff --git a/gen/img/img_pl_l2_b2_t3.png b/gen/img/img_pl_l2_b2_t3.png new file mode 100644 index 0000000..44ab894 Binary files /dev/null and b/gen/img/img_pl_l2_b2_t3.png differ diff --git a/gen/img/img_pl_l2_b2_t4.png b/gen/img/img_pl_l2_b2_t4.png new file mode 100644 index 0000000..ae458fd Binary files /dev/null and b/gen/img/img_pl_l2_b2_t4.png differ diff --git a/gen/img/img_pl_l2_b2_t5.png b/gen/img/img_pl_l2_b2_t5.png new file mode 100644 index 0000000..9d27286 Binary files /dev/null and b/gen/img/img_pl_l2_b2_t5.png differ diff --git a/gen/img/img_pl_l2_b3_t1.png b/gen/img/img_pl_l2_b3_t1.png new file mode 100644 index 0000000..869e8e6 Binary files /dev/null and b/gen/img/img_pl_l2_b3_t1.png differ diff --git a/gen/img/img_pl_l2_b3_t1b.png b/gen/img/img_pl_l2_b3_t1b.png new file mode 100644 index 0000000..e7ff7ce Binary files /dev/null and b/gen/img/img_pl_l2_b3_t1b.png differ diff --git a/gen/img/img_pl_l2_b3_t2.png b/gen/img/img_pl_l2_b3_t2.png new file mode 100644 index 0000000..09577e8 Binary files /dev/null and b/gen/img/img_pl_l2_b3_t2.png differ diff --git a/gen/img/img_pl_l2_b3_t2b.png b/gen/img/img_pl_l2_b3_t2b.png new file mode 100644 index 0000000..985a5c2 Binary files /dev/null and b/gen/img/img_pl_l2_b3_t2b.png differ diff --git a/gen/img/img_pl_l2_b3_t3.png b/gen/img/img_pl_l2_b3_t3.png new file mode 100644 index 0000000..4898aeb Binary files /dev/null and b/gen/img/img_pl_l2_b3_t3.png differ diff --git a/gen/img/img_pl_l2_b3_t3b.png b/gen/img/img_pl_l2_b3_t3b.png new file mode 100644 index 0000000..5d3e4f3 Binary files /dev/null and b/gen/img/img_pl_l2_b3_t3b.png differ diff --git a/gen/img/img_pl_l2_b3_t4.png b/gen/img/img_pl_l2_b3_t4.png new file mode 100644 index 0000000..043bdd0 Binary files /dev/null and b/gen/img/img_pl_l2_b3_t4.png differ diff --git a/gen/img/img_pl_l2_b3_t4b.png b/gen/img/img_pl_l2_b3_t4b.png new file mode 100644 index 0000000..e00b508 Binary files /dev/null and b/gen/img/img_pl_l2_b3_t4b.png differ diff --git a/gen/img/img_pl_l3_b1_t1.png b/gen/img/img_pl_l3_b1_t1.png new file mode 100644 index 0000000..35623d2 Binary files /dev/null and b/gen/img/img_pl_l3_b1_t1.png differ diff --git a/gen/img/img_pl_l3_b1_t2.png b/gen/img/img_pl_l3_b1_t2.png new file mode 100644 index 0000000..a2f41d2 Binary files /dev/null and b/gen/img/img_pl_l3_b1_t2.png differ diff --git a/gen/img/img_pl_l3_b1_t3.png b/gen/img/img_pl_l3_b1_t3.png new file mode 100644 index 0000000..be7ac19 Binary files /dev/null and b/gen/img/img_pl_l3_b1_t3.png differ diff --git a/gen/img/img_pl_l3_b1_t4.png b/gen/img/img_pl_l3_b1_t4.png new file mode 100644 index 0000000..7ebd54f Binary files /dev/null and b/gen/img/img_pl_l3_b1_t4.png differ diff --git a/gen/img/img_pl_l3_b1_t5.png b/gen/img/img_pl_l3_b1_t5.png new file mode 100644 index 0000000..557f77e Binary files /dev/null and b/gen/img/img_pl_l3_b1_t5.png differ diff --git a/gen/img/img_pl_l3_b1_t6.png b/gen/img/img_pl_l3_b1_t6.png new file mode 100644 index 0000000..d94890f Binary files /dev/null and b/gen/img/img_pl_l3_b1_t6.png differ diff --git a/gen/img/img_pl_l3_b1_t7.png b/gen/img/img_pl_l3_b1_t7.png new file mode 100644 index 0000000..9a4a6d3 Binary files /dev/null and b/gen/img/img_pl_l3_b1_t7.png differ diff --git a/gen/img/img_pl_l3_b2_t1.png b/gen/img/img_pl_l3_b2_t1.png new file mode 100644 index 0000000..f2233b7 Binary files /dev/null and b/gen/img/img_pl_l3_b2_t1.png differ diff --git a/gen/img/img_pl_l3_b2_t2.png b/gen/img/img_pl_l3_b2_t2.png new file mode 100644 index 0000000..f89369f Binary files /dev/null and b/gen/img/img_pl_l3_b2_t2.png differ diff --git a/gen/img/img_pl_l3_b2_t3.png b/gen/img/img_pl_l3_b2_t3.png new file mode 100644 index 0000000..a548155 Binary files /dev/null and b/gen/img/img_pl_l3_b2_t3.png differ diff --git a/gen/img/img_pl_l3_b2_t4.png b/gen/img/img_pl_l3_b2_t4.png new file mode 100644 index 0000000..28a5176 Binary files /dev/null and b/gen/img/img_pl_l3_b2_t4.png differ diff --git a/gen/img/img_pl_l3_b2_t5.png b/gen/img/img_pl_l3_b2_t5.png new file mode 100644 index 0000000..20d4c1d Binary files /dev/null and b/gen/img/img_pl_l3_b2_t5.png differ diff --git a/gen/img/img_pl_l3_b3_t1.png b/gen/img/img_pl_l3_b3_t1.png new file mode 100644 index 0000000..5180e50 Binary files /dev/null and b/gen/img/img_pl_l3_b3_t1.png differ diff --git a/gen/img/img_pl_l3_b3_t1b.png b/gen/img/img_pl_l3_b3_t1b.png new file mode 100644 index 0000000..22e6343 Binary files /dev/null and b/gen/img/img_pl_l3_b3_t1b.png differ diff --git a/gen/img/img_pl_l3_b3_t2.png b/gen/img/img_pl_l3_b3_t2.png new file mode 100644 index 0000000..bbb6c54 Binary files /dev/null and b/gen/img/img_pl_l3_b3_t2.png differ diff --git a/gen/img/img_pl_l3_b3_t2b.png b/gen/img/img_pl_l3_b3_t2b.png new file mode 100644 index 0000000..a50b237 Binary files /dev/null and b/gen/img/img_pl_l3_b3_t2b.png differ diff --git a/gen/img/img_pl_l3_b3_t3.png b/gen/img/img_pl_l3_b3_t3.png new file mode 100644 index 0000000..ef3f036 Binary files /dev/null and b/gen/img/img_pl_l3_b3_t3.png differ diff --git a/gen/img/img_pl_l3_b3_t3b.png b/gen/img/img_pl_l3_b3_t3b.png new file mode 100644 index 0000000..14418ea Binary files /dev/null and b/gen/img/img_pl_l3_b3_t3b.png differ diff --git a/gen/img/img_pl_l3_b3_t4.png b/gen/img/img_pl_l3_b3_t4.png new file mode 100644 index 0000000..58b1149 Binary files /dev/null and b/gen/img/img_pl_l3_b3_t4.png differ diff --git a/gen/img/img_pl_l3_b3_t4b.png b/gen/img/img_pl_l3_b3_t4b.png new file mode 100644 index 0000000..1852749 Binary files /dev/null and b/gen/img/img_pl_l3_b3_t4b.png differ diff --git a/gen/img/img_pl_l4_b1_t1.png b/gen/img/img_pl_l4_b1_t1.png new file mode 100644 index 0000000..16d6b31 Binary files /dev/null and b/gen/img/img_pl_l4_b1_t1.png differ diff --git a/gen/img/img_pl_l4_b1_t2.png b/gen/img/img_pl_l4_b1_t2.png new file mode 100644 index 0000000..9cda993 Binary files /dev/null and b/gen/img/img_pl_l4_b1_t2.png differ diff --git a/gen/img/img_pl_l4_b1_t3.png b/gen/img/img_pl_l4_b1_t3.png new file mode 100644 index 0000000..1360e8d Binary files /dev/null and b/gen/img/img_pl_l4_b1_t3.png differ diff --git a/gen/img/img_pl_l4_b1_t4.png b/gen/img/img_pl_l4_b1_t4.png new file mode 100644 index 0000000..20ad312 Binary files /dev/null and b/gen/img/img_pl_l4_b1_t4.png differ diff --git a/gen/img/img_pl_l4_b1_t5.png b/gen/img/img_pl_l4_b1_t5.png new file mode 100644 index 0000000..9af1827 Binary files /dev/null and b/gen/img/img_pl_l4_b1_t5.png differ diff --git a/gen/img/img_pl_l4_b1_t6.png b/gen/img/img_pl_l4_b1_t6.png new file mode 100644 index 0000000..8f63922 Binary files /dev/null and b/gen/img/img_pl_l4_b1_t6.png differ diff --git a/gen/img/img_pl_l4_b1_t7.png b/gen/img/img_pl_l4_b1_t7.png new file mode 100644 index 0000000..0f0bfd7 Binary files /dev/null and b/gen/img/img_pl_l4_b1_t7.png differ diff --git a/gen/img/img_pl_l4_b2_t1.png b/gen/img/img_pl_l4_b2_t1.png new file mode 100644 index 0000000..a2e11de Binary files /dev/null and b/gen/img/img_pl_l4_b2_t1.png differ diff --git a/gen/img/img_pl_l4_b2_t2.png b/gen/img/img_pl_l4_b2_t2.png new file mode 100644 index 0000000..2510f42 Binary files /dev/null and b/gen/img/img_pl_l4_b2_t2.png differ diff --git a/gen/img/img_pl_l4_b2_t3.png b/gen/img/img_pl_l4_b2_t3.png new file mode 100644 index 0000000..9729b19 Binary files /dev/null and b/gen/img/img_pl_l4_b2_t3.png differ diff --git a/gen/img/img_pl_l4_b2_t4.png b/gen/img/img_pl_l4_b2_t4.png new file mode 100644 index 0000000..f90cfee Binary files /dev/null and b/gen/img/img_pl_l4_b2_t4.png differ diff --git a/gen/img/img_pl_l4_b2_t5.png b/gen/img/img_pl_l4_b2_t5.png new file mode 100644 index 0000000..fda539a Binary files /dev/null and b/gen/img/img_pl_l4_b2_t5.png differ diff --git a/gen/img/img_pl_l4_b3_t1.png b/gen/img/img_pl_l4_b3_t1.png new file mode 100644 index 0000000..027fc33 Binary files /dev/null and b/gen/img/img_pl_l4_b3_t1.png differ diff --git a/gen/img/img_pl_l4_b3_t1b.png b/gen/img/img_pl_l4_b3_t1b.png new file mode 100644 index 0000000..f05331a Binary files /dev/null and b/gen/img/img_pl_l4_b3_t1b.png differ diff --git a/gen/img/img_pl_l4_b3_t2.png b/gen/img/img_pl_l4_b3_t2.png new file mode 100644 index 0000000..e15000e Binary files /dev/null and b/gen/img/img_pl_l4_b3_t2.png differ diff --git a/gen/img/img_pl_l4_b3_t2b.png b/gen/img/img_pl_l4_b3_t2b.png new file mode 100644 index 0000000..6b2c452 Binary files /dev/null and b/gen/img/img_pl_l4_b3_t2b.png differ diff --git a/gen/img/img_pl_l4_b3_t3.png b/gen/img/img_pl_l4_b3_t3.png new file mode 100644 index 0000000..4b17c6a Binary files /dev/null and b/gen/img/img_pl_l4_b3_t3.png differ diff --git a/gen/img/img_pl_l4_b3_t3b.png b/gen/img/img_pl_l4_b3_t3b.png new file mode 100644 index 0000000..e5f882e Binary files /dev/null and b/gen/img/img_pl_l4_b3_t3b.png differ diff --git a/gen/img/img_pl_l4_b3_t4.png b/gen/img/img_pl_l4_b3_t4.png new file mode 100644 index 0000000..ba7064d Binary files /dev/null and b/gen/img/img_pl_l4_b3_t4.png differ diff --git a/gen/img/img_pl_l4_b3_t4b.png b/gen/img/img_pl_l4_b3_t4b.png new file mode 100644 index 0000000..58ccbf4 Binary files /dev/null and b/gen/img/img_pl_l4_b3_t4b.png differ diff --git a/gen/img/img_pl_l5_b1_t1.png b/gen/img/img_pl_l5_b1_t1.png new file mode 100644 index 0000000..dbb5761 Binary files /dev/null and b/gen/img/img_pl_l5_b1_t1.png differ diff --git a/gen/img/img_pl_l5_b1_t2.png b/gen/img/img_pl_l5_b1_t2.png new file mode 100644 index 0000000..defb41d Binary files /dev/null and b/gen/img/img_pl_l5_b1_t2.png differ diff --git a/gen/img/img_pl_l5_b1_t3.png b/gen/img/img_pl_l5_b1_t3.png new file mode 100644 index 0000000..be3f5f0 Binary files /dev/null and b/gen/img/img_pl_l5_b1_t3.png differ diff --git a/gen/img/img_pl_l5_b1_t4.png b/gen/img/img_pl_l5_b1_t4.png new file mode 100644 index 0000000..5cb443c Binary files /dev/null and b/gen/img/img_pl_l5_b1_t4.png differ diff --git a/gen/img/img_pl_l5_b1_t5.png b/gen/img/img_pl_l5_b1_t5.png new file mode 100644 index 0000000..ab46783 Binary files /dev/null and b/gen/img/img_pl_l5_b1_t5.png differ diff --git a/gen/img/img_pl_l5_b1_t6.png b/gen/img/img_pl_l5_b1_t6.png new file mode 100644 index 0000000..3f6816c Binary files /dev/null and b/gen/img/img_pl_l5_b1_t6.png differ diff --git a/gen/img/img_pl_l5_b1_t7.png b/gen/img/img_pl_l5_b1_t7.png new file mode 100644 index 0000000..af61b62 Binary files /dev/null and b/gen/img/img_pl_l5_b1_t7.png differ diff --git a/gen/img/img_pl_l5_b2_t1.png b/gen/img/img_pl_l5_b2_t1.png new file mode 100644 index 0000000..5844b73 Binary files /dev/null and b/gen/img/img_pl_l5_b2_t1.png differ diff --git a/gen/img/img_pl_l5_b2_t2.png b/gen/img/img_pl_l5_b2_t2.png new file mode 100644 index 0000000..f1093a0 Binary files /dev/null and b/gen/img/img_pl_l5_b2_t2.png differ diff --git a/gen/img/img_pl_l5_b2_t3.png b/gen/img/img_pl_l5_b2_t3.png new file mode 100644 index 0000000..4bef468 Binary files /dev/null and b/gen/img/img_pl_l5_b2_t3.png differ diff --git a/gen/img/img_pl_l5_b2_t4.png b/gen/img/img_pl_l5_b2_t4.png new file mode 100644 index 0000000..e70f1b3 Binary files /dev/null and b/gen/img/img_pl_l5_b2_t4.png differ diff --git a/gen/img/img_pl_l5_b2_t5.png b/gen/img/img_pl_l5_b2_t5.png new file mode 100644 index 0000000..a7b9245 Binary files /dev/null and b/gen/img/img_pl_l5_b2_t5.png differ diff --git a/gen/img/img_pl_l5_b3_t1.png b/gen/img/img_pl_l5_b3_t1.png new file mode 100644 index 0000000..1010956 Binary files /dev/null and b/gen/img/img_pl_l5_b3_t1.png differ diff --git a/gen/img/img_pl_l5_b3_t1b.png b/gen/img/img_pl_l5_b3_t1b.png new file mode 100644 index 0000000..090acf2 Binary files /dev/null and b/gen/img/img_pl_l5_b3_t1b.png differ diff --git a/gen/img/img_pl_l5_b3_t2.png b/gen/img/img_pl_l5_b3_t2.png new file mode 100644 index 0000000..0c32e4e Binary files /dev/null and b/gen/img/img_pl_l5_b3_t2.png differ diff --git a/gen/img/img_pl_l5_b3_t2b.png b/gen/img/img_pl_l5_b3_t2b.png new file mode 100644 index 0000000..1956f10 Binary files /dev/null and b/gen/img/img_pl_l5_b3_t2b.png differ diff --git a/gen/img/img_pl_l5_b3_t3.png b/gen/img/img_pl_l5_b3_t3.png new file mode 100644 index 0000000..3779ebb Binary files /dev/null and b/gen/img/img_pl_l5_b3_t3.png differ diff --git a/gen/img/img_pl_l5_b3_t3b.png b/gen/img/img_pl_l5_b3_t3b.png new file mode 100644 index 0000000..9776365 Binary files /dev/null and b/gen/img/img_pl_l5_b3_t3b.png differ diff --git a/gen/img/img_pl_l5_b3_t4.png b/gen/img/img_pl_l5_b3_t4.png new file mode 100644 index 0000000..0b40af9 Binary files /dev/null and b/gen/img/img_pl_l5_b3_t4.png differ diff --git a/gen/img/img_pl_l5_b3_t4b.png b/gen/img/img_pl_l5_b3_t4b.png new file mode 100644 index 0000000..2592269 Binary files /dev/null and b/gen/img/img_pl_l5_b3_t4b.png differ diff --git a/gen/img/img_pl_l6_b1_t1.png b/gen/img/img_pl_l6_b1_t1.png new file mode 100644 index 0000000..99e13e5 Binary files /dev/null and b/gen/img/img_pl_l6_b1_t1.png differ diff --git a/gen/img/img_pl_l6_b1_t2.png b/gen/img/img_pl_l6_b1_t2.png new file mode 100644 index 0000000..36be8ac Binary files /dev/null and b/gen/img/img_pl_l6_b1_t2.png differ diff --git a/gen/img/img_pl_l6_b1_t3.png b/gen/img/img_pl_l6_b1_t3.png new file mode 100644 index 0000000..7318299 Binary files /dev/null and b/gen/img/img_pl_l6_b1_t3.png differ diff --git a/gen/img/img_pl_l6_b1_t4.png b/gen/img/img_pl_l6_b1_t4.png new file mode 100644 index 0000000..602e605 Binary files /dev/null and b/gen/img/img_pl_l6_b1_t4.png differ diff --git a/gen/img/img_pl_l6_b1_t5.png b/gen/img/img_pl_l6_b1_t5.png new file mode 100644 index 0000000..34ccdfc Binary files /dev/null and b/gen/img/img_pl_l6_b1_t5.png differ diff --git a/gen/img/img_pl_l6_b1_t6.png b/gen/img/img_pl_l6_b1_t6.png new file mode 100644 index 0000000..38ee2fe Binary files /dev/null and b/gen/img/img_pl_l6_b1_t6.png differ diff --git a/gen/img/img_pl_l6_b1_t7.png b/gen/img/img_pl_l6_b1_t7.png new file mode 100644 index 0000000..433e3e9 Binary files /dev/null and b/gen/img/img_pl_l6_b1_t7.png differ diff --git a/gen/img/img_pl_l6_b2_t1.png b/gen/img/img_pl_l6_b2_t1.png new file mode 100644 index 0000000..6bd9ae0 Binary files /dev/null and b/gen/img/img_pl_l6_b2_t1.png differ diff --git a/gen/img/img_pl_l6_b2_t2.png b/gen/img/img_pl_l6_b2_t2.png new file mode 100644 index 0000000..211b2bc Binary files /dev/null and b/gen/img/img_pl_l6_b2_t2.png differ diff --git a/gen/img/img_pl_l6_b2_t3.png b/gen/img/img_pl_l6_b2_t3.png new file mode 100644 index 0000000..77f3799 Binary files /dev/null and b/gen/img/img_pl_l6_b2_t3.png differ diff --git a/gen/img/img_pl_l6_b2_t4.png b/gen/img/img_pl_l6_b2_t4.png new file mode 100644 index 0000000..fc001f3 Binary files /dev/null and b/gen/img/img_pl_l6_b2_t4.png differ diff --git a/gen/img/img_pl_l6_b2_t5.png b/gen/img/img_pl_l6_b2_t5.png new file mode 100644 index 0000000..648f4fd Binary files /dev/null and b/gen/img/img_pl_l6_b2_t5.png differ diff --git a/gen/img/img_pl_l6_b3_t1.png b/gen/img/img_pl_l6_b3_t1.png new file mode 100644 index 0000000..25296c9 Binary files /dev/null and b/gen/img/img_pl_l6_b3_t1.png differ diff --git a/gen/img/img_pl_l6_b3_t1b.png b/gen/img/img_pl_l6_b3_t1b.png new file mode 100644 index 0000000..c05e28e Binary files /dev/null and b/gen/img/img_pl_l6_b3_t1b.png differ diff --git a/gen/img/img_pl_l6_b3_t2.png b/gen/img/img_pl_l6_b3_t2.png new file mode 100644 index 0000000..9c7e8a8 Binary files /dev/null and b/gen/img/img_pl_l6_b3_t2.png differ diff --git a/gen/img/img_pl_l6_b3_t2b.png b/gen/img/img_pl_l6_b3_t2b.png new file mode 100644 index 0000000..7913096 Binary files /dev/null and b/gen/img/img_pl_l6_b3_t2b.png differ diff --git a/gen/img/img_pl_l6_b3_t3.png b/gen/img/img_pl_l6_b3_t3.png new file mode 100644 index 0000000..3925bfc Binary files /dev/null and b/gen/img/img_pl_l6_b3_t3.png differ diff --git a/gen/img/img_pl_l6_b3_t3b.png b/gen/img/img_pl_l6_b3_t3b.png new file mode 100644 index 0000000..56d1b77 Binary files /dev/null and b/gen/img/img_pl_l6_b3_t3b.png differ diff --git a/gen/img/img_pl_l6_b3_t4.png b/gen/img/img_pl_l6_b3_t4.png new file mode 100644 index 0000000..7b55802 Binary files /dev/null and b/gen/img/img_pl_l6_b3_t4.png differ diff --git a/gen/img/img_pl_l6_b3_t4b.png b/gen/img/img_pl_l6_b3_t4b.png new file mode 100644 index 0000000..d260692 Binary files /dev/null and b/gen/img/img_pl_l6_b3_t4b.png differ diff --git a/gen/img/img_pl_l7_b1_t1.png b/gen/img/img_pl_l7_b1_t1.png new file mode 100644 index 0000000..bea3833 Binary files /dev/null and b/gen/img/img_pl_l7_b1_t1.png differ diff --git a/gen/img/img_pl_l7_b1_t2.png b/gen/img/img_pl_l7_b1_t2.png new file mode 100644 index 0000000..0fafa21 Binary files /dev/null and b/gen/img/img_pl_l7_b1_t2.png differ diff --git a/gen/img/img_pl_l7_b1_t3.png b/gen/img/img_pl_l7_b1_t3.png new file mode 100644 index 0000000..0352075 Binary files /dev/null and b/gen/img/img_pl_l7_b1_t3.png differ diff --git a/gen/img/img_pl_l7_b1_t4.png b/gen/img/img_pl_l7_b1_t4.png new file mode 100644 index 0000000..c9ac6d9 Binary files /dev/null and b/gen/img/img_pl_l7_b1_t4.png differ diff --git a/gen/img/img_pl_l7_b1_t5.png b/gen/img/img_pl_l7_b1_t5.png new file mode 100644 index 0000000..1e91ab4 Binary files /dev/null and b/gen/img/img_pl_l7_b1_t5.png differ diff --git a/gen/img/img_pl_l7_b1_t6.png b/gen/img/img_pl_l7_b1_t6.png new file mode 100644 index 0000000..7ab627d Binary files /dev/null and b/gen/img/img_pl_l7_b1_t6.png differ diff --git a/gen/img/img_pl_l7_b1_t7.png b/gen/img/img_pl_l7_b1_t7.png new file mode 100644 index 0000000..8ed58c2 Binary files /dev/null and b/gen/img/img_pl_l7_b1_t7.png differ diff --git a/gen/img/img_pl_l7_b2_t1.png b/gen/img/img_pl_l7_b2_t1.png new file mode 100644 index 0000000..7b8800b Binary files /dev/null and b/gen/img/img_pl_l7_b2_t1.png differ diff --git a/gen/img/img_pl_l7_b2_t2.png b/gen/img/img_pl_l7_b2_t2.png new file mode 100644 index 0000000..6f4fa06 Binary files /dev/null and b/gen/img/img_pl_l7_b2_t2.png differ diff --git a/gen/img/img_pl_l7_b2_t3.png b/gen/img/img_pl_l7_b2_t3.png new file mode 100644 index 0000000..054f695 Binary files /dev/null and b/gen/img/img_pl_l7_b2_t3.png differ diff --git a/gen/img/img_pl_l7_b2_t4.png b/gen/img/img_pl_l7_b2_t4.png new file mode 100644 index 0000000..383c91c Binary files /dev/null and b/gen/img/img_pl_l7_b2_t4.png differ diff --git a/gen/img/img_pl_l7_b2_t5.png b/gen/img/img_pl_l7_b2_t5.png new file mode 100644 index 0000000..437898b Binary files /dev/null and b/gen/img/img_pl_l7_b2_t5.png differ diff --git a/gen/img/img_pl_l7_b3_t1.png b/gen/img/img_pl_l7_b3_t1.png new file mode 100644 index 0000000..a42e6e4 Binary files /dev/null and b/gen/img/img_pl_l7_b3_t1.png differ diff --git a/gen/img/img_pl_l7_b3_t1b.png b/gen/img/img_pl_l7_b3_t1b.png new file mode 100644 index 0000000..86998ab Binary files /dev/null and b/gen/img/img_pl_l7_b3_t1b.png differ diff --git a/gen/img/img_pl_l7_b3_t2.png b/gen/img/img_pl_l7_b3_t2.png new file mode 100644 index 0000000..cb5b7ae Binary files /dev/null and b/gen/img/img_pl_l7_b3_t2.png differ diff --git a/gen/img/img_pl_l7_b3_t2b.png b/gen/img/img_pl_l7_b3_t2b.png new file mode 100644 index 0000000..a6b39ac Binary files /dev/null and b/gen/img/img_pl_l7_b3_t2b.png differ diff --git a/gen/img/img_pl_l7_b3_t3.png b/gen/img/img_pl_l7_b3_t3.png new file mode 100644 index 0000000..412cd98 Binary files /dev/null and b/gen/img/img_pl_l7_b3_t3.png differ diff --git a/gen/img/img_pl_l7_b3_t3b.png b/gen/img/img_pl_l7_b3_t3b.png new file mode 100644 index 0000000..fb7953a Binary files /dev/null and b/gen/img/img_pl_l7_b3_t3b.png differ diff --git a/gen/img/img_pl_l7_b3_t4.png b/gen/img/img_pl_l7_b3_t4.png new file mode 100644 index 0000000..4a861bb Binary files /dev/null and b/gen/img/img_pl_l7_b3_t4.png differ diff --git a/gen/img/img_pl_l7_b3_t4b.png b/gen/img/img_pl_l7_b3_t4b.png new file mode 100644 index 0000000..37f5555 Binary files /dev/null and b/gen/img/img_pl_l7_b3_t4b.png differ diff --git a/gen/img/img_pl_l8_b1_t1.png b/gen/img/img_pl_l8_b1_t1.png new file mode 100644 index 0000000..326b835 Binary files /dev/null and b/gen/img/img_pl_l8_b1_t1.png differ diff --git a/gen/img/img_pl_l8_b1_t2.png b/gen/img/img_pl_l8_b1_t2.png new file mode 100644 index 0000000..0e9eda3 Binary files /dev/null and b/gen/img/img_pl_l8_b1_t2.png differ diff --git a/gen/img/img_pl_l8_b1_t3.png b/gen/img/img_pl_l8_b1_t3.png new file mode 100644 index 0000000..da947bd Binary files /dev/null and b/gen/img/img_pl_l8_b1_t3.png differ diff --git a/gen/img/img_pl_l8_b1_t4.png b/gen/img/img_pl_l8_b1_t4.png new file mode 100644 index 0000000..ae96e6d Binary files /dev/null and b/gen/img/img_pl_l8_b1_t4.png differ diff --git a/gen/img/img_pl_l8_b1_t5.png b/gen/img/img_pl_l8_b1_t5.png new file mode 100644 index 0000000..63a3c23 Binary files /dev/null and b/gen/img/img_pl_l8_b1_t5.png differ diff --git a/gen/img/img_pl_l8_b1_t6.png b/gen/img/img_pl_l8_b1_t6.png new file mode 100644 index 0000000..25e15cf Binary files /dev/null and b/gen/img/img_pl_l8_b1_t6.png differ diff --git a/gen/img/img_pl_l8_b1_t7.png b/gen/img/img_pl_l8_b1_t7.png new file mode 100644 index 0000000..b62e400 Binary files /dev/null and b/gen/img/img_pl_l8_b1_t7.png differ diff --git a/gen/img/img_pl_l8_b2_t1.png b/gen/img/img_pl_l8_b2_t1.png new file mode 100644 index 0000000..f961fc1 Binary files /dev/null and b/gen/img/img_pl_l8_b2_t1.png differ diff --git a/gen/img/img_pl_l8_b2_t2.png b/gen/img/img_pl_l8_b2_t2.png new file mode 100644 index 0000000..0bad79c Binary files /dev/null and b/gen/img/img_pl_l8_b2_t2.png differ diff --git a/gen/img/img_pl_l8_b2_t3.png b/gen/img/img_pl_l8_b2_t3.png new file mode 100644 index 0000000..ee4a9ec Binary files /dev/null and b/gen/img/img_pl_l8_b2_t3.png differ diff --git a/gen/img/img_pl_l8_b2_t4.png b/gen/img/img_pl_l8_b2_t4.png new file mode 100644 index 0000000..1dcffa6 Binary files /dev/null and b/gen/img/img_pl_l8_b2_t4.png differ diff --git a/gen/img/img_pl_l8_b2_t5.png b/gen/img/img_pl_l8_b2_t5.png new file mode 100644 index 0000000..b4014c1 Binary files /dev/null and b/gen/img/img_pl_l8_b2_t5.png differ diff --git a/gen/img/img_pl_l8_b3_t1.png b/gen/img/img_pl_l8_b3_t1.png new file mode 100644 index 0000000..1be2345 Binary files /dev/null and b/gen/img/img_pl_l8_b3_t1.png differ diff --git a/gen/img/img_pl_l8_b3_t1b.png b/gen/img/img_pl_l8_b3_t1b.png new file mode 100644 index 0000000..24aacab Binary files /dev/null and b/gen/img/img_pl_l8_b3_t1b.png differ diff --git a/gen/img/img_pl_l8_b3_t2.png b/gen/img/img_pl_l8_b3_t2.png new file mode 100644 index 0000000..3b5a987 Binary files /dev/null and b/gen/img/img_pl_l8_b3_t2.png differ diff --git a/gen/img/img_pl_l8_b3_t2b.png b/gen/img/img_pl_l8_b3_t2b.png new file mode 100644 index 0000000..9e1f99f Binary files /dev/null and b/gen/img/img_pl_l8_b3_t2b.png differ diff --git a/gen/img/img_pl_l8_b3_t3.png b/gen/img/img_pl_l8_b3_t3.png new file mode 100644 index 0000000..4c84ec5 Binary files /dev/null and b/gen/img/img_pl_l8_b3_t3.png differ diff --git a/gen/img/img_pl_l8_b3_t3b.png b/gen/img/img_pl_l8_b3_t3b.png new file mode 100644 index 0000000..0f0c93f Binary files /dev/null and b/gen/img/img_pl_l8_b3_t3b.png differ diff --git a/gen/img/img_pl_l8_b3_t4.png b/gen/img/img_pl_l8_b3_t4.png new file mode 100644 index 0000000..083d0ba Binary files /dev/null and b/gen/img/img_pl_l8_b3_t4.png differ diff --git a/gen/img/img_pl_l8_b3_t4b.png b/gen/img/img_pl_l8_b3_t4b.png new file mode 100644 index 0000000..2b68aaf Binary files /dev/null and b/gen/img/img_pl_l8_b3_t4b.png differ