Search code examples
parallel-processingmpicluster-computinglinpack

What is the encoded variant in High-Performance Linpack Benchmark?


When I run HPL with multiple options like different problem sizes etc., the benchmark performs multiple runs on the system. In my example:

  • multiple NBMIN
  • multiple BCAST
  • multiple DEPTH
  • etc.

When I then look at the single output file of the run, I don't get how I can differentiate those outputs. In my example, how do I know which variant WR01R2C4 or WR01R2C8 or WR03R2C4 is?

The Output gives a clue with an encoded variant, but I couldn't find any info on how to decode it.

Does anybody know?

Here is a snippet of my output file...

(on another note: is there an option to highlight (i.e. make bold) text inside my codeblock on stackoverflow?)

An explanation of the input/output parameters follows:
T/V    : Wall time / encoded variant.
N      : The order of the coefficient matrix A.
NB     : The partitioning blocking factor.
P      : The number of process rows.
Q      : The number of process columns.
Time   : Time in seconds to solve the linear system.
Gflops : Rate of execution for solving the linear system.

The following parameter values will be used:

N      :    9000 
NB     :     640 
PMAP   : Row-major process mapping
P      :       3 
Q      :       3 
PFACT  :   Crout 
NBMIN  :       4        8 
NDIV   :       2 
RFACT  :   Right 
BCAST  :  1ringM   2ringM 
DEPTH  :       0        1 
SWAP   : Mix (threshold = 60)
L1     : transposed form
U      : transposed form
EQUIL  : yes
ALIGN  : 8 double precision words

--------------------------------------------------------------------------------

- The matrix A is randomly generated for each test.
- The following scaled residual check will be computed:
      ||Ax-b||_oo / ( eps * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )
- The relative machine precision (eps) is taken to be               1.110223e-16
- Computational tests pass if scaled residuals are less than                16.0

================================================================================
T/V                N    NB     P     Q               Time                 Gflops
--------------------------------------------------------------------------------
WR01R2C4        9000   640     3     3               9.42             5.1609e+01
HPL_pdgesv() start time Mon Nov 29 13:12:56 2021

HPL_pdgesv() end time   Mon Nov 29 13:13:05 2021

--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)=   2.34317645e-03 ...... PASSED
================================================================================
T/V                N    NB     P     Q               Time                 Gflops
--------------------------------------------------------------------------------
WR01R2C8        9000   640     3     3               9.35             5.2011e+01
HPL_pdgesv() start time Mon Nov 29 13:13:06 2021

HPL_pdgesv() end time   Mon Nov 29 13:13:15 2021

--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)=   2.50831382e-03 ...... PASSED
================================================================================
T/V                N    NB     P     Q               Time                 Gflops
--------------------------------------------------------------------------------
WR03R2C4        9000   640     3     3               9.32             5.2164e+01
HPL_pdgesv() start time Mon Nov 29 13:13:16 2021

HPL_pdgesv() end time   Mon Nov 29 13:13:25 2021

Solution

  • If it isn't documented, just look into the source code. In testing/ptest/HPL_pdtest.c you'll find the following line:

             HPL_fprintf( TEST->outfp,
                 "W%c%1d%c%c%1d%c%1d%12d %5d %5d %5d %18.2f     %18.3e\n",
                 ( GRID->order == HPL_ROW_MAJOR ? 'R' : 'C' ),
                 ALGO->depth, ctop, crfact, ALGO->nbdiv, cpfact, ALGO->nbmin,
                 N, NB, nprow, npcol, wtime[0], Gflops );
    

    Hence, the format of the encoded variant is:

    WR01R2C4
    ^^^^^^^^
    ||||||||
    |||||||+--- NBMIN
    ||||||+---- PFACT (C = Crout, L = Left, R = Right)
    |||||+----- NBDIV
    ||||+------ RFACT (see PFACT)
    |||+------- BCAST (0 = 1ring, 1 = 1ringM, 2 = 2ring, 3 = 2ringM, 4 = long)
    ||+-------- DEPTH
    |+--------- PMAP (R = Row-major, C = Column-major)
    +---------- always W