Results 1 to 5 of 5

Thread: LLVM's Polly Keeps Optimizing, Plays With Pluto

  1. #1
    Join Date
    Jan 2007
    Posts
    15,660

    Default LLVM's Polly Keeps Optimizing, Plays With Pluto

    Phoronix: LLVM's Polly Keeps Optimizing, Plays With Pluto

    Polly was accepted at the beginning of this year as an official LLVM project and since then it's continued to advance ahead of the LLVM 3.2 release for providing polyhedral optimizations...

    http://www.phoronix.com/vr.php?view=MTIwMzg

  2. #2
    Join Date
    Jan 2010
    Location
    Ghent
    Posts
    221

    Default

    a permissively licenced alternative to GMP would be libtommath. Generally less fast since it is pure C rather than ASM, but on the other hand potentially more portable and much smaller.
    No idea whether it would be complete enough for this use case.

  3. #3
    Join Date
    May 2012
    Location
    Sunshine State
    Posts
    308

    Default

    I'm having trouble understand what Polly optimization does... does it somehow auto-multithread your single-threaded code?

  4. #4
    Join Date
    Nov 2007
    Posts
    1,024

    Default

    Quote Originally Posted by F i L View Post
    I'm having trouble understand what Polly optimization does... does it somehow auto-multithread your single-threaded code?
    Polly is a library that implements polyhedral model optimizations.

    The polyhedral model is an algorithm for loop nest optimizations, which is to say it makes non-parallel nested loop code into parallel code. The main uses for such frameworks is to convert SISD code to SIMD code. That is, it automatically optimizes to use SSE and the like to its full potential. It can also be used for auto-threading, but generally only when paired with language extensions to C/C++ that explicitly opt-in (via OpenMP/AMP/etc.). There's usually a slew of other related optimizations that go with it; the Polly website mentions data locality optimization, for instance, which results in more efficient memory access to large blocks of data in parallel code.

    GCC uses the polyhedral model for its auto-vectorizer code, too. I'm unsure what the new high-power auto-vectorizer in VC11 (MSVS 2012) uses, but I'd put my money on it using the polyhedral model as well. I'm unsure what optimization models those compilers use for their OpenMP backends (or what VC11 uses for its AMP support, for that matter).

  5. #5
    Join Date
    May 2012
    Location
    Sunshine State
    Posts
    308

    Default

    Quote Originally Posted by elanthis View Post
    Polly is a library that implements polyhedral model optimizations.

    The polyhedral model is an algorithm for loop nest optimizations, which is to say it makes non-parallel nested loop code into parallel code. The main uses for such frameworks is to convert SISD code to SIMD code. That is, it automatically optimizes to use SSE and the like to its full potential. It can also be used for auto-threading, but generally only when paired with language extensions to C/C++ that explicitly opt-in (via OpenMP/AMP/etc.). There's usually a slew of other related optimizations that go with it; the Polly website mentions data locality optimization, for instance, which results in more efficient memory access to large blocks of data in parallel code.

    GCC uses the polyhedral model for its auto-vectorizer code, too. I'm unsure what the new high-power auto-vectorizer in VC11 (MSVS 2012) uses, but I'd put my money on it using the polyhedral model as well. I'm unsure what optimization models those compilers use for their OpenMP backends (or what VC11 uses for its AMP support, for that matter).
    I see, that makes more sense. Thanks for the detailed explanation.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •