Name und Beschreibung des Benchmarks. Wichtig ist hier der shortname, unter dem der Benchmark weiter referenziert wird.
<?xml version="1.0" encoding="UTF-8"?>
<!-- benchmark environment -->
<benchmark shortname="hpcc" type="standalone">
<fname>HPC Challenge</fname>
<version>1.3.1</version>
<description>bla bla bla</description>
Benötigt der Benchmark Argumente? Muß vorher/nachher etwas getan werden? Welche Module müssen geladen werden, damit alles tut? Diese Eigenheiten sollen hier abgedeckt werden. Bei call sind die Angaben copy und absolute gültig. Ersteres ist nützlich für Benchmarks, die keine Parameter für die Angabe der Konfigurationsdatei bieten und diese deshalb immer im selben Verzeichnis suchen (z.B. hpcc).
<run>
<path>/bin/ls</path>
<call>absolute</call>
<arguments></arguments>
<precmd></precmd>
<postcmd></postcmd>
<module version="10.1.015">icc</module>
<module version="10.1.0.015">imkl</module>
<module version="10.1.015">ifort</module>
<module version="3.2.0.011">impi</module>
</run>
Andere Typen für Konfigurationsdateien könnten sein: none oder einfach file. Der Typ fixedPosFile ist eine Fortran-Stil Datei, die Werte an ganz bestimmten Zeilen erwartet. Der Name (z.B. problem_size) ist der, der vom User in seiner run Datei überschrieben werden kann (mit Präfix).
<config type="fixedPosFile">
<template>hpccinf.txt</template>
<!-- changeable values and their defaults. -->
<var pos="6" default="10000">problem_size</var>
<var pos="11" default="3">row_process_mapping</var>
<var pos="12" default="4">column_process_mapping</var>
</config>
Wie die Werte wiedergefunden werden, steht hier. Der Typ sagt, es gibt eine parsbare Datei im variable = value Format (nameValue). Die Variable heisst dann z.B. HPL_Tflops und der Wert dahinter ist in der Einheit Tflops.
<output type="parsefile" format="nameValue">
<!-- where to find the relevant results -->
<value unit="Tflops" name="HPL_Tflops">floatingpoint performance</value>
</output>
</benchmark>
Es fehlen noch Angaben zur graphischen Ausgabe.
Die DTD-Datei benchmark.dtd wird nicht per xml Datei gesetzt, sondern von der Software. So soll vermieden werden, dass unterschiedliche DTDs entstehen (Benchmark Beschreibungen sind aufgeteilt in einzelne Dateien).
<!ELEMENT benchmark (fname, version, description, run, config, output)>
<!ATTLIST benchmark
shortname CDATA #REQUIRED
type CDATA #IMPLIED>
<!ELEMENT fname (#PCDATA)>
<!ELEMENT version (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT run (path, call, arguments, precmd+, postcmd+, module+)>
<!ELEMENT path (#PCDATA)>
<!ELEMENT call (#PCDATA)>
<!ELEMENT arguments (#PCDATA)>
<!ELEMENT precmd (#PCDATA)>
<!ELEMENT postcmd (#PCDATA)>
<!ELEMENT module (#PCDATA)>
<!ATTLIST module
version CDATA #IMPLIED>
<!ELEMENT config (template, var*)>
<!ATTLIST config
type CDATA #REQUIRED>
<!ELEMENT template (#PCDATA)>
<!ELEMENT var (#PCDATA)>
<!ATTLIST var
pos CDATA #REQUIRED
default CDATA #REQUIRED>
<!ELEMENT output (value*)>
<!ATTLIST output
type CDATA #REQUIRED
format CDATA #REQUIRED>
<!ELEMENT value (#PCDATA)>
<!ATTLIST value
unit CDATA #REQUIRED
name CDATA #REQUIRED>