When I run HPL with multiple options like different problem sizes etc., the benchmark performs multiple runs on the system. In my example:
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
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