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.