Instruction Set Tools
This project was inspired by discussion in Packaging WG Meeting. It is intended as a collation of information and example code for building and packaging code that uses specific instruction sets but may run on (older) systems that do not support these on their CPUs. Whilst this can, as discussed in the presentation, be handled by the package/configuration manager, there may also be places where HEP software itself can be written to handle this automatically or selectively.
This doesn't handle the case of things like auto-vectorization, or third-party packages that set handle instructions sets in their own way. We also look at ways to discover available instruction sets at runtime to construct the platform tags as described on slide 6.
- Optimizing software in C++, Section 13
- IsoC++ Discussion Thread
- Intel MKL Automatic and Selective Dispatch
- OpenCV Build/CPU Optimizations