Every so often people come up to us and ask, “Aren’t compilers and compiler directives good enough for HPC applications?” or “Won’t a compiler accomplish that for us?” While compilers have made massive progress in the last two decades, they are still nowhere near the point of putting us and many other HPC programmers out of business. Compilers are still a “one-size-fits-all” solution that needs to be able to deal with any and all input, whereas HPC programmers can be thought of as a designer-fitted solution. Application expertise brings a lot to the table that compilers cannot compete with: Our past experiences have helped us optimize applications that have irregular memory access patterns. While some applications such as matrix applications have regular and simple …