MPICH for Windows NT (MPICH/NT) Version 0.9b Shane Hebert, Boris Protopopov, Anthony Skjellum Mississippi State University Integrated Concurrent and Distributed Computation Research Laboratory Dept. of Computer Science & NSF Engineering Research Center PO Box 9637 Mississippi State, MS 39762 shane@erc.msstate.edu, {boris,tony}@cs.msstate.edu MSU-CS-TR-96-0418 April 18, 1996 MPICH is a Joint Project of Argonne National Laboratory and Mississippi State University Introduction WARNING AND NOTICE: This document describes BETA Software. The standard MPICH license agreement applies to this software (see COPYRIGHT file). MPICH/NT is shared-memory and TCP/IP-based MPI for clusters of one or more Windows/NT workstations. MPICH/NT will be but is not currently interoperable with the P4 driver used to provide TCP/IP based MPICH on UNIX workstations. The current software supports shared memory and TCP/IP inter-process MPI (multi-protocol). This software is a BETA version of MPICH for Windows NT. This first release is part of 1.0.12 testing in preparation for the1.0.13 release of MPICH available on the archive ftp://info.mcs.anl.gov/pub/mpi. For those wanting more background in MPI or MPICH, visit the web site http://www.erc.msstate.edu/mpi/activities.html or http://www.mcs.anl.gov/mpi. Currently, we have only compiled and tested the code on Intel x86 based Windows NT platforms. This code will work on dual processor Pentium platforms (that is what we developed it on). The executables and library that are delivered in this BETA release have been compiled with Microsoft Visual C++ 4.1. The .mdp files for MSVC++ 4.1 are also included in case you want to play around with the code. So far, all code has been tested in debug compiled versions (and are what are delivered). Debugging is assisted with liberal sprinklings of ASSERTs in the code. Release versions have not been tested or even set up properly yet. If you do compile release versions, make sure that the compiler definitions are similar between the debug and release project configurations and be sure to compile all projects with the multithreaded DLL versions of libraries. We are currently working on the release version of the code, including performance tests. When the release version is distributed, we will invite people with different configurations from ours to submit performance numbers. Installation WinZip (Nico Mak Computing -- http://www.winzip.com - make sure you get a 32-bit evaluation version for Windows95 and WindowsNT for long file name support) was used in creating the distribution 'zip' file. When the software is unzipped, there are a lot of files depositted in your specified location. For now, the most important of these is your winmpicht\bin directory. In this directory, you should find mpiserve.exe, mpirun.exe, mpitcpproc.exe, and winmpich.dll. mpiserve.exe is a service process that mpirun.exe will access when you create TCP/IP jobs. mpirun.exe runs both shared memory processes and TCP/IP processes. winmpich.dll is the DLL that is the MPICH library. Before you begin the installation of the software, you must verify that the account you are running as has administrative privileges. You must also make sure that the 'System' account has access to the executables and to the directory structure to the executables. To install the service process, simply type mpiserve -install -p. This will set up the service to be run. You will need to perform this on every machine running Windows NT that you wish to use for MPI processes. You may move the service process executable to any directory you wish but if you have already installed it from another directory, you must run mpiserve -remove to remove the service information from the registry then reinstall the service process from the new directory. For a complete list of the command line options, run mpiserve -? from the command line. Whichever directory the service process is installed from, the executable mpitcpproc.exe must also exist in that directory for proper usage. We plan to clean up the installation process at some time and make it nicer but this is low priority for now. After running the installation procedure, activate the Control Panel/Services dialog. If the service is running (shouldn't be at this point) stop the service. Double click on the MPI Serve entry and enable the service to interact with the desktop. You can also change the startup characteristics at this point (Automatic or Manual). Restart the service. Usage The configuration file: For any MPICH job that uses this library, you must have a configuration file named in this convention: whatever your .exe file is named, you must name it the same with a .cfg extension. For example, if I had a program called test.exe, its configuration file would be named test.cfg and it would exist in the same directory as test.exe. The configuration file format: The configuration file must contain one line of information for every process that you wish to run. This information is entered as . For instance, if I wanted to run four processes on a single machine called viking, I would have a configuration file as follows: ====================================== viking c:\users\mydirectory\mpiproc.exe viking c:\users\mydirectory\mpiproc.exe viking c:\users\mydirectory\mpiproc.exe viking c:\users\mydirectory\mpiproc.exe ====================================== If I wished to run two processes on viking and one process on moor and two processes on hun, my configuration file would look as follows: ====================================== viking c:\users\mydirectory\mpiproc1.exe viking d:\users\yourdirectory\mpiproc2.exe moor f:\backup\mydirectory\mpiproc1.exe hun c:\users\mydirectory\mpiproc3.exe hun c:\users\mydirectory\mpiproc3.exe ====================================== Note: Every machine doesn't have to run the same executable but that executable does have to exist as specified on that machine. Using MPICH If you wish to run shared memory only versions of your MPICH processes, write your configuration file so that every machine is the same name and then run mpirun (don't forget your configuration file in the same directory) and your program will run using only processes that communicate via shared memory. If you wish to run the same executable for your multiple processes using shared memory only, you can run mpirun with the command line options of -np and this will not contact mpiserve. For example, if I wanted to run my program test.exe with four processes on the same machine using shared memory, I would type at the command line mpirun -np 4 test.exe. If you wish to run process on multiple machines, processes that are to be run on the same machine will communicate via shared memory and processes that are to be run on separate machines will communicate via TCP/IP (other protocols will be added as needed/when we can get to them). mpirun.exe is the program to run for this functionality. It will connect to the specified machines and fire off your processes. Compiling MPICH Programs In the directory winmpicht\lib exists the library file for the DLL. You must link with this file and the standard header files in order to use MPI functions in your programs. Don't forget that the winmpich.dll must exist in the same directory as your MPICH programs or it must be accessable by your PATH environment variable settings. Although each MPI program creates its own console windows currently, this is for debugging purposes. Future plans are to start MPI processes without console windows so writing results to files on the disk is the preferred method for output. What the release version will do - Interoperate with P4 under UNIX (heterogeneous cluster computing) - Windows 95 support This should be available by the Q4 timeframe. Who to contact if you have problems If you have problems installing/compiling/bugs/etc, please email mpi-bugs@mcs.anl.gov. How to cite MPICH and MPICH/NT This is the standard reference for MPICH: Gropp, Lusk, Doss, Skjellum. A High-Performance, Portable Implementation of the MPI Message Passing Interface Standard. Accepted to Parallel Computing, to appear in 1996. This can be FTPed at the following location: ftp://aurora.cs.msstate.edu/pub/reports/Message-Passing/mpich_journal.ps.Z This document is currently the standard reference for MPICH/NT: MSU-CS-TR-96-0418 Acknowledgements MPICH was written by: William Gropp, Ewing Lusk, Argonne National Laboratory Nathan Doss, Anthony Skjellum, Mississippi State University This work was supported by the Mathematical, Information, and Computational Sciences Division subprogram of the Office of Computational and Technology Research, U.S. Department of Energy, under Contract W-31-109-Eng-38, NSF Engineering Research Center for Computational Field Simulation, Mississippi State University. Additional support came from the NSF Career Program under grant ASC-95-01917, and from ARPA under Order D350.