ASSOCIATED COLLEGES OF THE SOUTH

TECHNOLOGY FELLOWS PROGRAM

Proposal

Undergraduate Parallel Computing with MPI

Thomas P. Whaley
Department of Computer Science
Washington and Lee University


Abstract. In this project, I propose to develop materials to facilitate the teaching of parallel computing using computer systems already present at most member institutions. The focus will be on using the Message Passing Interface (MP I) software to configure a network of workstations or PC's as a parallel computer. The materials developed will include a detailed document on how to obtain and install the MPI software on Windows based machines and Unix workstations, a set of introductor y level examples illustrating the use of MPI, and a set of introductory level lab assignments. These materials could serve as a starting point for anyone wishing to introduce parallel computing as a unit in an existing course, as a separate course or for use with undergraduate research projects. All materials developed will be available on the web, and I shall volunteer to be a "Circuit Rider" to assist others in developing courses or course units on parallel computing.

 

The Project. The proposed project will take place during our six-week spring term and the summer of 1998. Washington and Lee has granted me a leave for the spring term, and I will combine that time with the summer in order to complete the project. The Computer Science Department has a new lab with twenty-five Pentium-based PC's and a set of five Unix workstations that will be available for use on the project. During the current academic year, I have a student lab assistant who will help w ith the preparation for doing the project.

The materials developed for the project will be designed for computer science faculty at similar institutions who have a basic understanding of parallel computing, but with no parallel equipment and with no prior experience with teaching parallel compu ting. The goal will be to provide such faculty with easy to use materials that will enable them to make use of the equipment they have in order to introduce parallel computing either as a unit in an existing course, as a new course on parallel computing, for independent study or for undergraduate research. The main avenue to parallel computing for this project will be MPI, a software library that is available free of charge for most types of networked computers. One nice feature of this approach is that t he programming is done in C, a language used on most campuses. Another advantage of this approach is that programs written based on MPI on a local network can be ported to more powerful multi-processor machines. Currently, the supercomputer centers provid e course grants to provide students the experience of running their programs on state of the art supercomputers. However, even on a local network, students can experience the speedup provided by parallel computing and compute efficiencies gained.

At this point, we have MPI working on our network of Unix workstations. As part of this project, we will attempt an installation on the PC's running Windows software. This would give us experience with a much more readily available platform. At most in stitutions this would provide the potential for configuring a virtual parallel machine with many processors, at least for infrequent runs. Included in the materials from this project will be detailed documentation on where to obtain the MPI software for t he most widely available hardware platforms and how to install the software in a typical undergraduate computer science laboratory. As part of this component of the project, we plan to peruse the MPI implementers' list of "frequently asked questions list s" in order to document the common pitfalls that might occur in the undergraduate laboratory setting.

The MPI packages usually include a suite of examples to illustrate some of the important functions of MPI. However, we have found that these examples are not very helpful for beginning students. The examples tend to quickly get into advanced features and are not well documented. As part of this project, we plan to work up a set of simple examples to gradually introduce the most basic functions of MPI. These examples will be well documented both with internal documentation in the code and with exter nal documentation that can serve as a tutorial for the user. This component will be written for an audience of students and/or faculty who are experienced programmers, but who have not written parallel programs. The first few of these examples will illus trate how to get the processors working together and communicating with one another with no emphasis on efficiency. The latter examples will be at a level to begin showing some of the speedup possible with parallelism. It is not the intention to go into complicated parallel algorithms.

The other component of the project will be a set of introductory exercises on the use of MPI. These will be at the same level as the examples mentioned above. These exercises will take the student from the most elementary level of parallel communicati on up through beginning parallel algorithms. Again, the purpose of this set of exercises will be to bring the students up to a comfortable level with MPI so that they are ready for more significant assignments.

During the 1998-99 academic year, we will offer a new course on parallel computing at Washington and Lee. The materials from this project will serve as the basis for introducing the unit of this course on the message passing paradigm of parallel comput ing.

Once the first version of the materials is completed, I plan to solicit feedback from faculty who have participated in some of the NSF summer courses on parallel computing as well as interested faculty from the ACS schools. Appropriate revisions will t hen be made. Once the material is finished, it will be made available on the web. The material will be tested with our course next year and further revisions will be made at that time. If other schools use the material, their suggestions will also be soli cited. In addition, I will offer my services as one of the ACS "Circuit Riders" to assist other member departments who wish to introduce parallel computing into their curriculum.

Background for the project. The Department of Computer Science at Washington and Lee has only three faculty members. In order to offer a quality major reflecting emerging fields of importance, it is necessary for each faculty member to cover a number of areas and to be willing to learn new sub-disciplines on a fairly regular basis. A few years ago, we recognized a need to incorporate parallel computing into our curriculum. This subject has to do with the use of multiple processors, working coop eratively, to solve a large computational task. This may be done with either a single computer with multiple processors or with a network of computers communicating via a network. In the summer of 1995, I attended a two-week NSF-sponsored course at Illino is State University on introducing parallel computing into the undergraduate curriculum. During the 1995-96 academic year, I installed software for doing parallel computing on our network of Unix workstations and attended a short course at the Pittsburgh Supercomputer Center having to do with using this software on a large-scale multi-processor machine. During the winter term of that year, I directed a senior project that made use of parallel computing, both on our network and on a 32-processor computer a t Colgate University. During the six-week spring term of that year, I taught an experimental parallel computing seminar to eight students. The course projects made use of our network machines working as a parallel machine and also made use of a supercompu ter at the National Center for Supercomputing Applications via a course grant. All of the student reports and projects from this seminar are available on the course web page. Since that time, I have given guest lectures on this seminar to NSF faculty workshops on parallel computing at both Illinois State and Colgate. Over the past two summers, my colleague Wayne Dymacek along with two undergraduate research participants have made use of MPI for doing research in the area of graph theory. Our students have given presentations on this work at Colgate, the Council for Undergraduate Research Conference, the Virginia Federation for Independent Colleges Conference and locally to the Mathemati cs Colloquium. Part of this work has been done via a grant received for time on a Cray supercomputer at the Pittsburgh Supercomputing Center.