The nano-Threads project aims at designing and implementing a new user-level threads environment with associated compiler and operating system support for shared-memory parallel computers. Our proposed model integrates space and time sharing; or equivalently, it provides a unifying thread-based environment which facilitates co-ordination between parallel activities within a user application, and resource allocation to multiple parallel/serial applications executing simultaneously.
In addition to the new user-level threads model and kernel interface, our project is expected to address and solve several important issues including hierarchical exploitation of parallelism in applications, adaptive thread granularity (reflecting size of available resources), scalability of binaries on different configurations of parallel machines, and significantly improved performance of individual applications as well as hardware utilisation (or equivalently workload turnaround time).
The thesis on which the project is based is that close co-operation between compiler, runtime system support at the user level, and kernel resource management policies is required in order to achieve the objectives mentioned above. In such an environment, the burden of resource allocation, partitioning, and scheduling of parallel activities will be eliminated from the programmer (while still providing hooks for the sophisticated programmer), and high system utilisation through co-ordinated time and space-sharing will be offered automatically.
This project will specify an execution model interface and an operating system interface which will be the core of the system structure. First a library-based implementation of the execution model support at user level will be implemented along with the appropriate extensions of an existing microkernel interface. Secondly, a compiler-based approach will be undertaken; under this approach the compiler extracts the hierarchical parallelism from the application and directly emits the code to interface the kernel. A public domain compiler will be extended to carry out this work. The prototype to be developed will be extensively tested under a mixture of parallel and general purpose applications in a multiprogrammed environment.
There is a wide consensus in the computer industry that parallel processing will proliferate, in the near future, down to the low-end workstations and even personal computers. On the other hand, current systems software platforms provide rudimentary (if any) support for parallel processing. Our approach is consistent with industry trends to bring parallel computing into the main-stream computing world for addressing simultaneously both high performance as well as time-sharing, which is required in almost all production computing environments (including multimedia environments, database applications, networking and server-based computing).
This project aims at developing new technology for shared-memory systems. The higher level of this technology (compilation and performance analysis for shared memory) is of real exploratory interest for the industrial partner of the project (Pallas). At the lower level of the development (microkernel scheduling policies and run time libraries) the project is of interest to Chorus Systemes that will provide the fine grain Chorus version on which the project will be implemented and act as member of the Steering Committee.
Other industries who have expressed their interest in being part of the Steering Committee are Convex, Hewlett Packard, IBM, NAG, Olivetti and Silicon Graphics. This technology can be applied not only to large systems, but also to small SMPs as those offered by several European manufacturers.
Funding SchemeOIF - Marie Curie actions-Outgoing International Fellowships