Announcement

Collapse
No announcement yet.

LLVM's Polly Keeps Optimizing, Plays With Pluto

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    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.

    Comment


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

      Comment


      • #4
        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).

        Comment


        • #5
          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.

          Comment

          Working...
          X