diff options
author | Siddharth Bhat <siddu.druid@gmail.com> | 2017-09-28 15:10:22 +0000 |
---|---|---|
committer | Siddharth Bhat <siddu.druid@gmail.com> | 2017-09-28 15:10:22 +0000 |
commit | 99d3567b0d62893b7c3acc4d33293dc80325d0a8 (patch) | |
tree | 1c6580f271d8ea1b2ba062507316a9742808bf14 /polly/docs | |
parent | c965b30e540af1dacc850f857c52a63bb20ed20a (diff) | |
download | llvm-99d3567b0d62893b7c3acc4d33293dc80325d0a8.tar.gz |
[Docs] Add a performance document.
Summary:
Add a document which describes:
- GEMM performance comparison.
- An experiment that measures the compile time impact
of enabling Polly when compiling LLVM+Clang+Polly.
Contributed-by: Theodoros Theodoridis<theodoros.theodoridis@inf.ethz.ch>
Differential Revision: https://reviews.llvm.org/D38330
llvm-svn: 314419
Diffstat (limited to 'polly/docs')
-rw-r--r-- | polly/docs/Performance.rst | 57 | ||||
-rw-r--r-- | polly/docs/images/GEMM_double.png | 0 | ||||
-rw-r--r-- | polly/docs/index.rst | 1 |
3 files changed, 58 insertions, 0 deletions
diff --git a/polly/docs/Performance.rst b/polly/docs/Performance.rst new file mode 100644 index 000000000000..c8e6afb01023 --- /dev/null +++ b/polly/docs/Performance.rst @@ -0,0 +1,57 @@ +.. include:: <isonum.txt> +================================================== +Performance +================================================== + +High-Performance Generalized Matrix Multiplication +-------------------------------------------------- + +Polly automatically detects and optimizes generalized matrix multiplication, +the computation C |larr| α ⊗ C ⊕ β ⊗ A ⊗ B, where A, B, and C are three appropriately sized matrices, +⊕ and ⊗ operations are originating from the corresponding matrix semiring, and α and β are +constants, and beta is not equal to zero. It allows to obtain the highly optimized form structured +similar to the expert implementation of GEMM that can be found in GotoBLAS and its successors. The +performance evaluation of GEMM is shown in the following figure. + + + .. image:: images/GEMM_double.png + :align: center + + + +Compile Time Impact of Polly +---------------------------- + +Clang+LLVM+Polly are compiled using Clang on a Intel(R) Core(TM) i7-7700 based system. The experiment +is repeated twice: with and without Polly enabled in order to measure its compile time impact. + +The following versions are used: + + +- Polly (git hash 0db98a4837b6f233063307bb9184374175401922) +- Clang (git hash 3e1d04a92b51ed36163995c96c31a0e4bbb1561d) +- LLVM git hash 0265ec7ebad69a47f5c899d95295b5eb41aba68e) + +`ninja <https://ninja-build.org/>`_ is used as the build system. + +For both cases the whole compilation was performed five times. The compile times in seconds are shown in the following table. + ++----------------------------+ +| Compile Time | ++--------------+-------------+ +|Polly Disabled|Polly Enabled| ++==============+=============+ +|964 |977 | ++--------------+-------------+ +|964 |980 | ++--------------+-------------+ +|967 |981 | ++--------------+-------------+ +|967 |981 | ++--------------+-------------+ +|968 |982 | ++--------------+-------------+ + + +The median compile time without Polly enabled is 967 seconds and with Polly enabled it is 981 seconds. The overhead is 1.4%. + diff --git a/polly/docs/images/GEMM_double.png b/polly/docs/images/GEMM_double.png new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/polly/docs/images/GEMM_double.png diff --git a/polly/docs/index.rst b/polly/docs/index.rst index e1559c77858f..333c8eb0caa7 100644 --- a/polly/docs/index.rst +++ b/polly/docs/index.rst @@ -25,6 +25,7 @@ Using Polly UsingPollyWithClang HowToManuallyUseTheIndividualPiecesOfPolly TipsAndTricks + Performance * `A list of Polly passes <http://polly.llvm.org/documentation/passes.html>`_ |