Summary: | 碩士 === 國立清華大學 === 資訊科學研究所 === 85 ===
In cluster computing, a collection of computers are interconnected through networks to be used as a concurrent computation engine. As the performance of computers advances and the use of networks is widely spreading, cluster computing is becoming an affordable and powerful platform for distributed memory parallel processing. Message passing is usually used to communicate between computer nodes in cluster computing. Unfortunately, programming with message passing is error-prone, tedious and hard to debug. A distributed shared memory (DSM) system provides users a logical global shared memory abstraction on top of the distributed memory cluster. It releases programmers from the burden of taking care of data flows and allocation explicitly.
A major drawback with the cluster computing approach is the high communication overhead incurred in the system software and in the interconnection networks. Unfortunately, typical communications in parallel programs transmit frequent but short messages. It is very difficult to execute these programs efficiently on cluster ocmputing environments. One solution is to hide the long communication overhead by overlapping computation with communication.
Multithreading is one of the best candidates for this purpose. We have implemented a thread-based DSM called Adsmith+. Adsmith+ was developed by integrating Adsmith, a DSM system built on top of PVM, with Pthread. Through PVM and Pthread, Adsmith+ is very portable and it supports efficient parallel programming through the overlap between computation and communication.
Unfortunately, PVM and Adsmith are not thread safe. To support multithread applications, we must address the reentrance problem, message buffering and dispatching, and other related issues. In this thesis, we will examine the issues caused by the extension of an existing DSM to a multithreaded system, and introduce our solutions. Implementation details of Adsmith+ will be described. Preliminary performance results show that Adsmith+ is able to hide the latency of communication and improve program performance.
|