Skip to content

Commit 6c35050

Browse files
Add State.add_summary method
state.add_summary(column_name: str, value: Union[int, float, str]) This is used in examples/axes.py to map integral value from Int64Axis to string description.
1 parent c32e229 commit 6c35050

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

python/cuda/nvbench/__init__.pyi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,9 @@ class State:
187187
Default: `False`.
188188
"""
189189
...
190+
def add_summary(self, column_name: str, value: Union[int, float, str]) -> None:
191+
"Add summary column with a value"
192+
...
190193

191194
def register(fn: Callable[[State], None]) -> Benchmark:
192195
"""

python/src/py_nvbench.cpp

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -338,13 +338,13 @@ PYBIND11_MODULE(_nvbench, m)
338338
using state_ref_t = std::reference_wrapper<nvbench::state>;
339339
auto pystate_cls = py::class_<nvbench::state>(m, "State");
340340

341-
pystate_cls.def("hasDevice", [](nvbench::state &state) -> bool {
341+
pystate_cls.def("hasDevice", [](const nvbench::state &state) -> bool {
342342
return static_cast<bool>(state.get_device());
343343
});
344-
pystate_cls.def("hasPrinters", [](nvbench::state &state) -> bool {
344+
pystate_cls.def("hasPrinters", [](const nvbench::state &state) -> bool {
345345
return state.get_benchmark().get_printer().has_value();
346346
});
347-
pystate_cls.def("getDevice", [](nvbench::state &state) {
347+
pystate_cls.def("getDevice", [](const nvbench::state &state) {
348348
auto dev = state.get_device();
349349
if (dev.has_value())
350350
{
@@ -398,7 +398,7 @@ PYBIND11_MODULE(_nvbench, m)
398398
py::arg("column_name") = py::str(""));
399399
pystate_cls.def(
400400
"getBenchmark",
401-
[](nvbench::state &state) { return std::ref(state.get_benchmark()); },
401+
[](const nvbench::state &state) { return std::ref(state.get_benchmark()); },
402402
py::return_value_policy::reference);
403403
pystate_cls.def("getThrottleThreshold", &nvbench::state::get_throttle_threshold);
404404

@@ -456,6 +456,30 @@ PYBIND11_MODULE(_nvbench, m)
456456
py::arg("batched") = true,
457457
py::arg("sync") = false);
458458

459+
pystate_cls.def("get_short_description",
460+
[](const nvbench::state &state) { return state.get_short_description(); });
461+
462+
pystate_cls.def("add_summary",
463+
[](nvbench::state &state, std::string column_name, std::string value) {
464+
auto &summ = state.add_summary("nv/python/" + column_name);
465+
summ.set_string("description", "User tag: " + column_name);
466+
summ.set_string("name", std::move(column_name));
467+
summ.set_string("value", std::move(value));
468+
});
469+
pystate_cls.def("add_summary",
470+
[](nvbench::state &state, std::string column_name, std::int64_t value) {
471+
auto &summ = state.add_summary("nv/python/" + column_name);
472+
summ.set_string("description", "User tag: " + column_name);
473+
summ.set_string("name", std::move(column_name));
474+
summ.set_int64("value", value);
475+
});
476+
pystate_cls.def("add_summary", [](nvbench::state &state, std::string column_name, double value) {
477+
auto &summ = state.add_summary("nv/python/" + column_name);
478+
summ.set_string("description", "User tag: " + column_name);
479+
summ.set_string("name", std::move(column_name));
480+
summ.set_float64("value", value);
481+
});
482+
459483
// == STEP 6
460484
// ATTN: nvbench::benchmark_manager is a singleton
461485

0 commit comments

Comments
 (0)