User login


Parallel computation is essential for the purpose of utilizing the maximum capability of the multicore processors, and a lot of methodology of parallel computing have been proposed until now. One of the most popular parallel computation methods might be Message Passing Interface (MPI) [1]. Thus, it is natural to think of using MPI in order to parallelize a program for achieving concurrency of the program. Before we investigate some actual MPI programming with real applications on the multicore architecture, we need to measure the performance overhead of the basic message passing (send and receive) in each MPI packages since it is a trade-off to gain better performance with concurrency.


Message Passing Patterns

For the purpose of measuring performance overhead of MPI packages, we designed several message passing patterns, such as pipeline, shift, twoShift, and exchange. Briefly, the pipeline pattern is very simple and straight forward, but actually not useful in real life, since a process (or a thread) sends a message to itself, and receives a message from itself. Also, the shift and twoShift patterns are structurally same but difference in the number of sending and receiving message, once ( shift pattern) or twice (two shift pattern). In shift or two shift pattern, a process sends a message to the next process, and receives a message from the previous process. The exchange pattern represents message exchanging between two processes (or threads). In other words, a process sends a message to the previous and the next processes, and receive a message from the previous and the next processes. For more detail explanation of message passing patterns, please refer to [2].


MPI Softwares

For this message passing benchmark, we use four different machines (i.e. AMD4, Intel8b, Intel8c, and Intel8f refer to Testing Environments) with different OS (Windows XP, Windows Vista, RedHat, and Fedora) and a number of MPI softwares, such as MPICH2 [3], mpiJava [4], and MPJ Express (MPJE) [5]. We use C++ language with MPICH2, and Java language with mpiJava and MPJE. For the MPICH2, we also experimented with nemesis subsystem [6], which is implemented for the scalability and efficiency of the intranode communication.






[1]   Message Passing Interface Forum. MPI-2: Extensions to the Message Passing Interface, July 1997. http://www.mpi-forum.org
[2]   Xiaohong Qiu, Geoffrey Fox, H. Yuan, Seung-Hee Bae, George Chrysanthakopoulos, and Henrik Frystyk Nielsen, "High Performance Multi-Paradigm Messaging Runtime Integrating Grids and Multicore Systems", to be published in Proceedings of eScience 2007 Conference, Bangalore India, Dec. 2007
[3]   MPICH2 http://www-unix.mcs.anl.gov/mpi/mpich/
[4]   mpiJava http://www.hpjava.org/mpiJava.html
[5]   MPJ Express http://www.mpj-express.org/index.html
[6]   Darius Buntinas, Guillaume Mercier, and William Gropp, "Design and Evaluation of Nemesis, a Scalable, Low-Latency, Message-Passing Communication Subsystem," ccgrid, pp. 521-530, Sixth IEEE International Symposium on Cluster Computing and the Grid (CCGRID'06), 2006 http://csdl.computer.org/dl/proceedings/ccgrid/2006/2585/00/25850521.pdf