NAS Parallel Benchmarks Changes
Modifications are listed in order of most recent versions.
NPB 3.4.4
This is a bug-fix release with changes in NPB3.4-MPI:
- Fixed the missing free_space code for the VEC version of LU
- Replaced the use of deprecated MPI-1 functions with equivalent MPI-2 functions in BT-IO
- Fixed the MPI_dummy library build for the F08 make option
- Fixed a potential use of uninitialized variables in DT
- Moved the declaration of variables norm_temp1&2 into module in CG to avoid unintended compiler optimizations
NPB 3.4.4-MZ
This is a minor bug-fix release.
- NPB3.4-MZ-MPI: fixed the MPI_dummy library build to work with the F08 option, no other changes.
NPB 3.4.3
The main change is to support the MPI module interface (mpi or mpi_f08) for Fortran codes in NPB3.4-MPI. A make option "F08=f" was included to force the use of the old "mpif.h" approach if needed.
Other changes:
- Changed the frequency of printing norm values in CG from every iteration to every 5 iterations (to be more consistent with other benchmarks).
- Modified the way of defining the "ntotal_f" value in FT to work around issues in some compilers.
- Free dynamically allocated memory after its use.
NPB 3.4.3-MZ
The main change is to support the MPI module interface (mpi or mpi_f08) for Fortran codes in NPB3.4-MZ-MPI. A make option "F08=f" was included to force the use of the old "mpif.h" approach if needed.
Other changes:
- Free dynamically allocated memory after its use.
NPB 3.4.2-MZ
This is a bug-fix release.
- Change in NPB3.4-MZ-MPI/LU-MZ
- Fixed a bug in setting up proc_num_threads when the x-dimension partition is involved for runs that use more than 16 (number of zones) MPI ranks.
NPB 3.4.2
- Verification change for the EP benchmark (NPB-MPI and NPB-OMP):
- No. of Gaussian pairs is now part of the verification to broaden the coverage.
- A new scheme has been implemented to use the absolute values of (X,Y) in calculating (SX,SY) to mitigate the numeric sensitivity for verification. There is no change in the number of operations.
- Change in NPB-MPI:
- Add back the VEC versions of BT and LU and make them available via make option "VERSION=vec".
- Minor format fix in common/print_results.f90.
- Fixed a bug in the BT-IO benchmark that can cause integer overflow in CLASS=D or larger problems. Setting FORTRAN_REC_SIZE in make.def is no longer required.
NPB 3.4.1
- Changed Fortran sources from fixed form to free form.
-
Change in the NPB-MPI version:
- Fixed an inconsistency in enforcing process count requirement in different benchmarks. The environment variable NPB_NPROCS_STRICT can be used to turn off the enforcement.
-
Change in the NPB-OMP version:
- Fixed the report of Fortran compiler flag (F77 -> FC).
- The blocking factor for FT can now be set via make option.
NPB 3.4.1-MZ
This release contains minor changes that have no impact on functionality.
- Changed Fortran sources from fixed form to free form.
- NPB3.4-MZ-MPI: Included a few "dummy" MPI routines to support compilation and linking without an MPI library.
- NPB3.4-MZ-OMP: Document clarification.
NPB 3.4
- New modifications and improvements:
- The Class F problem has been added to seven of the benchmarks (BT, SP, LU, CG, MG, FT, and EP).
- The Class E problem has been added to the IS benchmark.
- Use Fortran modules and allocatable arrays to define and manage global data (to replace common blocks) and the Fortran 2003 IEEE arithmetic function to catch the NaN condition during verification.
- Updates to the MPI version:
- Because of dynamic memory allocation, compilations for different process counts are no longer necessary. The number of processes is solely determined and checked at runtime.
- Relaxed the number of processes allowed for the LU benchmark.
- Updates to the OMP version:
- Improved loop-level parallelism with the use of the OpenMP COLLAPSE clause.
- The thread synchronization in the pipelined version of LU was changed to use ATOMIC read/write, available from OpenMP 3.0.
- Included a version of LU that uses the DOACROSS feature from OpenMP 4.0.
- Included a version of BT and SP to use cache blocking in the solver.
- Included a version of UA to use array reduction for atomic updates.
- Other changes:
- The environment variable NPB_TIMER_FLAG is now used to enable additional timers. This method supersedes the use of the file "timer.flag" in the working directory.
- The MPIF77 or F77 flag in make.def is renamed to MPIFC or FC to reflect the fact that a Fortran 90 or newer compiler is required.
- The serial version of NPBs (NPB-SER) is no longer included in the distribution. The same functionality can be achieved by the OpenMP version compiled with OpenMP disabled.
NPB 3.4-MZ
- Use Fortran modules and allocatable arrays to define and manage global data (to replace common blocks) and the Fortran 2003 IEEE arithmetic function to catch the NaN condition during verification.
- Use the "COLLAPSE" clause to improve parallelism for OpenMP.
- The thread synchronization in LU-MZ was changed to use ATOMIC read/write available from OpenMP 3.0.
- Updates to NPB 3.4-MZ-MPI:
- Because of dynamic memory allocation, it is no longer necessary to compile for each process count.
- For LU-MZ, domain decomposition has been applied to the I dimension of zones besides the zone dimension to improve the MPI scalability of this code. This change requires an MPI library to support MPI_THREAD_MULTIPLE when the code is running in the hybrid mode.
- Updates to NPB 3.4-MZ-OMP:
- Selection of nested parallelism is now controlled by specifying multiple values to the environment variable OMP_NUM_THREADS.
- Reduced the dimension for working arrays in SP-MZ to improve cache performance.
- Other changes:
- The environment variable NPB_TIMER_FLAG is now used to enable additional timers. This method supersedes the use of the file "timer.flag" in the working directory.
- The F77 flag in make.def is renamed to FC to reflect the fact that a Fortran 90 or newer compiler is required.
- The serial version of NPB-MZ (NPB-MZ-SER) is no longer included in the distribution. The same functionality can be achieved by the OpenMP version compiled with OpenMP disabled.
NPB 3.3.1
This is a bug fixing release of NPB 3.3.
- Bug fixes:
- Fixed a non-portable way of broadcasting input parameters in MPI/FT.
- Fixed access to out-of-bound array elements in OMP/DC and SER/DC.
- Fixed use of uninitialized array in OMP/UA and SER/UA.
- Other changes:
- Code clean up in MPI/LU: avoid using MPI_ANY_SOURCE and delete unused codes.
- Additional timers are included for most benchmarks in the MPI versions and for MG,UA in the OMP and SER versions.
- Executables produced for OMP and SER now use ".x" as an extension.
NPB 3.3.1-MZ
- Fixed a missing argument in calling MPI_Abort() in the MPI versions.
- Implemented a simple block distribution of zones to MPI processes for MPI/SP-MZ and MPI/LU-MZ. This might improve performance of the two benchmarks with equal-size zones. The old bin-packing scheme can still be selected with setting the environment variable NPB_MZ_BLOAD to 2.
NPB 3.3
- New modifications and improvements:
- The Class E problem has been introduced in seven of the benchmarks (BT, SP, LU, CG, MG, FT, and EP) to stress larger size parallel computers.
- The Class D problem has been added to the IS benchmark in all three implementations. It requires the compiler support of 64-bit "long" type in C. The MPI version of IS now allows runs up to 1024 processes.
- The Bucket Sort option (USE_BUCKETS) has been added to the OpenMP version of IS and made as the default.
- Introduction of the "twiddle" array in the OpenMP FT benchmark to improve performance.
- Merge the vector codes for the BT and LU benchmarks into this release.
- Updates to BTIO (MPI/BT with IO subtypes):
- Added I/O stats (I/O timing, data size written, I/O data rate).
- Added an option for interleaving reads between writes through the inputbt.data file. Although the data file size would be smaller as a result, the total amount of data written is still the same.
- Bug fixes:
- Fixed a verification failure in MPI/FT for cases where NX/=NY and the 2D decomposition are used.
- Fixed an output printing format problem in MPI/FT occurred when the number of processes >= 1000.
- Fixed a performance regression in MPI/SP due to improper padding of array dimensions.
- Fixed invalid access of zero-length array elements in DC, made the benchmark output consistent with NPBs.
- Fixed a data race in OMP/UA.
- Fixed missing variable declarations for the Bucket sort option in SER/IS.
- Fixed use of an uninitialized variable in MPI/sys/setparams.c.
- Other changes:
- The default value for collbuf_nodes in the BT I/O benchmark is now set to 0, indicating no file hints will be used. The setting can be changed by using the "inputbt.data" file.
- The hyperplane version of LU (LU-HP) is no longer included in the distribution. Download NPB3.2.1 if needed.
NPB 3.3-MZ
- Inclusion of the nested OpenMP implementation (NPB3.3-MZ-OMP) to replace the SMP+OpenMP implementation.
- Merge vector codes into the standard distribution. The vector codes can be selected with the VERSION=VEC option during compilation.
- Performance improvement to SP-MZ.
NPB 3.2.1
This is a bug fixing release of NPB 3.2.
- MPI Version Changes:
- Removed a duplicated statement for writing FT parameters.
- Included the I/O verification for BT SUBTYPE=EPIO.
- Fixed wrong data type used for communicating integers in LU.
- Fixed an incorrect calculation of parameter "nr" for MG, which caused run-time failure for NPROCS >= 512.
- Fixed a problem of mismatching message tags in MG.
- OpenMP Version Changes:
- Use THREADPRIVATE for working array storage "in EP".
- Fixed a data flush bug for pipeline in LU.
- Reduced stack space usage in IS.
- Use locks for atomic updates in UA.
NPB 3.2-MZ
- Introduced two new classes of problem: E and F.
- Added "SCHEDULE(STATIC)" to the OpenMP layer of hybrid versions.
- Minor optimization to the communication buffers in MPI versions.
- Fixed a data flush bug for pipeline in LU-MZ.
NPB 3.2
- DC version in NPB 3.2-SER was converted to C from C++ (Classes S, W, A, B). sys/setparams.c file was changed appropriately.
- OpenMP version of DC was added to NPB3.2-OMP.
- Data Traffic benchmark DT was added to NPB3.2-MPI.
GridNPB 3.1
- Introducing Globus version of computational-grid benchmarks.
- Grid NPB 3.0 release (11.19.02).
GridNPB 3.0
- Introducing computational-grid benchmarks.
NPB 3.1
General:
- Used relative instead of absolute error for MG and CG verification.
- Made improvements and fixed bug in MG:
- Redefined Class W: {(64x64x64),40 iters} -> {(128x128x128), 4 iters}.
- Fixed incorrect verification values for Classes A and C.
- Added dummy iteration before time step loop in LU for consistency with other benchmarks.
- Fixed race in 'make suite'.
- Fixed dependence on make.def for files in subdirectory 'common'.
- Optimized BT memory usage.
- Merged NPB2.4-MPI into NPB3.1.
NPB 3.1-MPI
- Fixed bug in CG for running on large numbers of processes.
NPB 3.1-SER and NPB 3.1-OpenMP
- Added Unstructured Adaptive (UA) benchmark, measuring the effect of irregular, continually changing memory accesses.
- Added serial version of Data Cube (DC) benchmark, based on a data mining application.
- Added Class D.
- Improved LU and LU-HP: reduced memory use for 'tv' variable, improved memory access for variables 'a,b,c,d' in LU-HP.
- Cleaned up matrix initialization (makea) and reduced memory use.
- Added 'LU-HP' as a valid benchmark option in makefiles.
NPB 3.1-OpenMP Only
- Included hyper-plane version of LU benchmark: LU-HP.
- Removed need for dummy 'omp_lib_dum' library for compilation without an OpenMP compiler.
- Parallelized initialization part of MG.
- Parallelized matrix initialization (makea) in CG.
- Cleaned up SP to make structure more consistent with serial version.
NPB 3.1 - MZ
- Allow variable number of threads for individual processes and define processor group for each process. Versions affected: all parallel versions.
- Report total number of threads (instead of threads-per-process). Versions affected: all parallel versions.
- Use accurate surface term in MFLOPS calculation to take into account non-square zone faces. Versions affected: all.
- Improvements for LU-MZ:
- Added one SSOR iteration before timing loop to touch all data and code.
- Improved the memory usage for array 'tv.'
- Made rhs and erhs more cache-friendly.
- Versions affected: all.
- Print built-in timers for all processes Versions affected: all parallel versions.
NPB 2.4
- Added BT I/O benchmark.
- Added Class D for all benchmarks, except IS.
- Changed initialization in FT to avoid integer overflow in Class D.
- Reduced FT memory size by removing the "ex" table used in the "evolve" routine.
NPB 2.3
- Added CG.
- Defined Class W for small memory systems (under 32MB).
- Released serial versions consistent with parallel code (08/18/97).
NPB 2.2
- Added IS in C.
- Modified FT so that it can be run on a number of processors larger than the last array dimension.
- Added EP.
- Encoded CLASS C size and verification numbers.
- Removed include file mpifrag.f containing executable statements.
- Added different versions of random number generators.