Difference between revisions of "Benchmarking & Scaling Tutorial/Automated Benchmarking JUBE"

From HPC Wiki
Benchmarking & Scaling Tutorial/Automated Benchmarking JUBE
Jump to navigation Jump to search
(Initial content)
 
m (Fix incomplete sentence.)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{DISPLAYTITLE:Automated Benchmarking using a Job Script}}<nowiki />
+
{{DISPLAYTITLE:Automated Benchmarking using JUBE}}<nowiki />
 
{{Syllabus Benchmarking & Scaling}}<nowiki />
 
{{Syllabus Benchmarking & Scaling}}<nowiki />
 
__TOC__
 
__TOC__
Line 12: Line 12:
  
 
Furthermore, application output (such as the runtime of the application) can easily be parsed and output in CSV or human-readable table format.
 
Furthermore, application output (such as the runtime of the application) can easily be parsed and output in CSV or human-readable table format.
 +
 +
== Writing a minimal configuration ==
 +
 +
As JUBE executes each workpackage (step with concrete configuration) in its own sandbox, the benchmark configuration must specify a fileset that either copies or links files into the run directory.
 +
Parameters have a separator defined (default is ',') that is used to tokenize the parameter string. Each token will be part of a separate configuration. In this example, the comma-separated list of tasks will result in the parameter <code>tasks</code> with one specific value in 15 different workpackages.
 +
 +
<syntaxhighlight lang="xml" line>
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<jube>
 +
  <benchmark name="GROMACS" outpath="bench_run">
 +
    <comment>A minimal JUBE config to run our GROMACS example</comment>
 +
 +
    <!-- Configuration -->
 +
    <parameterset name="execute_pset">
 +
      <parameter name="tasks">1,2,4,8,12,18,24,30,36,42,48,54,60,66,72</parameter>
 +
      <!-- you could also compute the list using Python
 +
        <parameter name="tasks" mode="python">
 +
          ",".join([str(x) for x in range(1,73) if (x % 6 == 0 and x > 10) or (x % 4 == 0 and x < 10) or x == 2 or x==1 ])
 +
        </parameter>
 +
      -->
 +
    </parameterset>
 +
   
 +
    <!-- Input files -->
 +
    <fileset name="gromacs_files">
 +
      <link>MD_5NM_WATER.deff</link> <!-- link input file -->
 +
    </fileset>
 +
 +
    <!-- Operation -->
 +
    <step name="run">
 +
      <use>execute_pset</use>  <!-- use parameterset -->
 +
      <use>gromacs_files</use> <!-- use fileset -->
 +
      <do>srun -n $ntasks gmx_mpi -quiet mdrun -deffnm MD_5NM_WATER -nsteps 10000 -ntomp 1 -pin on</do> <!-- start GROMACS -->
 +
    </step>   
 +
  </benchmark>
 +
</jube>
 +
</syntaxhighlight>
  
 
== Further information ==
 
== Further information ==

Latest revision as of 14:10, 18 November 2022

Tutorial
Title: Benchmarking & Scaling
Provider: HPC.NRW

Contact: tutorials@hpc.nrw
Type: Online
Topic Area: Performance Analysis
License: CC-BY-SA
Syllabus

1. Introduction & Theory
2. Interactive Manual Benchmarking
3. Automated Benchmarking using a Job Script
4. Automated Benchmarking using JUBE
5. Plotting & Interpreting Results

Introduction

The Jülich Benchmarking Environment is an application that helps you automate your workflow for system and application benchmarking.

JUBE allows you to define different steps of your workflow with dependencies between them.

One key advantage of using JUBE, as opposed to manually running an application in different configurations in a job script is that individual run configurations are automatically separated into separate workpackages with individual run directories, while common files and directories (like input files, preprocessing, etc.) can easily be integrated into the workflow.

Furthermore, application output (such as the runtime of the application) can easily be parsed and output in CSV or human-readable table format.

Writing a minimal configuration

As JUBE executes each workpackage (step with concrete configuration) in its own sandbox, the benchmark configuration must specify a fileset that either copies or links files into the run directory. Parameters have a separator defined (default is ',') that is used to tokenize the parameter string. Each token will be part of a separate configuration. In this example, the comma-separated list of tasks will result in the parameter tasks with one specific value in 15 different workpackages.

 1<?xml version="1.0" encoding="UTF-8"?>
 2<jube>
 3  <benchmark name="GROMACS" outpath="bench_run">
 4    <comment>A minimal JUBE config to run our GROMACS example</comment>
 5
 6    <!-- Configuration -->
 7    <parameterset name="execute_pset">
 8      <parameter name="tasks">1,2,4,8,12,18,24,30,36,42,48,54,60,66,72</parameter>
 9      <!-- you could also compute the list using Python 
10         <parameter name="tasks" mode="python">
11           ",".join([str(x) for x in range(1,73) if (x % 6 == 0 and x > 10) or (x % 4 == 0 and x < 10) or x == 2 or x==1 ])
12         </parameter>
13      -->
14    </parameterset>
15    
16    <!-- Input files -->
17    <fileset name="gromacs_files">
18      <link>MD_5NM_WATER.deff</link> <!-- link input file -->
19    </fileset>
20
21    <!-- Operation -->
22    <step name="run">
23      <use>execute_pset</use>  <!-- use parameterset -->
24      <use>gromacs_files</use> <!-- use fileset -->
25      <do>srun -n $ntasks gmx_mpi -quiet mdrun -deffnm MD_5NM_WATER -nsteps 10000 -ntomp 1 -pin on</do> <!-- start GROMACS -->
26    </step>    
27  </benchmark>
28</jube>

Further information


Next: Plotting and Interpreting Results

Previous: Automated Benchmarking using a Job Script