Fast Message Passing via the Shared Memory on KSR Computers
A large body of applications have been built which use a message-passing style of inter-process communication. Thus, it is important to be able to support efficient message-passing even on shared-memory computers. Unfortunately, `direct' porting of message-passing packages to shared-memory computers invariably produces unacceptably poor performance. In this paper, we discuss schemes for efficiently implementing the primitives of two commonly-used message-passing packages -- PVM and TCGMSG -- through the ALLCACHE memory of KSR computers. First, we describe a generic interface for message-passing and buffering, and map the specific calls of these two packages on to this generic interface. We then derive analytical results about the achievable bandwidth for message-passing via the shared ALLCACHE memory on KSR machines. We describe a simple but widely-used benchmark called ping-pong, and report the performance of this benchmark on our implementation of each of the two message-passing packages. Further, we suggest some new features to the system software on KSR machines which might support such packages more efficiently, and point out some drawbacks in the interfaces of the packages which hinder their efficient implementation on multiprocessors.