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 …
Application Time vs Solver Time
Last week, HPCwire ran an interesting article entitled, “Where has HPC’s math gone?” The article analyzes the increasing importance of math solvers to successful HPC outcomes. As the number of cores grows, the percentage of time HPC codes spend in solvers increases significantly. The following chart illustrates this trend nicely: ArrayFire is ideally suited for HPC applications that need to accelerate the toughest math problems. ArrayFire contains hundreds of math functions across numerous domains. In general, if the HPC community really wants to solve this problem, it will begin to invest more in libraries than in compilers that have no chance at optimizing these tough math problems automatically. Rather, it is only through expertly-tuned codes, such as those developed …