k4bench.runner.executor¶
k4bench.runner.executor ¶
Execute a single ddsim run and return a :class:RunResult.
Design principle
This module owns instrumentation: timing, logging, and metrics
extraction. It does not own physics configuration. The caller
decides which ddsim arguments to pass; the executor wraps them with
/usr/bin/time -v and harvests the results.
The only ddsim arguments that the executor needs to know about are:
--compactFile— to allow per-run XML patching (geometry sweep)--numberOfEvents— to compute events/sec--outputFile— to measure output file size
Everything else (--enableGun, --gun.particle, --runType,
steering files, …) is passed through verbatim via extra_args.
Per-event timing
When available, the k4Bench C++ timing plugin is loaded
automatically as a DDG4 event action. The plugin writes
per-event timing metrics to JSON files inside the log directory.
These profiling artifacts are intentionally kept separate from
:class:RunResult, which only stores run-level benchmark metrics.
run_ddsim ¶
run_ddsim(*, xml_path: Path, label: str, n_events: int, output_file: Path, log_dir: Path, setup_script: Path | None = None, extra_args: list[str] | None = None, verbose: bool = False) -> RunResult
Run ddsim for one geometry configuration and return collected metrics.
The executor injects --compactFile, --numberOfEvents, and
--outputFile automatically. All other ddsim options should be
supplied via extra_args.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
xml_path
|
Path
|
Compact XML file passed to |
required |
label
|
str
|
Human-readable name for this run. Used as the log filename stem
and stored in :attr: |
required |
n_events
|
int
|
Number of events; passed to |
required |
output_file
|
Path
|
EDM4hep ROOT output path passed to |
required |
log_dir
|
Path
|
Directory where |
required |
setup_script
|
Path | None
|
Optional shell script sourced before ddsim. |
None
|
extra_args
|
list[str] | None
|
Additional ddsim arguments passed through verbatim. |
None
|
verbose
|
bool
|
Stream ddsim output live to stdout. |
False
|
Returns:
| Type | Description |
|---|---|
RunResult
|
Process-level timing, memory, and throughput metrics. |
Source code in k4bench/runner/executor.py
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | |