This is an archive of the discontinued LLVM Phabricator instance.

[Polly] Enable ISL's small integer optimization
ClosedPublic

Authored by Meinersbur on Jun 17 2015, 10:20 AM.

Details

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 source2source 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%

Diff Detail

Repository
rL LLVM

Event Timeline

Meinersbur retitled this revision from to Enable ISL's small integer optimization.
Meinersbur updated this object.
Meinersbur edited the test plan for this revision. (Show Details)
Meinersbur added a reviewer: grosser.
Meinersbur added a project: Restricted Project.
Meinersbur added subscribers: pollydev, Unknown Object (MLST), Meinersbur.
Meinersbur retitled this revision from Enable ISL's small integer optimization to [Polly] Enable ISL's small integer optimization.Jun 17 2015, 10:43 AM
grosser edited edge metadata.Jun 17 2015, 10:48 PM

This patch looks fine. Only two minor remarks:

  1. The isl_config.h change may need minor adjustments to match the old format (see previous review)
  1. Performance numbers

After having committed D10505, it would be nice to push this patch to our try performance bots to obtain the latest performance numbers. Having such performance numbers in the commit message and also adding some explanation to the commit message on why sio gives us so nice compile-time reductions would be nice. Many people from the LLVM community may not have followed this discussion, so this is really the location where we want to educate people about this change. Assuming sameone wants to know something about the sio change and it effects on Polly, I would like to be able to point him to this commit message to quickly learn about the change and its impact.

Meinersbur updated this revision to Diff 28149.Jun 22 2015, 1:27 PM
Meinersbur updated this object.
Meinersbur edited the test plan for this revision. (Show Details)
Meinersbur edited edge metadata.

Rebase on previous commits

grosser accepted this revision.Jun 22 2015, 1:53 PM
grosser edited edge metadata.

LGTM, just a minor typo.

I fixed the parkas1 buildbot by cleaning its svn directory.

Let's still wait for the performance results to add them into the commit message. Unfortunately, it seems the runs you started broke for an unknown reason.

autoconf/configure.ac
102 ↗(On Diff #28149)

'option' instead of 'ooption'

This revision is now accepted and ready to land.Jun 22 2015, 1:53 PM
Meinersbur updated this object.
Meinersbur edited the test plan for this revision. (Show Details)
Meinersbur edited edge metadata.

rebase to latest revision

This revision was automatically updated to reflect the committed changes.