diff --git a/var/ramble/repos/builtin/applications/hpl/application.py b/var/ramble/repos/builtin/applications/hpl/application.py index 28803264b..01471183b 100644 --- a/var/ramble/repos/builtin/applications/hpl/application.py +++ b/var/ramble/repos/builtin/applications/hpl/application.py @@ -11,126 +11,184 @@ import math +def pad_value(val, desc): + return ('{:<14}'.format(val) + desc) + + class Hpl(SpackApplication): '''Define HPL application''' name = 'hpl' maintainers('douglasjacobsen', 'dodecatheon') - tags('benchmark-app', 'mini-app', 'benchmark') + tags('benchmark-app', 'benchmark', 'linpack') default_compiler('gcc9', spack_spec='gcc@9.3.0') - software_spec('impi2018', spack_spec='intel-mpi@2018.4.274') + software_spec('impi_2018', spack_spec='intel-mpi@2018.4.274') - software_spec('hpl', - spack_spec='hpl@2.3 +openmp', - compiler='gcc9') + software_spec('hpl', spack_spec='hpl@2.3 +openmp', compiler='gcc9') required_package('hpl') executable('execute', 'xhpl', use_mpi=True) workload('standard', executables=['execute']) + workload('calculator', executables=['execute']) - workload_variable('output_file', default='HPL.out output file name (if any)', + workload_variable('output_file', + default=pad_value('HPL.out', 'output file name (if any)'), description='Output file name (if any)', workloads=['standard']) - workload_variable('device_out', default='6 device out (6=stdout,7=stderr,file)', + workload_variable('device_out', + default=pad_value('6', 'device out (6=stdout,7=stderr,file)'), description='Output device', workloads=['standard']) - workload_variable('N-Ns', default='4 # of problems sizes (N)', + workload_variable('N-Ns', + default=pad_value('4', 'Number of problems sizes (N)'), description='Number of problems sizes', workloads=['standard']) - workload_variable('Ns', default='29 30 34 35 Ns', + workload_variable('Ns', + default=pad_value('29 30 34 35', 'Ns'), description='Problem sizes', workloads=['standard']) - workload_variable('N-NBs', default='4 # of NBs', + workload_variable('N-NBs', + default=pad_value('4', 'Number of NBs'), description='Number of NBs', workloads=['standard']) - workload_variable('NBs', default='1 2 3 4 NBs', + workload_variable('NBs', + default=pad_value('1 2 3 4', 'NBs'), description='NB values', workloads=['standard']) - workload_variable('PMAP', default='0 PMAP process mapping (0=Row-,1=Column-major)', + workload_variable('PMAP', + default=pad_value('0', 'PMAP process mapping (0=Row-,1=Column-major)'), description='PMAP Process mapping. (0=Row-, 1=Column-Major)', workloads=['standard']) - workload_variable('N-Grids', default='3 # of process grids (P x Q)', + workload_variable('N-Grids', + default=pad_value('3', 'Number of process grids (P x Q)'), description='Number of process grids (P x Q)', workloads=['standard']) - workload_variable('Ps', default='2 1 4 Ps', + workload_variable('Ps', + default=pad_value('2 1 4', 'Ps'), description='P values', workloads=['standard']) - workload_variable('Qs', default='2 4 1 Qs', + workload_variable('Qs', + default=pad_value('2 4 1', 'Qs'), description='Q values', workloads=['standard']) - workload_variable('threshold', default='16.0 threshold', + workload_variable('threshold', + default=pad_value('16.0', 'threshold'), description='Residual threshold', workloads=['standard']) - workload_variable('NPFACTS', default='3 # of panel fact', + workload_variable('NPFACTs', + default=pad_value('3', 'Number of PFACTs, panel fact'), description='Number of PFACTs', workloads=['standard']) - workload_variable('PFACTS', default='0 1 2 PFACTs (0=left, 1=Crout, 2=Right)', + workload_variable('PFACTs', + default=pad_value('0 1 2', 'PFACTs (0=left, 1=Crout, 2=Right)'), description='PFACT Values', workloads=['standard']) - workload_variable('N-NBMINs', default='2 # of recursive stopping criterium', + workload_variable('N-NBMINs', + default=pad_value('2', 'Number of NBMINs, recursive stopping criteria'), description='Number of NBMINs', workloads=['standard']) - workload_variable('NBMINs', default='2 4 NBMINs (>= 1)', + workload_variable('NBMINs', + default=pad_value('2 4', 'NBMINs (>= 1)'), description='NBMIN values', workloads=['standard']) - workload_variable('N-NDIVs', default='1 # of panels in recursion', + workload_variable('N-NDIVs', + default=pad_value('1', 'Number of NDIVs, panels in recursion'), description='Number of NDIVs', workloads=['standard']) - workload_variable('NDIVs', default='2 NDIVs', + workload_variable('NDIVs', + default=pad_value('2', 'NDIVs'), description='NDIV values', workloads=['standard']) - workload_variable('N-RFACTs', default='3 # of recursive panel fact.', + workload_variable('N-RFACTs', + default=pad_value('3', 'Number of RFACTs, recursive panel fact.'), description='Number of RFACTs', workloads=['standard']) - workload_variable('RFACTs', default='0 1 2 RFACTs (0=left, 1=Crout, 2=Right)', + workload_variable('RFACTs', + default=pad_value('0 1 2', 'RFACTs (0=left, 1=Crout, 2=Right)'), description='RFACT values', workloads=['standard']) - workload_variable('N-BCASTs', default='1 # of broadcast', + workload_variable('N-BCASTs', + default=pad_value('1', 'Number of BCASTs, broadcast'), description='Number of BCASTs', workloads=['standard']) - workload_variable('BCASTs', default='0 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)', + workload_variable('BCASTs', + default=pad_value('0', 'BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)'), description='BCAST values', workloads=['standard']) - workload_variable('N-DEPTHs', default='1 # of lookahead depth', + workload_variable('N-DEPTHs', + default=pad_value('1', 'Number of DEPTHs, lookahead depth'), description='Number of DEPTHs', workloads=['standard']) - workload_variable('DEPTHs', default='0 DEPTHs (>=0)', + workload_variable('DEPTHs', + default=pad_value('0', 'DEPTHs (>=0)'), description='DEPTH values', workloads=['standard']) - workload_variable('SWAP', default='2 SWAP (0=bin-exch,1=long,2=mix)', + workload_variable('SWAP', + default=pad_value('2', 'SWAP (0=bin-exch,1=long,2=mix)'), description='Swapping algorithm', workloads=['standard']) - workload_variable('swapping_threshold', default='64 swapping threshold', + workload_variable('swapping_threshold', + default=pad_value('64', 'swapping threshold'), description='Swapping threshold', workloads=['standard']) - workload_variable('L1', default='0 L1 in (0=transposed,1=no-transposed) form', + workload_variable('L1', + default=pad_value('0', 'L1 in (0=transposed,1=no-transposed) form'), description='Storage for upper triangular portion of columns', workloads=['standard']) - workload_variable('U', default='0 U in (0=transposed,1=no-transposed) form', + workload_variable('U', + default=pad_value('0', 'U in (0=transposed,1=no-transposed) form'), description='Storage for the rows of U', workloads=['standard']) - workload_variable('Equilibration', default='1 Equilibration (0=no,1=yes)', + workload_variable('Equilibration', + default=pad_value('1', 'Equilibration (0=no,1=yes)'), description='Determines if equilibration should be enabled or disabled.', workloads=['standard']) - workload_variable('mem_alignment', default='8 memory alignment in double (> 0)', + workload_variable('mem_alignment', + default=pad_value('8', 'memory alignment in double (> 0)'), description='Sets the alignment in doubles for memory addresses', workloads=['standard']) - workload('calculator', executables=['execute']) + # calculator workload-specific variables: + + workload_variable('percent_mem', default='85', + description='Percent of memory to use (default 85)', + workloads=['calculator']) - workload_variable('memory_per_node', default='128', + workload_variable('memory_per_node', default='240', description='Memory per node in GB', workloads=['calculator']) - workload_variable('block_size', default='224', + workload_variable('block_size', default='384', description='Size of each block', workloads=['calculator']) + workload_variable('pfact', default='0', + description='PFACT for optimized calculator', + workloads=['calculator']) + + workload_variable('nbmin', default='2', + description='NBMIN for optimized calculator', + workloads=['calculator']) + + workload_variable('rfact', default='0', + description='RFACT for optimized calculator', + workloads=['calculator']) + + workload_variable('bcast', default='0', + description='BCAST for optimized calculator', + workloads=['calculator']) + + workload_variable('depth', default='0', + description='DEPTH for optimized calculator', + workloads=['calculator']) + + # FoMs: + figure_of_merit('Time', log_file='{experiment_run_dir}/{experiment_name}.out', fom_regex=r'.*\s+(?P[0-9]+)\s+(?P[0-9]+)\s+(?P

[0-9]+)\s+(?P[0-9]+)\s+(?P

[0-9]+)\s+(?P[0-9]+)\s+(?P

[0-9]+)\s+(?P[0-9]+)\s+(?P

[0-9]+)\s+(?P[0-9]+)\s+(?P

[0-9]+)\s+(?P[0-9]+)\s+(?P