Program Systems Institute
of the Russian Academy of Sciences
Keywords: Automatic dynamic multisequencing of the progrmas, parallel computations, .NET Framework, .NET Remoting, .NET Threading
The .NET Framework offers comprehensive and flexible thread APIs that allow the efficient implementation of multithreaded applications. These APIs can, however, only be utilized within Symmetric Multiprocessors (SMPs), which have a very limited scalability. For larger systems, which are in the PC world mostly represented as clusters of SMPs, other paradigms like message passing or handcrafted hybrid systems have to be used. These approaches are generally more difficult to program and require major code changes compared to sequential codes. This paper presents an extension to the .NET Framework which implements the concept of automatic dynamic multisequencing of the programs.The extension provides both ease-of-use and scalability in developement of parallel programs. This drastically eases the use of clusters and opens cluster architectures to a whole range of new potential users and applications.
The extension offers a new model of a computation process based on the following concepts:
Functions body can be implemented using imperative programming style. The only constraint is that a function must not have any side effects. The joint of these two different programming concepts allows to combine global parallelizm with local efficiency and ease of implementation of separate functions.
These concepts are naturally integrated into .NET Framework by means of using templatized classes that encapsulate all low-level details such as threading, synchronization, scheduling, load balancing, etc., which makes the extension a powerful tool for implementing high-performance parallel programs.