NAS Parallel Benchmarks tips

NAS Parallel Benchmarks are some of the most common used set of benchmarks for HPC systems. Description and download can be found here.

One of the problems I came across when trying to compile some of the Fortran codes with gfortran was the following:

randi8.f: In function `randlc':
randi8.f:23:
        data i246m1/X'00003FFFFFFFFFFF'/
Integer at (^) too large

This is due to the size of the random number that is tried to generated and the compiler doesn’t really like. To get it working you can alter the configuration file of the benchmarks and set

RAND   = randi8_safe

from

RAND   = randi8

randi8:

randi8:
     1. Uses integer*8 arithmetic. Compiler must support integer*8
     2. Uses the Fortran 90 IAND intrinsic. Compiler must support

randi8_safe:

 randi8_safe
     1. Uses integer*8 arithmetic
     2. Uses the Fortran 90 IBITS intrinsic.
     3. Does not make any assumptions about overflow. Should always
        work correctly if compiler supports integer*8 and IBITS.

To compile effectively the MPI code, you’ll need to alter the configuration file and set the right compilers: ‘mpicc’ for C and ‘f77’ for Fortran. Along with that, you might need to define the mpi, mpl and pthread libraries in the *MPI_LIB entries. For instance:

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s