[polly] r240689 - Enable ISL's small integer optimization

Michael Kruse llvm at meinersbur.de
Thu Jun 25 13:47:35 PDT 2015


Author: meinersbur
Date: Thu Jun 25 15:47:35 2015
New Revision: 240689

URL: http://llvm.org/viewvc/llvm-project?rev=240689&view=rev
Log:
Enable ISL's small integer optimization

Summary:
With small integer optimization (short: sio) enabled, ISL uses 32 bit
integers for its arithmetic and only falls back to a big integer library
(in the case of Polly: IMath) if an operation's result is too large.
This gives a massive performance boost for most application using ISL.
For instance, experiments with ppcg (polyhedral source-to-source
compiler) show speed-ups of 5.8 (compared to plain IMath), respectively
2.7 (compared to GMP).

In Polly, a smaller fraction of the total compile time is taken by ISL,
but the speed-ups are still very significant. The buildbots measure
compilation speed-up up to 1.8 (oourafft, floyd-warshall, symm). All
Polybench benchmarks compile in at least 9% less time, and about 20%
less on average.

Detailed Polybench compile time results (median of 10):
correlation     -25.51%
covariance      -24.82%
2mm             -26.64%
3mm             -28.69%
atax            -13.70%
bicg            -10.78%
cholesky        -40.67%
doitgen         -11.60%
gemm            -11.54%
gemver          -10.63%
gesummv         -11.54%
mvt              -9.43%
symm            -41.25%
syr2k           -14.71%
syrk            -14.52%
trisolv         -17.65%
trmm             -9.78%
durbin          -19.32%
dynprog          -9.09%
gramschmidt     -15.38%
lu              -21.77%
floyd-warshall  -42.71%
reg_detect      -41.17%
adi             -36.69%
fdtd-2d         -32.61%
fdtd-apml       -21.90%
jacobi-1d-imper  -9.41%
jacobi-2d-imper -27.65%
seidel-2d       -31.00%

Reviewers: grosser

Reviewed By: grosser

Subscribers: Meinersbur, llvm-commits, pollydev

Projects: #polly

Differential Revision: http://reviews.llvm.org/D10506


Modified:
    polly/trunk/autoconf/configure.ac
    polly/trunk/configure
    polly/trunk/lib/CMakeLists.txt
    polly/trunk/lib/Makefile

Modified: polly/trunk/autoconf/configure.ac
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/autoconf/configure.ac?rev=240689&r1=240688&r2=240689&view=diff
==============================================================================
--- polly/trunk/autoconf/configure.ac (original)
+++ polly/trunk/autoconf/configure.ac Thu Jun 25 15:47:35 2015
@@ -100,7 +100,7 @@ AC_CONFIG_SUBDIRS(lib/External/isl)
 AC_CONFIG_COMMANDS_POST([
   dnl Configure ISL with small integer optimization, but do not add the
   dnl option to config.status as it is mandatory for Polly.
-  ac_configure_args="$ac_configure_args --with-int=imath"
+  ac_configure_args="$ac_configure_args --with-int=imath-32"
 ])
 
 dnl This must be last

Modified: polly/trunk/configure
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/configure?rev=240689&r1=240688&r2=240689&view=diff
==============================================================================
--- polly/trunk/configure (original)
+++ polly/trunk/configure Thu Jun 25 15:47:35 2015
@@ -3763,7 +3763,7 @@ test $ac_write_fail = 0 ||
   as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
 
 
-      ac_configure_args="$ac_configure_args --with-int=imath"
+      ac_configure_args="$ac_configure_args --with-int=imath-32"
 
 
 # configure is writing to config.log, and then calls config.status.

Modified: polly/trunk/lib/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CMakeLists.txt?rev=240689&r1=240688&r2=240689&view=diff
==============================================================================
--- polly/trunk/lib/CMakeLists.txt (original)
+++ polly/trunk/lib/CMakeLists.txt Thu Jun 25 15:47:35 2015
@@ -40,7 +40,7 @@ message(STATUS "ISL version: ${GIT_HEAD_
 # Enable small integer optimization and imath
 set(USE_GMP_FOR_MP OFF)
 set(USE_IMATH_FOR_MP ON)
-set(USE_SMALL_INT_OPT OFF)
+set(USE_SMALL_INT_OPT ON)
 
 # Determine compiler characteristics
 include(CheckCSourceCompiles)
@@ -112,6 +112,7 @@ set (ISL_FILES
     External/isl/isl_ilp.c
     External/isl/isl_imath.c
     External/isl/isl_input.c
+    External/isl/isl_int_sioimath.c
     External/isl/isl_local_space.c
     External/isl/isl_lp.c
     External/isl/isl_map.c
@@ -148,7 +149,7 @@ set (ISL_FILES
     External/isl/isl_transitive_closure.c
     External/isl/isl_union_map.c
     External/isl/isl_val.c
-    External/isl/isl_val_imath.c
+    External/isl/isl_val_sioimath.c
     External/isl/isl_vec.c
     External/isl/isl_version.c
     External/isl/isl_vertices.c

Modified: polly/trunk/lib/Makefile
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Makefile?rev=240689&r1=240688&r2=240689&view=diff
==============================================================================
--- polly/trunk/lib/Makefile (original)
+++ polly/trunk/lib/Makefile Thu Jun 25 15:47:35 2015
@@ -61,6 +61,7 @@ ISL_FILES= External/isl/basis_reduction_
            External/isl/isl_ilp.c \
            External/isl/isl_imath.c \
            External/isl/isl_input.c \
+           External/isl/isl_int_sioimath.c \
            External/isl/isl_local_space.c \
            External/isl/isl_lp.c \
            External/isl/isl_map.c \
@@ -97,7 +98,7 @@ ISL_FILES= External/isl/basis_reduction_
            External/isl/isl_transitive_closure.c \
            External/isl/isl_union_map.c \
            External/isl/isl_val.c \
-           External/isl/isl_val_imath.c \
+           External/isl/isl_val_sioimath.c \
            External/isl/isl_vec.c \
            External/isl/isl_version.c \
            External/isl/isl_vertices.c \





More information about the llvm-commits mailing list