Download the Programming Taskbook for MPI-2 (ver. 1.5 in English and Russian)
Download MS-MPI 10.0
Download MPICH2 1.3 for Windows
Download MPICH 1.2.5 for Windows
Programming Taskbook for MPI-2 (PT for MPI-2)
is an extension of the Programming Taskbook electronic book of educational
training tasks. Programming Taskbook for MPI-2 allows
to solve tasks on parallel programming based on the Message Passing Interface (MPI) standard
1.x and 2.x.
Programming Taskbook for MPI-2 was developed with the support of the V. Potanin Charitable
Foundation Scholarship Program as one of the winning projects of the grant competition for
master's teachers of 2016-2017 in the nomination "New methods and special skills in training".
PT for MPI-2 of the version 1.4 and 1.5 should be installed in the system directory of the Programming Taskbook
(version 4.22 or higher). The tasks that are included in PT for MPI-2 can be solved in C++ in
any programming environment for this language supported by the Programming Taskbook:
- Microsoft Visual Studio 2017, 2019, 2022;
- Code::Blocks 20.03;
- Dev-C++ 5.11 and 6.30;
- Visual Studio Code.
Compiling and running in parallel mode are implemented through usage of components of the MPICH system
(MPICH is one of the popular freeware support systems for MPI developed in Argonne National Laboratory,
USA). PT for MPI-2 can be used in conjunction with three versions of this system (including MS-MPI, also based on MPICH):
- MPICH 1.2.5 (ftp://ftp.mcs.anl.gov/pub/mpi/nt/mpich.nt.1.2.5.exe),
supports the MPI 1.1 standard);
- MPICH2 1.3 (http://www.mpich.org/static/downloads/1.3/mpich2-1.3-win-ia32.msi),
supports the MPI 2.1 standard).
- MS-MPI 10.0 (https://www.microsoft.com/en-us/download/details.aspx?id=57467),
supports the MPI 2.1 standard, provides faster operation of parallel programs for Windows 10
(requires downloading the msmpisetup.exe installation file). It should be noted that this system
does not support a number of functions of the MPI-2 standard related to parallel file processing.
If several versions are installed on the computer, one can use the PT4Setup or PT4Load
program to select any of these MPICH versions for use with PT for MPI-2. Using the MPICH
1.2.5 is only justified while studying MPI 1.x.
A dynamic library included in MPICH must be linked to studentís programs. Access to the library is
provided through a lib file and a set of header files also included in MPICH. Linking of these MPICH
components to studentís programs is performed automatically by PT for MPI-2.
Remark. For the correct installation of the MPICH2 system, you must run the mpich2-1.3-win-ia32.msi
installation file with administrator rights. To simplify the install procedure,
you can use the MPICH2Installer.exe program included in version 1.5 of the taskbook.
PT for MPI-2 is a freeware and can be used with both the Complete Edition (PT4Complete-1100)
and the Mini Edition (PT4Mini-270) of Programming Taskbook.
PT for MPI-2 provides the same learning options as the basic Programming Taskbook's ones; in
particular, it passes input data to studentís program, validates results obtained by the program
and stores information about each test launch of the program in a special file. In addition, PT
for MPI-2 implements a number of features related to the specifics of solving training tasks on
parallel programming based on message passing:
- demo preview of tasks that does not require usage of parallel mode;
- creation of a project template with modules of the MPI library for a selected training task;
- a special mechanism that ensures the execution of studentís program in parallel mode during its launch
from IDE: the launched program runs the MPIRun.exe application from the MPICH system which in turn
runs studentís program in parallel mode (all processes are performed on a local computer);
- passing unique set of input data to each process of a parallel program;
- obtaining the required results from each process and passing them to the master process
for validation and display in the Programming Taskbook window;
- displaying information about run-time errors (including errors that occurred during the execution of MPI
functions) and input-output errors with ranks of the processes in which these errors occurred;
- displaying debug information for each process in a special section of the Programming Taskbook window;
- automatic unloading all running processes from memory even if the parallel program is not responding.
All features listed above allowed student to focus on implementing the solution itself while significantly
accelerating its development and ensuring its reliable testing.
PT for MPI-2 contains 9 task groups. The first five of them contain tasks related mainly to the
basic features of MPI 1.1, the next three ones are connected with new features of MPI 2.0,
and the final group is devoted to parallel matrix multiplication algorithms. Below are
the groups of tasks and their subgroups (the number of tasks is indicated in parentheses):
- MPI1Proc: Processes and their ranks (10);
- MPI2Send: Point-to-point communication (32):
- MPI3Coll: Collective communications (28):
- MPI4Type: Derived datatypes and data packing (22):
- MPI5Comm: Process groups and communicators (32):
- MPI6File: Parallel file input-output (MPI-2) (30):
- MPI7Win: One-sided communications (MPI-2) (30):
- MPI8Inter: Inter-communicators and process creation (MPI-2) (22):
- MPI9Matr: Parallel matrix algorithms (44):
When developing tasks for PT for MPI-2, following new features of the Programming
Taskbook of the late versions were used:
- the Programming Taskbook window with dynamic layout, which allows displaying large task formulations
and large sets of initial and resulting data,
- possibility of adding graphical illustrations to task formulations that is used in the final tasks of
- possibility of creating special program templates for some tasks that is used in the MPI9Matr group.
To completely test the solution, it is sufficient to run the studentís program from the integrated
environment, because once this program is run, it is tested on several sets of input data.
In tasks related to file input-output (the MPI6File group and some tasks of the MPI9Matr
group), the special means of the Programming Taskbook are used that allow to include binary
files as external input/output data and provide visualization of their contents in the
Programming Taskbook window.
When developing the PT for MPI-2, the possibility of displaying debug data obtained from dynamically created
processes was added. This feature is used in the tasks of the MPI8Inter group.
Tools of PT for MPI-2 for running and debugging parallel programs may be used for
development and testing parallel programs which are not connected with a training task.
For that purpose PT for MPI-2 is provided with the additional group MPIDebug of 36 "tasks".
Each task from the MPIDebug group allows to run parallel program with N processes, where N
is a task order number.
PT4 for MPI-2 contains a task designer named PT4TaskMaker that allows to develop new groups of tasks for parallel
programming. Groups should be created as dynamic libraries (dll-files). In order to
make the tasks from the new libraries available for solving, it is enough to copy these libraries
to studentís working directory or to the system directory of the Programming Taskbook. PT4TaskMaker
is designed for development of dynamic libraries in Microsoft Visual Studio in C++
and consists of two files: pt4taskmaker.cpp and pt4taskmaker.h.
Starting from the version 1.1, Programming Taskbook for MPI-2 provides two language
interfaces: Russian and English.
Programming Taskbook for MPI-2 is registered in the Software Register of Russian Federation
on February, 2nd, 2018 (the certificate No. 2018611548).