Not logged in. Login

Compilers for SIMD: Conclusion

Parabix: Scalable Performance for Streaming Text Processing

  • Processor clock-speeds stopped increasing in 2005
  • Processor advances since 2005 have focused on parallel processing capabilities
    • SIMD parallelism
    • multicore parallelism
    • hyperthreading
  • Performance of traditional software tools largely does not benefit from these advances.
  • Considerable programmer effort is often required to build applications that can exploit parallelism.

The Parabix Approach

  • Design of a compiler framework that automatically scales to take advantage of SIMD and multicore parallel processing resources.
  • Employs algorithms based on bitwise data parallelism
  • Current focus: streaming text processing applications
  • Showcase application: icgrep
    • Feature complete for pure regular expressions
    • Extensive support for Unicode (best available for greps?)
    • Dramatic performance advantages in many cases

Parabix Compiler Technology

  • Many Small Compilers
    • Pablo
    • Character class compilers for code units
    • Unicode hierarchy compiler
    • Unicode property compiler
    • Regular expression compiler
    • Kernels
    • Pipeline compilers
      • Sequential
      • Segment-Pipeline Parallel
  • Future work: How can these all be integrated into an easier-to-understand/use framework
    • Focus on grammar compilers

LLVM for Parabix

  • LLVM is useful for the Parabix framework to handle core code generation
    • Back-end support for many processors
  • Several issues with LLVM for Parabix
    • IDISA overrides are used for critical Parabix performance issues
    • LLVM does not handle vectors of i1, i2, or i4 well
    • LLVM bitcast model does not work well for vectors
  • Future work: Systematic Redesign of LLVM for Parabix-style Operations
    • Redesign the type legalization to support SWAR
    • Eliminate bitcast through memory and GEP into vectors
Updated Mon April 09 2018, 09:22 by cameron.