mirror of
https://github.com/NVIDIA/nvbench.git
synced 2026-03-14 20:27:24 +00:00
Add jsonlist-devices option
This commit is contained in:
@@ -222,6 +222,35 @@ void json_printer::do_process_bulk_data_float64(state &state,
|
||||
} // end hint == sample_times
|
||||
}
|
||||
|
||||
static void add_devices_section(nlohmann::ordered_json &root)
|
||||
{
|
||||
auto &devices = root["devices"];
|
||||
for (const auto &dev_info : nvbench::device_manager::get().get_devices())
|
||||
{
|
||||
auto &device = devices.emplace_back();
|
||||
device["id"] = dev_info.get_id();
|
||||
device["name"] = dev_info.get_name();
|
||||
device["sm_version"] = dev_info.get_sm_version();
|
||||
device["ptx_version"] = dev_info.get_ptx_version();
|
||||
device["sm_default_clock_rate"] = dev_info.get_sm_default_clock_rate();
|
||||
device["number_of_sms"] = dev_info.get_number_of_sms();
|
||||
device["max_blocks_per_sm"] = dev_info.get_max_blocks_per_sm();
|
||||
device["max_threads_per_sm"] = dev_info.get_max_threads_per_sm();
|
||||
device["max_threads_per_block"] = dev_info.get_max_threads_per_block();
|
||||
device["registers_per_sm"] = dev_info.get_registers_per_sm();
|
||||
device["registers_per_block"] = dev_info.get_registers_per_block();
|
||||
device["global_memory_size"] = dev_info.get_global_memory_size();
|
||||
device["global_memory_bus_peak_clock_rate"] =
|
||||
dev_info.get_global_memory_bus_peak_clock_rate();
|
||||
device["global_memory_bus_width"] = dev_info.get_global_memory_bus_width();
|
||||
device["global_memory_bus_bandwidth"] = dev_info.get_global_memory_bus_bandwidth();
|
||||
device["l2_cache_size"] = dev_info.get_l2_cache_size();
|
||||
device["shared_memory_per_sm"] = dev_info.get_shared_memory_per_sm();
|
||||
device["shared_memory_per_block"] = dev_info.get_shared_memory_per_block();
|
||||
device["ecc_state"] = dev_info.get_ecc_state();
|
||||
}
|
||||
}
|
||||
|
||||
void json_printer::do_print_benchmark_results(const benchmark_vector &benches)
|
||||
{
|
||||
nlohmann::ordered_json root;
|
||||
@@ -274,33 +303,7 @@ void json_printer::do_print_benchmark_results(const benchmark_vector &benches)
|
||||
} // "version"
|
||||
} // "meta"
|
||||
|
||||
{
|
||||
auto &devices = root["devices"];
|
||||
for (const auto &dev_info : nvbench::device_manager::get().get_devices())
|
||||
{
|
||||
auto &device = devices.emplace_back();
|
||||
device["id"] = dev_info.get_id();
|
||||
device["name"] = dev_info.get_name();
|
||||
device["sm_version"] = dev_info.get_sm_version();
|
||||
device["ptx_version"] = dev_info.get_ptx_version();
|
||||
device["sm_default_clock_rate"] = dev_info.get_sm_default_clock_rate();
|
||||
device["number_of_sms"] = dev_info.get_number_of_sms();
|
||||
device["max_blocks_per_sm"] = dev_info.get_max_blocks_per_sm();
|
||||
device["max_threads_per_sm"] = dev_info.get_max_threads_per_sm();
|
||||
device["max_threads_per_block"] = dev_info.get_max_threads_per_block();
|
||||
device["registers_per_sm"] = dev_info.get_registers_per_sm();
|
||||
device["registers_per_block"] = dev_info.get_registers_per_block();
|
||||
device["global_memory_size"] = dev_info.get_global_memory_size();
|
||||
device["global_memory_bus_peak_clock_rate"] =
|
||||
dev_info.get_global_memory_bus_peak_clock_rate();
|
||||
device["global_memory_bus_width"] = dev_info.get_global_memory_bus_width();
|
||||
device["global_memory_bus_bandwidth"] = dev_info.get_global_memory_bus_bandwidth();
|
||||
device["l2_cache_size"] = dev_info.get_l2_cache_size();
|
||||
device["shared_memory_per_sm"] = dev_info.get_shared_memory_per_sm();
|
||||
device["shared_memory_per_block"] = dev_info.get_shared_memory_per_block();
|
||||
device["ecc_state"] = dev_info.get_ecc_state();
|
||||
}
|
||||
} // "devices"
|
||||
add_devices_section(root);
|
||||
|
||||
{
|
||||
auto &benchmarks = root["benchmarks"];
|
||||
@@ -498,4 +501,11 @@ void json_printer::do_print_benchmark_list(const benchmark_vector &benches)
|
||||
m_ostream << root.dump(2) << "\n";
|
||||
}
|
||||
|
||||
void json_printer::print_devices_json()
|
||||
{
|
||||
nlohmann::ordered_json root;
|
||||
add_devices_section(root);
|
||||
m_ostream << root.dump(2) << "\n";
|
||||
}
|
||||
|
||||
} // namespace nvbench
|
||||
|
||||
@@ -60,6 +60,8 @@ struct json_printer : nvbench::printer_base
|
||||
[[nodiscard]] bool get_enable_binary_output() const { return m_enable_binary_output; }
|
||||
void set_enable_binary_output(bool b) { m_enable_binary_output = b; }
|
||||
|
||||
void print_devices_json();
|
||||
|
||||
protected:
|
||||
// Virtual API from printer_base:
|
||||
void do_log_argv(const std::vector<std::string> &argv) override { m_argv = argv; }
|
||||
|
||||
@@ -403,10 +403,17 @@ void option_parser::parse_range(option_parser::arg_iterator_t first,
|
||||
this->print_list(printer);
|
||||
std::exit(0);
|
||||
}
|
||||
else if (arg == "--jsonlist" || arg == "-l")
|
||||
else if (arg == "--jsonlist-benches")
|
||||
{
|
||||
nvbench::json_printer printer{std::cout};
|
||||
this->print_list(printer);
|
||||
const auto &bench_mgr = nvbench::benchmark_manager::get();
|
||||
printer.print_benchmark_list(bench_mgr.get_benchmarks());
|
||||
std::exit(0);
|
||||
}
|
||||
else if (arg == "--jsonlist-devices")
|
||||
{
|
||||
nvbench::json_printer printer{std::cout};
|
||||
printer.print_devices_json();
|
||||
std::exit(0);
|
||||
}
|
||||
else if (arg == "--persistence-mode" || arg == "--pm")
|
||||
@@ -590,6 +597,7 @@ void option_parser::print_version() const
|
||||
void option_parser::print_list(printer_base& printer) const
|
||||
{
|
||||
const auto &bench_mgr = nvbench::benchmark_manager::get();
|
||||
printer.print_device_info();
|
||||
printer.print_benchmark_list(bench_mgr.get_benchmarks());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user