Add jsonlist-devices option

This commit is contained in:
Georgy Evtushenko
2023-04-13 16:32:19 +04:00
parent 9d6a60ef82
commit 5785d002e5
3 changed files with 49 additions and 29 deletions

View File

@@ -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

View File

@@ -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; }

View File

@@ -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());
}