In our opinion, high-performance computing is plagued by two main problems. First, the main users of various high-performance applications are experts in their respective fields (physicists, chemists, biologists, and many other fields other than computer science) and they are solving problems in domains largely unrelated to the computing field. Yet, they are typically forced to work with low-level general purpose programming languages designed for ease of translation rather than ease of modeling. Consequently, productivity is low and many promising new techniques never see the light of day because it is simply too costly and difficult to integrate them into existing code-bases. Second, even though high-performance applications are developed at a low level, the additional performance tuning required to make the code run efficiently on new and evolving platforms is a time consuming process - the theoretical performance of a new platform is rarely (if ever) achieved and manually tuning the code to get close is very difficult. Thus, we see two main problems; (1) the lack of domain specific languages and domain specific language features suitable for the scientific and high-performance modeling tasks at hand and (2) the lack of a highly flexible and efficient translation infrastructure that will allow us to rapidly modify a compiler to take advantage of characteristics of the problem domain as well as the target hardware.
展开▼