|
A proto-runtime is the hardware-specific portion of a modularized runtime system of a parallel language. In the proto-runtime approach, a runtime is broken into three modules: one that implements the behavior of the parallel language constructs, one that implements the work assignment and one that abstracts the hardware, presenting a clean interface to the first two. It is this third module that is called the proto-runtime. A runtime system exists for every computer language, but a proto-runtime is a fundamentally new concept for parallel languages that recognizes that all runtimes can be split into reusable pieces. One of those pieces relates to the language, the other relates to the machine details. The proto-runtime is the piece that relates to machine details. A proto-runtime is provided as a separate thing, for a particular machine, and then later one or more language portions are added. The combination creates a functioning runtime. A proto-runtime cannot be used on its own, but must have the language portion added. In a practical sense, this has value by reducing the effort of creating a runtime. Only the logic of language constructs need be supplied. This logic remains unchanged when used on different machines, because the low-level machine details are encapsulated inside the proto-runtime, which exposes a consistent interface. Even though different machines may have different synchronization primitives, memory consistency models, and memory hierarchies, these are handled inside the proto-runtime. As a result the language module is protected from the changes and only has to be written once, then reused across the machines. At the same time, on a given machine, multiple languages reuse the one proto-runtime supplied for that machine. In this way the effort of tuning performance for the low-level details is done once, inside the proto-runtime, then amortized across all of the languages. A particular implementation of the proto-runtime concept is called "Virtualized Master Slave" or VMS. The proto-runtime concept is in use at Technishe Universitat Berlin, at Unister in Leipzig Germany, at Arizona State University, and is part of a collaboration on exascale computing with Lawrence Livermore National Labs, Edinburgh University in Scotland, and Passau University in Germany.
|
|
|