[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