File Format Reference

This page provides a reference to the various input and file structures provided by BenchPRO.

Environment Variables

BenchPRO uses environment variables to configure paths and behaviour. Variables with prefix ‘BP_’ are user facing and editable via the setting overload mechanism detailed here. The variables with ‘BPS_’ prefix are used internally and should not be editted by the user.

Variable

Description

$BPS_BIN

BenchPRO binaries, added to $PATH

$BPS_COLLECT

BenchPRO’s result collection blackhole; used to cache results to be pushed to database.

$BPS_HOME

BenchPRO package installation directory.

$BPS_INC

Site directory containing examples and configuration files.

$BPS_LOG

Log file from package installation.

$BPS_MODULES

Path to BenchPRO’s modulefiles directory.

$BPS_SYSTEM

System label.

$BPS_VERSION

Version information.

$BPS_VERSION_STR

Version information, including build ID hash.

$BP_HOME

User file path [Default= $HOME/benchpro].

$BP_APPS

Application install root directory.

$BP_RESULTS

Benchmark root directory.

$BP_REPO

Local file repository directory.

User files layout

The file structure of the BenchPRO user directory is configured as follows:

./benchpro
├── bench
│   ├── config
│   └── template
├── build
│   ├── config
│   └── template
├── log
├── resources
│   └── scripts
│       └── results
└── user.ini

Input Arguments

Global settings

Global settings are defined in the file $BP_HOME/user.ini

Application config files

These config files contain parameters used to populate the application build template file, config files are broken in sections corresponding to general settings, system modules and configuration parameters.

Label

Required?

Description

[general]

code

Y

Application identifier.

version

Y

Application version label, accepts x.x, x-x, or strings like ‘stable’.

system

N

TACC system identifier, if left blank will use $TACC_SYSTEM.

build_prefix

N

Custom build (outside of default tree).

template

N

Overwrite default build template file.

module_use

N

Path to be added to MODULEPATH, for using nonstandard modules.

sched_cfg

N

Name of nonstandard scheduler config file to use.

[modules]

NOTE: user may add as many custom fields to this section as needed.

compiler

Y

Module name of compiler, eg: ‘intel/18.0.2’ or just ‘intel’ for default.

mpi

Y

Module name of MPI, eg: ‘impi/18.0.2’ or just ‘impi’ for default.

[config]

NOTE: user may add as many fields to this section as needed.

arch

N

Generates architecture specific optimization flags. If left blank will use system default, set to ‘system’ to combine with ‘opt_flags’ below

opt_flags

N

Used to add additional optimization flags, eg: ‘-g -ipo’ etc. If arch is not

set, this will be only optimization flags used.

build_label

N

Custom build label, replaces arch default eg: skylake-xeon. Required if ‘opt_flags’ is set and ‘arch’ is not

bin_dir

N

Path to executable within application directory, eg: bin, run etc.

exe

Y

Name of application executable, used to check compilation was successful.

collect_hw_stats

N

Runs the hardware stats collection tool after build.

script_additions

N

Filename in $BP_HOME/templates, to be added to build script.

Benchmark config file

These config files contain parameters used to populate the benchmark template script. The file structure is:

Directory structure

Directory

Purpose

$BP_HOME/build

config and template files for compiling applications.

$BP_HOME/bench

config and template files for running benchmarks.

$BP_HOME/log

Build, bench and catpure log files.

$BP_HOME/resources

Contains useful content including modulefiles, hardware collection and result validation scripts.

Database Structures

Application database

Column

Type

Modifiers

Storage

code

character varying(50)

not null

extended

version

character varying(50)

not null

extended

system

character varying(50)

not null

extended

compiler

character varying(50)

not null

extended

mpi

character varying(50)

not null

extended

modules

character varying(200)

not null

extended

opt_flags

character varying(200)

extended

exe_file

character varying(50)

not null

extended

build_prefix

character varying(200)

not null

extended

task_id

character varying(50)

not null

extended

app_id

character varying(50)

not null

extended

build_label

character varying(50)

extended

module_use

character varying(100)

extended

username

character varying(50)

not null

extended

exec_mode

character varying(100)

not null

extended

bin_dir

character varying(50)

extended

script

character varying(50)

extended

stderr

character varying(50)

not null

extended

stdout

character varying(50)

not null

extended

elapsed_time

integer

plain

end_time

timestamp with time zone

plain

submit_time

timestamp with time zone

not null

plain

Results database

Column

Type

Modifiers

Storage

username

character varying(50)

not null

extended

system

character varying(50)

not null

extended

submit_time

timestamp with time zone

not null

plain

task_id

character varying(50)

not null

extended

nodes

integer

not null

plain

ranks

integer

not null

plain

threads

integer

not null

plain

dataset

character varying(50)

not null

extended

result

numeric(20,3)

not null

main

result_unit

character varying(50)

not null

extended

resource_path

character varying(100)

not null

extended

nodelist

character varying(1000)

not null

extended

description

character varying(100)

not null

extended

elapsed_time

integer

plain

end_time

timestamp with time zone

plain

capture_time

timestamp with time zone

not null

plain

job_status

character varying(100)

not null

extended

app_id

character varying(50)

not null

extended

gpus

integer

not null

plain

exec_mode

character varying(100)

not null

extended