WMPI 1.5 New Features
This new version of WMPI represents
a turning point. Previous versions of WMPI were based on the MPICH implementation
and P4. For this version, the core of WMPI was completely redesigned, only
the interface is the same. (We keep following the standard!)
The principal new features of WMPI
are:
- Thread
Safety
- Simultaneous
Multiple Device
- Better Performance
- Error Notification
- Ease the Evolution
to MPI-2
Note: WMPI 1.5 can not be used in
mixed clusters with any former version of WMPI, or any version of MPICH.
Thread
Safety
WMPI's level of thread safety, following
the classification given in the section "MPI and Threads" of MPI-2’s chapter
8 ("External Interfaces") is MPI_THREAD_MULTIPLE. This means that multiple
threads can make concurrent calls to MPI functions.
The interface presented in the MPI-2
standard is available. On calls to MPI_Init_thread
WMPI will always respond with the thread safety level of MPI_THREAD_MULTIPLE
regardless of the level that is required. Since the MPI_THREAD_MULTIPLE
is a superset of all the others, the users may program using whatever level
they need. When calling the MPI_Init
function, users will have the same thread safety level as with a call to
MPI_Init_thread.
Nevertheless, if the program requires the use of multiple threads it is
recommended to follow the standard (and call MPI_Init_thread)
in order to maintain the program compatibility.
We recommend that users should read
section about threads on the MPI-2 standard (Chapter 8 – Section 7 – pages
193-198) before using multiple threads with MPI.
Simultaneous
Multiple Device
The new WMPI kernel can use any number
of different communication devices. The WMPI kernel (called WML – WMPI
Management Layer) uses a carefully defined interface to interact with the
devices: the Multiple Device Interface (MDI). This specification of this
interface will be made public in the near future and virtually anyone may
develop a library for their own devices, thus allowing processes to communicate
with any technology they want (e.g. Myrinet, SCI, VIA, etc.) just by plugging
in the library (DLL) for the device, as each device corresponds to a DLL
of it's own. No source code modification to WMPI is needed to add a new
device! Currently we have devices for shared memory and TCP.
Better
Performance
During the redesign of the WMPI core,
one of the main concerns was to improve the performance of the library.
Hence, we have created a lighter structure that reduced the synchronization
as well as the memory copies. This resulted in clear performance improvement.
To use features of specific environments
for better performance, users may wish to develop a new device, using the
MDI interface.
Error Notification
When an error occurred in a previous
version and a slave process simply ended, at most you would see that all
the processes of the computation would suddenly abort. In this new version,
when an error occurs, the user gets a Windows message (equal to "net
send" command) from the process that detected the error giving the
possible information about it. If both the machines (where the error process
is running and the user machine) are in the same Windows domain, the error
log will be written in the Applications EventLog.
When an error occurs WMPI makes the
best attempt to kill all the processes of the computation. Some of them
exit after a timeout, which is set to one minute.
Ease the
Evolution to MPI-2
The move to MPI-2 would require a
lot of work for a WMPI implementation that was ported from MPICH. Therefore
to ease the evolution to MPI-2, we designed a new internal structure. This
beta release contains a base platform ready for the MPI-2 main innovations.
|