[polly] r314419 - [Docs] Add a performance document.

Siddharth Bhat via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 28 08:10:22 PDT 2017


Author: bollu
Date: Thu Sep 28 08:10:22 2017
New Revision: 314419

URL: http://llvm.org/viewvc/llvm-project?rev=314419&view=rev
Log:
[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 at inf.ethz.ch>
Differential Revision: https://reviews.llvm.org/D38330

Added:
    polly/trunk/docs/Performance.rst
    polly/trunk/docs/images/GEMM_double.png
Modified:
    polly/trunk/docs/index.rst

Added: polly/trunk/docs/Performance.rst
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/docs/Performance.rst?rev=314419&view=auto
==============================================================================
--- polly/trunk/docs/Performance.rst (added)
+++ polly/trunk/docs/Performance.rst Thu Sep 28 08:10:22 2017
@@ -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%.
+

Added: polly/trunk/docs/images/GEMM_double.png
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/docs/images/GEMM_double.png?rev=314419&view=auto
==============================================================================
    (empty)

Modified: polly/trunk/docs/index.rst
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/docs/index.rst?rev=314419&r1=314418&r2=314419&view=diff
==============================================================================
--- polly/trunk/docs/index.rst (original)
+++ polly/trunk/docs/index.rst Thu Sep 28 08:10:22 2017
@@ -25,6 +25,7 @@ Using Polly
    UsingPollyWithClang
    HowToManuallyUseTheIndividualPiecesOfPolly
    TipsAndTricks
+   Performance
 
 * `A list of Polly passes <http://polly.llvm.org/documentation/passes.html>`_
 




More information about the llvm-commits mailing list