Microsoft MPI
Microsoft HPC Server 2008 and Windows Compute Cluster Server 2003 includes a Microsoft implementation of the Message Passing Interface (MPI) that is based on MPICH2 from Argonne National Laboratory.
Microsoft MPI offers several benefits:
- Ease of porting existing code that uses MPICH2.
- Security based on the Active Directory directory service. For more information, see Credential Handling.
- High performance on Windows.
- Binary compatibility across different types of interconnectivity options.
The 32-bit version of Msmpi.dll uses the __stdcall calling convention for the C/C++ functions. C/C++ applications that use MSMPI should decorate their callbacks with the MPIAPI macro. For the Fortran functions, the 32-bit version of Msmpi.dll uses the __cdecl calling convention. The 64-bit version of these functions use the __fastcall calling convention.
Microsoft MPI and the Job Scheduler
Every job and task that uses Microsoft MPI must be submitted through the Microsoft job scheduler. There are several ways to submit jobs and tasks to the job scheduler:
- Through the Job Submission and Monitoring console that is provided in Microsoft HPC Server 2008 and Windows Compute Cluster Server 2003
- Through the command line
- Through scripting
- Through the job scheduler API
This documentation is focused on describing how to submit jobs through the API. For more information, see Jobs and Tasks.
The job scheduler manages the resources that are required by jobs. It works primarily on a first-come, first-served basis, with backfill capabilities. For example, if a job that requires more nodes than are currently available is next in queue, a job that requires fewer nodes might be sent to the cluster first.
A specific instance of this situation might occur if there are two free nodes on a cluster, and the first job requires three nodes, and the second requires two nodes. The second job will probably run first if it will be completed by the time enough nodes open up for the first job.
The job scheduler enables MPI jobs that are in a shared environment to be governed by resource allocation policies that are specified by the cluster administrator. It enables node access control that prevents unauthorized jobs from using restricted nodes.
The job scheduler also guarantees fail-safe execution, so that when some nodes fail, a job will be assigned only healthy nodes. Finally, the job scheduler also promises reliable termination of MPI processes that run on nodes, thus preventing runaway processes from using resources that are needed by the next job in the queue.
Related topics
- Microsoft HPC SDK Pack
- Microsoft Compute Cluster Pack
Build date: 7/27/2012