Reference Guide

Regression tests

internal_timers_mpi.py

Sanity checks

reframechecks.common.sphexa.sanity.elapsed_time_from_date(self)

Reports elapsed time in seconds using the linux date command:

starttime=1579725956
stoptime=1579725961
reports: _Elapsed: 5 s
reframechecks.common.sphexa.sanity.pctg_FindNeighbors(obj)

reports: * %FindNeighbors: 9.8 %

reframechecks.common.sphexa.sanity.pctg_IAD(obj)

reports: * %IAD: 17.36 %

reframechecks.common.sphexa.sanity.pctg_MomentumEnergyIAD(obj)

reports: * %MomentumEnergyIAD: 30.15 %

reframechecks.common.sphexa.sanity.pctg_Timestep(obj)

reports: * %Timestep: 16.6 %

reframechecks.common.sphexa.sanity.pctg_mpi_synchronizeHalos(obj)

reports: * %mpi_synchronizeHalos: 12.62 %

reframechecks.common.sphexa.sanity.seconds_elaps(self)

Reports elapsed time in seconds using the internal timer from the code

=== Total time for iteration(0) 3.61153s
reports: * Elapsed: 3.6115 s
reframechecks.common.sphexa.sanity.seconds_timers(self, region)

Reports timings (in seconds) using the internal timer from the code

# domain::sync: 0.118225s
# updateTasks: 0.00561256s
# FindNeighbors: 0.266282s
# Density: 0.120372s
# EquationOfState: 0.00255166s
# mpi::synchronizeHalos: 0.116917s
# IAD: 0.185804s
# mpi::synchronizeHalos: 0.0850162s
# MomentumEnergyIAD: 0.423282s
# Timestep: 0.0405346s
# UpdateQuantities: 0.0140938s
# EnergyConservation: 0.0224118s
# UpdateSmoothingLength: 0.00413466s

internal_timers_mpi_containers.py

class reframechecks.notool.internal_timers_mpi_containers.SphExa_Container_Base_Check(*args: Any, **kwargs: Any)[source]

Bases: reframe.RegressionTest

2 parameters can be set for simulation:

Parameters
  • mpi_task – number of mpi tasks; the size of the cube in the 3D square patch test is set with a dictionary depending on mpi_task, but cubesize could also be on the list of parameters,

  • step – number of simulation steps.

Dependencies are:
  • compute: inputs (mpi_task, step) —srun—> *job.out

  • postprocess logs: inputs (*job.out) —x—> termgraph.in

  • plot data: inputs (termgraph.in) —termgraph.py—> termgraph.rpt

class reframechecks.notool.internal_timers_mpi_containers.MPI_Collect_Logs_Test(*args: Any, **kwargs: Any)

Bases: reframe.RunOnlyRegressionTest

collect_logs()
extract_data()
class reframechecks.notool.internal_timers_mpi_containers.MPI_Compute_Sarus_Test(*args: Any, **kwargs: Any)

Bases: reframechecks.notool.internal_timers_mpi_containers.SphExa_Container_Base_Check

This class run the executable with Sarus

class reframechecks.notool.internal_timers_mpi_containers.MPI_Compute_Singularity_Test(*args: Any, **kwargs: Any)

Bases: reframechecks.notool.internal_timers_mpi_containers.SphExa_Container_Base_Check

This class run the executable with Singularity (and natively too for comparison)

class reframechecks.notool.internal_timers_mpi_containers.MPI_Plot_Test(*args: Any, **kwargs: Any)

Bases: reframe.RunOnlyRegressionTest

class reframechecks.notool.internal_timers_mpi_containers.SphExa_Container_Base_Check(*args: Any, **kwargs: Any)[source]

Bases: reframe.RegressionTest

2 parameters can be set for simulation:

Parameters
  • mpi_task – number of mpi tasks; the size of the cube in the 3D square patch test is set with a dictionary depending on mpi_task, but cubesize could also be on the list of parameters,

  • step – number of simulation steps.

Dependencies are:
  • compute: inputs (mpi_task, step) —srun—> *job.out

  • postprocess logs: inputs (*job.out) —x—> termgraph.in

  • plot data: inputs (termgraph.in) —termgraph.py—> termgraph.rpt

Intel

intel_inspector.py

class reframechecks.intel.intel_inspector.SphExaIntelInspectorCheck(*args: Any, **kwargs: Any)

Bases: reframe.RegressionTest

This class runs the test code with Intel Inspector (mpi only): https://software.intel.com/en-us/inspector

Available analysis types are: inspxe-cl -h collect

mi1   Detect Leaks
mi2   Detect Memory Problems
mi3   Locate Memory Problems
ti1   Detect Deadlocks
ti2   Detect Deadlocks and Data Races
ti3   Locate Deadlocks and Data Races

2 parameters can be set for simulation:

Parameters
  • mpitask – number of mpi tasks; the size of the cube in the 3D square patch test is set with a dictionary depending on mpitask, but cubesize could also be on the list of parameters,

  • steps – number of simulation steps.

Typical performance reporting:

PERFORMANCE REPORT
--------------------------------------------------
sphexa_inspector_sqpatch_024mpi_001omp_100n_0steps
- dom:gpu
   - PrgEnv-gnu
      * num_tasks: 24
      * Elapsed: 8.899 s
      ...
      * Memory not deallocated: 1

intel_vtune.py

class reframechecks.intel.intel_vtune.SphExaVtuneCheck(*args: Any, **kwargs: Any)

Bases: sphexa.sanity_vtune.VtuneBaseTest

This class runs the test code with Intel(R) VTune(TM) (mpi only): https://software.intel.com/en-us/vtune

2 parameters can be set for simulation:

Parameters
  • mpitask – number of mpi tasks; the size of the cube in the 3D square patch test is set with a dictionary depending on mpitask, but cubesize could also be on the list of parameters,

  • steps – number of simulation steps.

class reframechecks.intel.intel_vtune.SphExaVtuneCheck(*args: Any, **kwargs: Any)

Bases: sphexa.sanity_vtune.VtuneBaseTest

This class runs the test code with Intel(R) VTune(TM) (mpi only): https://software.intel.com/en-us/vtune

2 parameters can be set for simulation:

Parameters
  • mpitask – number of mpi tasks; the size of the cube in the 3D square patch test is set with a dictionary depending on mpitask, but cubesize could also be on the list of parameters,

  • steps – number of simulation steps.

Sanity checks

class reframechecks.common.sphexa.sanity_vtune.VtuneBaseTest(*args: Any, **kwargs: Any)[source]

Bases: reframe.RegressionTest

set_basic_perf_patterns()

A set of basic perf_patterns shared between the tests

set_vtune_perf_patterns_rpt()

More perf_patterns for the tool

Typical performance reporting:

      * vtune_elapsed_min: 6.695 s
      * vtune_elapsed_max: 6.695 s
      * vtune_elapsed_cput: 5.0858 s
      * vtune_elapsed_cput_efft: 4.8549 s
      * vtune_elapsed_cput_spint: 0.2309 s
      * vtune_elapsed_cput_spint_mpit: 0.2187 s
      * %vtune_effective_physical_core_utilization: 85.3 %
      * %vtune_effective_logical_core_utilization: 84.6 %
      * vtune_cput_cn0: 122.06 s
      * %vtune_cput_cn0_efft: 95.5 %
      * %vtune_cput_cn0_spint: 4.5 %

intel_advisor.py

class reframechecks.intel.intel_advisor.SphExaIntelAdvisorCheck(*args: Any, **kwargs: Any)

Bases: reframe.RegressionTest

This class runs the test code with Intel Advisor (mpi only): https://software.intel.com/en-us/advisor

Available analysis types are: advixe-cl -h collect

survey       - Discover efficient vectorization and/or threading
dependencies - Identify and explore loop-carried dependencies for loops
map          - Identify and explore complex memory accesses
roofline     - Run the Survey analysis + Trip Counts & FLOP analysis
suitability  - Check predicted parallel performance
tripcounts   - Identify the number of loop iterations.

2 parameters can be set for simulation:

Parameters
  • mpitask – number of mpi tasks; the size of the cube in the 3D square patch test is set with a dictionary depending on mpitask, but cubesize could also be on the list of parameters,

  • steps – number of simulation steps.

Typical performance reporting:

PERFORMANCE REPORT
--------------------------------------------------
sphexa_inspector_sqpatch_024mpi_001omp_100n_0steps
- dom:gpu
   - PrgEnv-gnu
      * num_tasks: 24
      * Elapsed: 3.6147 s
      ...
      * advisor_elapsed: 2.13 s
      * advisor_loop1_line: 94 (momentumAndEnergyIAD.hpp)

Sanity checks

reframechecks.common.sphexa.sanity_intel.advisor_elapsed(obj)

Reports the elapsed time (sum of Self Time in seconds) measured by the tool

> summary.rpt
ID / Function Call Sites and Loops / Total Time / Self Time /  Type
71 [loop in sphexa::sph::computeMomentumAndEnergyIADImpl<double,
  ... sphexa::ParticlesData<double>> at momentumAndEnergyIAD.hpp:94]
  ... 1.092s      0.736s              Scalar  momentumAndEnergyIAD.hpp:94
34 [loop in MPIDI_Cray_shared_mem_coll_bcast]
  ... 0.596s      0.472s              Scalar  libmpich_gnu_82.so.3
etc.
returns: * advisor_elapsed: 2.13 s
reframechecks.common.sphexa.sanity_intel.advisor_loop1_filename(obj)

Reports the name of the source file (filename) of the most time consuming loop

> summary.rpt
ID / Function Call Sites and Loops / Total Time / Self Time /  Type
71 [loop in sphexa::sph::computeMomentumAndEnergyIADImpl<double,
  ... sphexa::ParticlesData<double>> at momentumAndEnergyIAD.hpp:94]
  ... 1.092s      0.736s              Scalar  momentumAndEnergyIAD.hpp:94
34 [loop in MPIDI_Cray_shared_mem_coll_bcast]
  ... 0.596s      0.472s              Scalar  libmpich_gnu_82.so.3
etc.
returns: * advisor_loop1_line: 94 (momentumAndEnergyIAD.hpp)
reframechecks.common.sphexa.sanity_intel.advisor_loop1_line(obj)

Reports the line (fline) of the most time consuming loop

> summary.rpt
ID / Function Call Sites and Loops / Total Time / Self Time /  Type
71 [loop in sphexa::sph::computeMomentumAndEnergyIADImpl<double,
  ... sphexa::ParticlesData<double>> at momentumAndEnergyIAD.hpp:94]
  ... 1.092s      0.736s              Scalar  momentumAndEnergyIAD.hpp:94
34 [loop in MPIDI_Cray_shared_mem_coll_bcast]
  ... 0.596s      0.472s              Scalar  libmpich_gnu_82.so.3
etc.
returns: * advisor_loop1_line: 94 (momentumAndEnergyIAD.hpp)
reframechecks.common.sphexa.sanity_intel.advisor_version(obj)

Checks tool’s version:

> advixe-cl --version
Intel(R) Advisor 2020 (build 604394) Command Line Tool
returns: True or False
reframechecks.common.sphexa.sanity_intel.inspector_not_deallocated(obj)

Reports number of Memory not deallocated problem(s)

> summary.rpt
2 new problem(s) found
1 Memory leak problem(s) detected
1 Memory not deallocated problem(s) detected
returns: * Memory not deallocated: 1
reframechecks.common.sphexa.sanity_intel.inspector_version(obj)

Checks tool’s version:

> inspxe-cl --version
Intel(R) Inspector 2020 (build 603904) Command Line tool
returns: True or False
reframechecks.common.sphexa.sanity_intel.vtune_logical_core_utilization(self)

Reports the minimum Physical Core Utilization (%) measured by the tool

Effective Logical Core Utilization: 96.0% (23.028 out of 24)
Effective Logical Core Utilization: 95.9% (23.007 out of 24)
Effective Logical Core Utilization: 95.5% (22.911 out of 24)
reframechecks.common.sphexa.sanity_intel.vtune_momentumAndEnergyIAD(self)

sphexa::sph::computeMomentumAndEnergyIADImpl<…> sqpatch.exe 40.919s sphexa::sph::computeMomentumAndEnergyIADImpl<…> sqpatch.exe 38.994s sphexa::sph::computeMomentumAndEnergyIADImpl<…> sqpatch.exe 40.245s sphexa::sph::computeMomentumAndEnergyIADImpl<…> sqpatch.exe 39.487s

reframechecks.common.sphexa.sanity_intel.vtune_perf_patterns(obj)

Dictionary of default perf_patterns for the tool

reframechecks.common.sphexa.sanity_intel.vtune_physical_core_utilization(self)

Reports the minimum Physical Core Utilization (%) measured by the tool

Effective Physical Core Utilization: 96.3% (11.554 out of 12)
Effective Physical Core Utilization: 96.1% (11.534 out of 12)
Effective Physical Core Utilization: 95.9% (11.512 out of 12)
reframechecks.common.sphexa.sanity_intel.vtune_time(self)

Vtune creates 1 report per compute node. For example, a 48 mpi tasks job (= 2 compute nodes when running with 24 c/cn) will create 2 directories: * rpt.nid00001/rpt.nid00001.vtune * rpt.nid00002/rpt.nid00002.vtune

Typical output (for each compute node) is:

Elapsed Time:     14.866s
    CPU Time:     319.177s            /24 = 13.3
        Effective Time:   308.218s    /24 = 12.8
            Idle: 0s
            Poor: 19.725s
            Ok:   119.570s
            Ideal:        168.922s
            Over: 0s
        Spin Time:        10.959s             /24 =  0.4
            MPI Busy Wait Time:   10.795s
            Other:        0.164s
        Overhead Time:    0s
Total Thread Count:       25
Paused Time:      0s
reframechecks.common.sphexa.sanity_intel.vtune_tool_reference(obj)

Dictionary of default reference for the tool

reframechecks.common.sphexa.sanity_intel.vtune_version(obj)

Checks tool’s version:

> vtune --version
Intel(R) VTune(TM) Profiler 2020 (build 605129) Command Line Tool
returns: True or False

Score-P

scorep_sampling_profiling.py

scorep_sampling_tracing.py

Sanity checks

reframechecks.common.sphexa.sanity_scorep.cube_dump(self, region)

Reports timings (in seconds) using the timer from the tool

# ...
reframechecks.common.sphexa.sanity_scorep.ipc_rk0(obj)

Reports the IPC (instructions per cycle) for rank 0

reframechecks.common.sphexa.sanity_scorep.program_begin_count(obj)

Reports the number of PROGRAM_BEGIN in the otf2 trace file

reframechecks.common.sphexa.sanity_scorep.program_end_count(obj)

Reports the number of PROGRAM_END in the otf2 trace file

reframechecks.common.sphexa.sanity_scorep.ru_maxrss_rk0(obj)

Reports the maximum resident set size

reframechecks.common.sphexa.sanity_scorep.scorep_assert_version(obj)

Checks tool’s version:

> scorep --version
Score-P 6.0
returns: True or False
reframechecks.common.sphexa.sanity_scorep.scorep_com_pct(obj)

Reports COM % measured by the tool

type max_buf[B]   visits    hits time[s] time[%] time/visit[us] region
COM      4,680 1,019,424     891  303.17    12.0         297.39  COM
                                            ****
reframechecks.common.sphexa.sanity_scorep.scorep_elapsed(obj)

Typical performance report from the tool (profile.cubex)

   type max_buf[B]   visits    hits time[s] time[%] time/visit[us] region
   ALL  1,019,921 2,249,107 934,957  325.00   100.0   144.50  ALL
                                     ******
   USR    724,140 1,125,393 667,740  226.14    69.6   200.94  USR
   MPI    428,794    59,185 215,094   74.72    23.0  1262.56  MPI
   COM     43,920 1,061,276  48,832   21.96     6.8    20.69  COM
MEMORY      9,143     3,229   3,267    2.16     0.7   669.59  MEMORY
SCOREP         94        24      24    0.01     0.0   492.90  SCOREP
   USR    317,100   283,366 283,366   94.43    29.1         333.24 ...
_ZN6sphexa3sph31computeMomentumAndEnergyIADImplIdNS_13ParticlesData ...
IdEEEEvRKNS_4TaskERT0_
reframechecks.common.sphexa.sanity_scorep.scorep_exclusivepct_energy(obj)

Reports % of elapsed time (exclusive) for MomentumAndEnergy function (small scale job)

> sqpatch_048mpi_001omp_125n_10steps_1000000cycles/rpt.exclusive
0.0193958 (0.0009252%) sqpatch.exe
1.39647 (0.06661%)       + main
...
714.135 (34.063%)   |   + ...
         *******
  _ZN6sphexa3sph31computeMomentumAndEnergyIADImplIdNS_13 ...
  ParticlesDataIdEEEEvRKNS_4TaskERT0_
0.205453 (0.0098%)  |   +
  _ZN6sphexa3sph15computeTimestepIdNS0_21TimestepPress2ndOrderIdNS_13 ...
  ParticlesDataIdEEEES4_EEvRKSt6vectorINS_4TaskESaIS7_EERT1_
201.685 (9.62%)     |   |   + MPI_Allreduce


 type max_buf[B]    visits    hits time[s] time[%] time/visit[us]  region
 OMP  1,925,120    81,920       0   63.84     2.5         779.29
  !$omp parallel @momentumAndEnergyIAD.hpp:87 ***
 OMP    920,500    81,920  48,000  125.41     5.0        1530.93
  !$omp for @momentumAndEnergyIAD.hpp:87      ***
 OMP    675,860    81,920       1   30.95     1.2         377.85
  !$omp implicit barrier @momentumAndEnergyIAD.hpp:93
                                              ***
reframechecks.common.sphexa.sanity_scorep.scorep_inclusivepct_energy(obj)

Reports % of elapsed time (inclusive) for MomentumAndEnergy function (small scale job)

> sqpatch_048mpi_001omp_125n_10steps_1000000cycles/rpt.exclusive
0.0193958 (0.0009252%) sqpatch.exe
1.39647 (0.06661%)       + main
...
714.135 (34.063%)   |   + ...
         *******
  _ZN6sphexa3sph31computeMomentumAndEnergyIADImplIdNS_13 ...
  ParticlesDataIdEEEEvRKNS_4TaskERT0_
0.205453 (0.0098%)  |   +
  _ZN6sphexa3sph15computeTimestepIdNS0_21TimestepPress2ndOrderIdNS_13 ...
  ParticlesDataIdEEEES4_EEvRKSt6vectorINS_4TaskESaIS7_EERT1_
201.685 (9.62%)     |   |   + MPI_Allreduce
reframechecks.common.sphexa.sanity_scorep.scorep_info_cuda_support(obj)

Checks tool’s configuration (Cuda support)

> scorep-info config-summary
CUDA support:  yes
reframechecks.common.sphexa.sanity_scorep.scorep_info_papi_support(obj)

Checks tool’s configuration (papi support)

> scorep-info config-summary
PAPI support: yes
reframechecks.common.sphexa.sanity_scorep.scorep_info_perf_support(obj)

Checks tool’s configuration (perf support)

> scorep-info config-summary
metric perf support: yes
reframechecks.common.sphexa.sanity_scorep.scorep_info_unwinding_support(obj)

Checks tool’s configuration (libunwind support)

> scorep-info config-summary
Unwinding support: yes
reframechecks.common.sphexa.sanity_scorep.scorep_mpi_pct(obj)

Reports MPI % measured by the tool

type max_buf[B]   visits    hits time[s] time[%] time/visit[us] region
MPI    428,794    59,185 215,094   74.72    23.0  1262.56  MPI
                                            ****
reframechecks.common.sphexa.sanity_scorep.scorep_omp_pct(obj)

Reports OMP % measured by the tool

type max_buf[B]   visits    hits time[s] time[%] time/visit[us] region
OMP 40,739,286 3,017,524 111,304 2203.92    85.4         730.37  OMP
                                            ****
reframechecks.common.sphexa.sanity_scorep.scorep_top1_name(obj)

Reports demangled name of top1 function name, for instance:

> c++filt ...
_ZN6sphexa3sph31computeMomentumAndEnergyIADImplIdNS_13 ...
ParticlesDataIdEEEEvRKNS_4TaskERT0_

void sphexa::sph::computeMomentumAndEnergyIADImpl  ...
      <double, sphexa::ParticlesData<double> > ...
      (sphexa::Task const&, sphexa::ParticlesData<double>&)
reframechecks.common.sphexa.sanity_scorep.scorep_top1_tracebuffersize(obj)

Reports max_buf[B] for top1 function

   type max_buf[B]   visits    hits time[s] time[%] time/visit[us] region
   ...
   USR    317,100   283,366 283,366   94.43    29.1         333.24 ...
_ZN6sphexa3sph31computeMomentumAndEnergyIADImplIdNS_13ParticlesData ...

   USR    430,500    81,902  81,902   38.00     1.5         463.99  ...
gomp_team_barrier_wait_end
reframechecks.common.sphexa.sanity_scorep.scorep_top1_tracebuffersize_name(obj)

Reports function name for top1 (max_buf[B]) function

reframechecks.common.sphexa.sanity_scorep.scorep_usr_pct(obj)

Reports USR % measured by the tool

type max_buf[B]   visits    hits time[s] time[%] time/visit[us] region
USR    724,140 1,125,393 667,740  226.14    69.6   200.94  USR
                                            ****
reframechecks.common.sphexa.sanity_scorep.scorep_version(obj)

Checks tool’s version:

> scorep --version
Score-P 7.0
returns: version string

Scalasca

scalasca_sampling_profiling.py

scalasca_sampling_tracing.py

Sanity checks

reframechecks.common.sphexa.sanity_scalasca.rpt_tracestats_mpi(obj)

Reports MPI statistics (mpi_latesender, mpi_latesender_wo, mpi_latereceiver, mpi_wait_nxn, mpi_nxn_completion) by reading the stat_rpt (trace.stat) file reported by the tool. Columns are (for each PatternName): Count Mean Median Minimum Maximum Sum Variance Quartil25 and Quartil75. Count (=second column) is used here.

Typical performance reporting:

> sphexa_scalascaS+T_sqpatch_024mpi_001omp_100n_4steps_5000000cycles/scorep_sqpatch_24_trace/trace.stat

PatternName               Count      Mean    Median      Minimum      Maximum      Sum     Variance    Quartil25    Quartil75
mpi_latesender                  2087 0.0231947 0.0024630 0.0000001623 0.2150408312 48.4074203231 0.0029201162 0.0007851545 0.0067652356
mpi_latesender_wo                 15 0.0073685 0.0057757 0.0011093750 0.0301200084 0.1105282126 0.0000531833 0.0025275522 0.0104651418
mpi_latereceiver                 327 0.0047614 0.0000339 0.0000362101 0.0139404002 1.5569782562 0.0000071413 0.0000338690 0.0000338690
mpi_wait_nxn                    1978 0.0324812 0.0002649 0.0000000015 0.7569314451 64.2478221177 0.0164967346 0.0001135482 0.0004163433
mpi_nxn_completion              1978 0.0000040 0.0001135 0.0000000008 0.0000607473 0.0078960137 0.0000000001 0.0000378494 0.0001892469
reframechecks.common.sphexa.sanity_scalasca.rpt_tracestats_omp(obj)

Reports OpenMP statistics by reading the trace.stat file: - omp_ibarrier_wait: OMP Wait at Implicit Barrier (sec) in Cube GUI - omp_lock_contention_critical: OMP Critical Contention (sec) in Cube GUI Each column (Count Mean Median Minimum Maximum Sum Variance Quartil25 and Quartil75) is read, only Sum is reported here.

reframechecks.common.sphexa.sanity_scalasca.scalasca_mpi_pct(obj)

MPI % reported by Scalasca (scorep.score, notice no hits column)

type max_buf[B]  visits time[s] time[%] time/visit[us]  region
ALL  6,529,686 193,188   28.13   100.0         145.63  ALL
OMP  6,525,184 141,056   27.33    97.1         193.74  OMP
MPI      4,502      73    0.02     0.1         268.42  MPI
                                 *****
reframechecks.common.sphexa.sanity_scalasca.scalasca_omp_pct(obj)

OpenMP % reported by Scalasca (scorep.score, notice no hits column)

type max_buf[B]  visits time[s] time[%] time/visit[us]  region
ALL  6,529,686 193,188   28.13   100.0         145.63  ALL
OMP  6,525,184 141,056   27.33    97.1         193.74  OMP
                                 *****
MPI      4,502      73    0.02     0.1         268.42  MPI

Extrae

extrae.py

Sanity checks

reframechecks.common.sphexa.sanity_extrae.create_sh(obj)

Create a wrapper script to insert Extrae libs (with LD_PRELOAD) into the executable at runtime

reframechecks.common.sphexa.sanity_extrae.extrae_version(obj)

Checks tool’s version. As there is no --version flag available, we read the version from extrae_version.h and compare it to our reference

> cat $EBROOTEXTRAE/include/extrae_version.h
#define EXTRAE_MAJOR 3
#define EXTRAE_MINOR 7
#define EXTRAE_MICRO 1
returns: True or False
reframechecks.common.sphexa.sanity_extrae.rpt_mpistats(obj)

Reports statistics (histogram of MPI communications) from the comms.dat file

#_of_comms %_of_bytes_sent # histogram bin
466        0.00            # 10 B
3543       0.25            # 100 B
11554     11.69            # 1 KB
29425     88.05            # 10 KB
0          0.00            # 100 KB
0          0.00            # 1 MB
0          0.00            # 10 MB
0          0.00            # >10 MB
reframechecks.common.sphexa.sanity_extrae.tool_reference_scoped_d(obj)

Sets a set of tool perf_reference to be shared between the tests.

mpiP

mpip.py

Sanity checks

class reframechecks.common.sphexa.sanity_mpip.MpipBaseTest(*args: Any, **kwargs: Any)[source]

Bases: reframe.RegressionTest

mpip_sanity_patterns()

Checks tool’s version:

> cat ./sqpatch.exe.6.31820.1.mpiP
@ mpiP
@ Command : sqpatch.exe -n 62 -s 1
@ Version : 3.4.2  <-- 57fc864
set_basic_perf_patterns()

A set of basic perf_patterns shared between the tests

set_mpip_perf_patterns()

More perf_patterns for the tool

-----------------------------------
@--- MPI Time (seconds) -----------
-----------------------------------
Task    AppTime    MPITime     MPI%
   0        8.6      0.121     1.40 <-- min
   1        8.6      0.157     1.82
   2        8.6       5.92    68.84 <-- max
   *       25.8        6.2    24.02 <---

=> NonMPI= AppTime - MPITime

Typical performance reporting:

* mpip_avg_app_time: 8.6 s  (= 25.8/3mpi)
* mpip_avg_mpi_time: 2.07 s (=  6.2/3mpi)
* %mpip_avg_mpi_time: 24.02 %
* %mpip_avg_non_mpi_time: 75.98 %
reframechecks.common.sphexa.sanity_mpip.mpip_perf_patterns(obj, reg)

More perf_patterns for the tool

-----------------------------------
@--- MPI Time (seconds) -----------
-----------------------------------
Task    AppTime    MPITime     MPI%
   0        8.6      0.121     1.40 <-- min
   1        8.6      0.157     1.82
   2        8.6       5.92    68.84 <-- max
   *       25.8        6.2    24.02 <---

=> NonMPI= AppTime - MPITime

Typical performance reporting:

* mpip_avg_app_time: 8.6 s  (= 25.8/3mpi)
* mpip_avg_mpi_time: 2.07 s (=  6.2/3mpi)
* %mpip_avg_mpi_time: 24.02 %
* %max/%min
* %mpip_avg_non_mpi_time: 75.98 %

Perftools

patrun.py

Sanity checks