29 inline std::string get_alg_name()
const {
return impl_get_alg_name(); }
31 inline bool was_configured(
const sham::DeviceScheduler_ptr &dev_sched)
const {
32 return impl_was_configured(dev_sched);
35 inline void ensure_init(
const sham::DeviceScheduler_ptr &dev_sched) {
36 if (!impl_was_configured(dev_sched)) {
37 set_config(dev_sched, get_default_config(dev_sched));
41 inline std::string get_config(
const sham::DeviceScheduler_ptr &dev_sched) {
42 ensure_init(dev_sched);
43 return impl_get_config(dev_sched);
46 inline void set_config(
const sham::DeviceScheduler_ptr &dev_sched,
const std::string &cfg) {
50 "switching config for alg {} to cfg={}", impl_get_alg_name(), cfg));
51 impl_set_config(dev_sched, cfg);
54 inline std::string get_default_config(
const sham::DeviceScheduler_ptr &dev_sched) {
55 if (
auto cfg = impl_autotune(dev_sched)) {
58 return impl_get_default_config(dev_sched);
62 inline std::vector<std::string> get_avail_configs(
63 const sham::DeviceScheduler_ptr &dev_sched) {
64 return impl_get_avail_configs(dev_sched);
69 virtual std::string impl_get_alg_name()
const = 0;
70 virtual bool impl_was_configured(
const sham::DeviceScheduler_ptr &)
const = 0;
71 virtual std::string impl_get_config(
const sham::DeviceScheduler_ptr &)
const = 0;
72 virtual std::string impl_get_default_config(
const sham::DeviceScheduler_ptr &)
const = 0;
73 virtual void impl_set_config(
const sham::DeviceScheduler_ptr &,
const std::string &cfg) = 0;
74 virtual std::vector<std::string> impl_get_avail_configs(
const sham::DeviceScheduler_ptr &)
78 inline virtual std::optional<std::string> impl_autotune(
const sham::DeviceScheduler_ptr &) {
79 logger::info_ln(
"Algs",
"no autotuning registered for", impl_get_alg_name());