Skip to content

Commit

Permalink
1. Code cleanup.
Browse files Browse the repository at this point in the history
2. Fix for #7 issue.
3. Readme update.
  • Loading branch information
ykiryano committed Sep 13, 2018
1 parent 27b7580 commit f910b55
Show file tree
Hide file tree
Showing 10 changed files with 229 additions and 219 deletions.
74 changes: 43 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,23 +65,30 @@ What's New
New in Intel(R) MPI Benchmarks 2019
----------------------------------------
- New IMB-MT benchmarks.
The benchmarks implement the multithreaded version of some of the IMB-MPI1
benchmarks using the OpenMP* paradigm.
The benchmarks implement the multi-threaded version of IMB-MPI1 benchmarks
using the OpenMP* paradigm.
- New benchmarks infrastructure implemented in C++.
The IMB-MPI1, IMB-RMA and IMB-MT implementation is now based on the new C++
infrastructure (IMB-NBC, IMB-EXT and IMB-IO still use the legacy one).
The legacy infrastructure is preserved in src_c subdirectory.
- Changes in syntax for the -include and -exclude options.
The IMB-MPI1, IMB-RMA, IMB-NBC, IMB-EXT, IMB-IO, and IMB-MT implementation
is now based on the new C++ infrastructure.
The legacy infrastructure is preserved in the src_c subdirectory.
- Syntax changes for the -include and -exclude options.
Benchmarks to include and exclude now must be separated by a comma rather
than a space. Benchmarks to launch can be separated by a comma or a space.
- Iteration policy can no longer be set with the -iter option. Use -iter_policy
instead.
- Added a new option -noheader for IMB-MT to disable printing of benchmark headers.
- Iteration policy can no longer be set with the -iter option. Use the
-iter_policy instead.
- Added a new benchmark BarrierMT for IMB-MT.
- Added new options:
- -noheader for IMB-MT disables printing of benchmark headers.
- -data_type for IMB-MPI1 specifies the type to be used for communication.
- -red_data_type for IMB-MPI1 specifies the type to be used for reduction.
- -contig_type for IMB-MPI1 specifies the type to be used.
- -zero_size for IMB-MPI1 disable runs with message size 0.
- Bug fixes.
- Code cleanup.

New in Intel(R) MPI Benchmarks 2018 Update 1
--------------------------------------------
- Support for the Microsoft* Visual Studio* 2017. Microsoft* Visual Studio* 2012
- Support for the Microsoft* Visual Studio* 2017. Microsoft* Visual Studio* 2012
support is removed.

New in Intel(R) MPI Benchmarks 2018
Expand All @@ -94,15 +101,16 @@ New in Intel(R) MPI Benchmarks 2018
New in Intel(R) MPI Benchmarks 2017 Update 1
--------------------------------------------
- Added a new option -imb_barrier.
- The PingPong and PingPing benchmarks are now equivalent to PingPongSpecificSource
and PingPingSpecificSource, respectively. Their old behavior (with MPI_ANY_SOURCE)
is available in PingPongAnySource and PingPingAnySource.
- The PingPong and PingPing benchmarks are now equivalent to
PingPongSpecificSource and PingPingSpecificSource, respectively. Their old
behavior (with MPI_ANY_SOURCE) is available in PingPongAnySource and
PingPingAnySource.

New in Intel(R) MPI Benchmarks 2017
-------------------------------------------
- Changed default values for the -sync and -root_shift options.
- Support for the Microsoft* Visual Studio* 2015. Microsoft* Visual Studio* 2010
support is removed.
support is removed.
- Bug fixes.

New in Intel(R) MPI Benchmarks 4.1 Update 1
Expand All @@ -112,11 +120,13 @@ New in Intel(R) MPI Benchmarks 4.1 Update 1
New in Intel(R) MPI Benchmarks 4.1
-------------------------------------------
- Introduced two new benchmarks: uniband and biband.
- Introduced two new command-line options for collective benchmarks: -sync and -root_shift.
- Introduced two new command-line options for collective benchmarks: -sync and
-root_shift.

New in Intel(R) MPI Benchmarks 4.0 Update 2
-------------------------------------------
- Fix of a bug where benchmarking was failing on certain message lengths with -DCHECK.
- Fix of a bug where benchmarking was failing on certain message lengths with
-DCHECK.

New in Intel(R) MPI Benchmarks 4.0 Update 1
-------------------------------------------
Expand All @@ -125,19 +135,20 @@ New in Intel(R) MPI Benchmarks 4.0 Update 1
New in Intel(R) MPI Benchmarks 4.0
-------------------------------------------
- Introduced new components IMB-NBC and IMB-RMA that conform to the MPI-3.0
standard.
Note: These components can only be built and used with MPI libraries that conform
to the MPI-3 standard.
standard.
Note: These components can only be built and used with MPI libraries that
conform to the MPI-3 standard.
- Added new targets to the Linux* OS Makefiles:
- NBC for building IMB-NBC
- RMA for building IMB-RMA
- Updated Microsoft* Visual Studio* solutions to include the IMB-NBC and
IMB-RMA targets.
- Updated Microsoft* Visual Studio* solutions to include the IMB-NBC and IMB-RMA
targets.
- Consolidated all first-use documents in ReadMe_IMB.txt to improve usability.
- Introduced a new feature to set the appropriate algorithm for automatic calculation
of iterations. The algorithm can be set through the -iter and -iter_policy options.
- Introduced a new feature to set the appropriate algorithm for automatic
calculation of iterations. The algorithm can be set through the -iter and
-iter_policy options.
- Support for the Microsoft* Visual Studio* 2013. Microsoft* Visual Studio* 2008
support is removed.
support is removed.

--------------------
Command-Line Control
Expand All @@ -154,17 +165,18 @@ command-line parameters.
-----------------------------------------
Building Instructions for Linux* OS
-----------------------------------------
1) Set the CC variable to point to the appropriate compiler wrapper, mpiicc or mpicc.
1) Set the CC variable to point to the appropriate compiler wrapper, mpiicc or
mpicc.
2) Run one or more Makefile commands below:

make clean - remove legacy binary object files and executable files
make MPI1 - build the executable file for the IMB-MPI1 component
make EXT - build the executable file for one-sided communications benchmarks
make IO - build the executable file for I/O benchmarks
make NBC - build the executable file for IMB-NBC benchmarks
make RMA - build the executable file for IMB-RMA benchmarks
make IMB-MPI1 - build the executable file for the IMB-MPI1 component
make IMB-EXT - build the executable file for one-sided communications benchmarks
make IMB-IO - build the executable file for I/O benchmarks
make IMB-NBC - build the executable file for IMB-NBC benchmarks
make IMB-RMA - build the executable file for IMB-RMA benchmarks
make all - build all executable files available

3) Run the benchmarks as follows:

mpirun -n <number_of_processes> IMB-<component> [arguments]
Expand Down
82 changes: 43 additions & 39 deletions ReadMe_IMB.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,30 +62,29 @@ files and folders appear on your system:
----------
What's New
----------
New in Intel(R) MPI Benchmarks 2019 Beta
New in Intel(R) MPI Benchmarks 2019
----------------------------------------
- Intel(R) MPI Benchmarks 2019 (Beta) are now available for Windows*.
- Added a new option -noheader for IMB-MT to disable printing of benchmark headers.
- Added a new benchmark BarrierMT for IMB-MT.
- Bug fixes.

New in Intel(R) MPI Benchmarks 2019 Technical Preview
-----------------------------------------------------
- New IMB-MT benchmarks.
The benchmarks implement the multithreaded version of some of the IMB-MPI1
benchmarks using the OpenMP* paradigm.

The benchmarks implement the multi-threaded version of IMB-MPI1 benchmarks
using the OpenMP* paradigm.
- New benchmarks infrastructure implemented in C++.
The IMB-MPI1, IMB-RMA and IMB-MT implementation is now based on the new C++
infrastructure (IMB-NBC, IMB-EXT and IMB-IO still use the legacy one).
The legacy infrastructure is preserved in legacy subdirectory.

- Changes in syntax for the -include and -exclude options.
The IMB-MPI1, IMB-RMA, IMB-NBC, IMB-EXT, IMB-IO, and IMB-MT implementation
is now based on the new C++ infrastructure.
The legacy infrastructure is preserved in the src_c subdirectory.
- Syntax changes for the -include and -exclude options.
Benchmarks to include and exclude now must be separated by a comma rather
than a space. Benchmarks to launch can be separated by a comma or a space.

- Iteration policy can no longer be set with the -iter option. Use -iter_policy
instead.
- Iteration policy can no longer be set with the -iter option. Use the
-iter_policy instead.
- Added a new benchmark BarrierMT for IMB-MT.
- Added new options:
- -noheader for IMB-MT disables printing of benchmark headers.
- -data_type for IMB-MPI1 specifies the type to be used for communication.
- -red_data_type for IMB-MPI1 specifies the type to be used for reduction.
- -contig_type for IMB-MPI1 specifies the type to be used.
- -zero_size for IMB-MPI1 disable runs with message size 0.
- Bug fixes.
- Code cleanup.

New in Intel(R) MPI Benchmarks 2018 Update 1
--------------------------------------------
Expand All @@ -102,15 +101,16 @@ New in Intel(R) MPI Benchmarks 2018
New in Intel(R) MPI Benchmarks 2017 Update 1
--------------------------------------------
- Added a new option -imb_barrier.
- The PingPong and PingPing benchmarks are now equivalent to PingPongSpecificSource
and PingPingSpecificSource, respectively. Their old behavior (with MPI_ANY_SOURCE)
is available in PingPongAnySource and PingPingAnySource.
- The PingPong and PingPing benchmarks are now equivalent to
PingPongSpecificSource and PingPingSpecificSource, respectively. Their old
behavior (with MPI_ANY_SOURCE) is available in PingPongAnySource and
PingPingAnySource.

New in Intel(R) MPI Benchmarks 2017
-------------------------------------------
- Changed default values for the -sync and -root_shift options.
- Support for the Microsoft* Visual Studio* 2015. Microsoft* Visual Studio* 2010
support is removed.
support is removed.
- Bug fixes.

New in Intel(R) MPI Benchmarks 4.1 Update 1
Expand All @@ -120,11 +120,13 @@ New in Intel(R) MPI Benchmarks 4.1 Update 1
New in Intel(R) MPI Benchmarks 4.1
-------------------------------------------
- Introduced two new benchmarks: uniband and biband.
- Introduced two new command-line options for collective benchmarks: -sync and -root_shift.
- Introduced two new command-line options for collective benchmarks: -sync and
-root_shift.

New in Intel(R) MPI Benchmarks 4.0 Update 2
-------------------------------------------
- Fix of a bug where benchmarking was failing on certain message lengths with -DCHECK.
- Fix of a bug where benchmarking was failing on certain message lengths with
-DCHECK.

New in Intel(R) MPI Benchmarks 4.0 Update 1
-------------------------------------------
Expand All @@ -133,19 +135,20 @@ New in Intel(R) MPI Benchmarks 4.0 Update 1
New in Intel(R) MPI Benchmarks 4.0
-------------------------------------------
- Introduced new components IMB-NBC and IMB-RMA that conform to the MPI-3.0
standard.
Note: These components can only be built and used with MPI libraries that conform
to the MPI-3 standard.
standard.
Note: These components can only be built and used with MPI libraries that
conform to the MPI-3 standard.
- Added new targets to the Linux* OS Makefiles:
- NBC for building IMB-NBC
- RMA for building IMB-RMA
- Updated Microsoft* Visual Studio* solutions to include the IMB-NBC and
IMB-RMA targets.
- Updated Microsoft* Visual Studio* solutions to include the IMB-NBC and IMB-RMA
targets.
- Consolidated all first-use documents in ReadMe_IMB.txt to improve usability.
- Introduced a new feature to set the appropriate algorithm for automatic calculation
of iterations. The algorithm can be set through the -iter and -iter_policy options.
- Introduced a new feature to set the appropriate algorithm for automatic
calculation of iterations. The algorithm can be set through the -iter and
-iter_policy options.
- Support for the Microsoft* Visual Studio* 2013. Microsoft* Visual Studio* 2008
support is removed.
support is removed.

--------------------
Command-Line Control
Expand All @@ -162,15 +165,16 @@ command-line parameters.
-----------------------------------------
Building Instructions for Linux* OS
-----------------------------------------
1) Set the CC variable to point to the appropriate compiler wrapper, mpiicc or mpicc.
1) Set the CC variable to point to the appropriate compiler wrapper, mpiicc or
mpicc.
2) Run one or more Makefile commands below:

make clean - remove legacy binary object files and executable files
make MPI1 - build the executable file for the IMB-MPI1 component
make EXT - build the executable file for one-sided communications benchmarks
make IO - build the executable file for I/O benchmarks
make NBC - build the executable file for IMB-NBC benchmarks
make RMA - build the executable file for IMB-RMA benchmarks
make IMB-MPI1 - build the executable file for the IMB-MPI1 component
make IMB-EXT - build the executable file for one-sided communications benchmarks
make IMB-IO - build the executable file for I/O benchmarks
make IMB-NBC - build the executable file for IMB-NBC benchmarks
make IMB-RMA - build the executable file for IMB-RMA benchmarks
make all - build all executable files available

3) Run the benchmarks as follows:
Expand Down
34 changes: 18 additions & 16 deletions src_c/IMB_init_transfer.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,31 +150,33 @@ In/out variables:

if (Bmark->fpointer == indv_block || Bmark->fpointer == shared ||
Bmark->fpointer == explic) {
int bllen[3];
int bllen[1];

MPI_Aint displ[3];
MPI_Datatype types[3];
MPI_Aint displ[1];
MPI_Datatype types[1];

bllen[0] = 1;
displ[0] = 0;
types[0] = MPI_LB;

bllen[1] = baslen;
displ[1] = pos1;
types[1] = c_info->etype;

bllen[2] = 1;
displ[2] = size;
types[2] = MPI_UB;
bllen[0] = baslen;
displ[0] = pos1;
types[0] = c_info->etype;

if (Bmark->fpointer == indv_block) {
/* July 2002 fix V2.2.1: handle empty view case separately */
if (baslen > 0) {
MPI_Datatype new_type;
/* end change */
ierr = MPI_Type_create_struct(3, bllen, displ, types, &c_info->view);
ierr = MPI_Type_create_struct(1, bllen, displ, types, &new_type);
IMB_err_hand(1, ierr);
ierr = MPI_Type_commit(&new_type);
IMB_err_hand(1, ierr);

ierr = MPI_Type_create_resized(new_type, 0, size, &c_info->view);
IMB_err_hand(1, ierr);
ierr = MPI_Type_commit(&c_info->view);
IMB_err_hand(1, ierr);

ierr = MPI_Type_free(&new_type);
IMB_err_hand(1, ierr);

c_info->filetype = c_info->view;

/* July 2002 fix V2.2.1: handle empty case */
Expand All @@ -189,7 +191,7 @@ In/out variables:
if (Bmark->access == get)
IMB_set_buf(c_info, c_info->File_rank, 1, 0, 0, (baslen > 0) ? baslen - 1 : 0);

c_info->split.Locsize = bllen[1];
c_info->split.Locsize = bllen[0];
c_info->split.Offset = pos1;
c_info->split.Totalsize = size;
}
Expand Down
2 changes: 1 addition & 1 deletion src_c/IMB_mem_manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ In/out variables:


/***************************************************************************/
void IMB_alloc_buf(struct comm_info* c_info, char* where, size_t s_len,
void IMB_alloc_buf(struct comm_info* c_info, char* where, size_t s_len,
size_t r_len) {
/*
Expand Down
6 changes: 3 additions & 3 deletions src_c/IMB_reduce.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,8 @@ Output variables:

for (i = 0; i < ITERATIONS->n_sample; i++) {
t1 = MPI_Wtime();
ierr = MPI_Reduce((char*)c_info->s_buffer + i%ITERATIONS->s_cache_iter*ITERATIONS->s_offs,
(char*)c_info->r_buffer + i%ITERATIONS->r_cache_iter*ITERATIONS->r_offs,
ierr = MPI_Reduce((char*)c_info->s_buffer + i % ITERATIONS->s_cache_iter * ITERATIONS->s_offs,
(char*)c_info->r_buffer + i % ITERATIONS->r_cache_iter * ITERATIONS->r_offs,
s_num,
c_info->red_data_type, c_info->op_type,
root,
Expand All @@ -159,7 +159,7 @@ Output variables:

#ifdef CHECK
if (c_info->rank == root) {
CHK_DIFF("Reduce", c_info, (char*)c_info->r_buffer + i%ITERATIONS->r_cache_iter*ITERATIONS->r_offs, 0,
CHK_DIFF("Reduce", c_info, (char*)c_info->r_buffer + i % ITERATIONS->r_cache_iter*ITERATIONS->r_offs, 0,
size, size, asize,
put, 0, ITERATIONS->n_sample, i,
-1, &defect);
Expand Down
Loading

0 comments on commit f910b55

Please sign in to comment.