diff --git a/src/opr/impl/search_policy/algo_chooser.cpp b/src/opr/impl/search_policy/algo_chooser.cpp index 74d619c1..b6e07a2c 100644 --- a/src/opr/impl/search_policy/algo_chooser.cpp +++ b/src/opr/impl/search_policy/algo_chooser.cpp @@ -185,15 +185,30 @@ size_t AlgoChooser::setup_algo(const TensorLayoutArray& layouts, algo = get_algo(ctx); } size_t workspace = ctx.get_workspace_size_bytes(algo); - mgb_log_debug( - "%s: tensor layouts(%s %s, %s %s) -> (%s %s): algo=%s " - "workspace=%.2fMiB reproducible=%d", - mgb_opr->dyn_typeinfo()->name, layouts[0].to_string().c_str(), - layouts[0].dtype.name(), layouts[1].to_string().c_str(), - layouts[1].dtype.name(), - layouts[layouts.size() - 1].to_string().c_str(), - layouts[layouts.size() - 1].dtype.name(), algo.name.c_str(), - workspace / (1024 * 1024.0), algo.is_reproducible); + + std::string ret; + ret.append(mgb_opr->dyn_typeinfo()->name); + ret.append(": tensor layouts("); + for (size_t i = 0; i < arity_in; ++i) { + if (i) { + ret.append(", "); + } + ret.append(layouts[i].to_string() + " "); + ret.append(layouts[i].dtype.name()); + } + ret.append(") -> ("); + for (size_t i = 0; i < arity_out; ++i) { + if (i) { + ret.append(", "); + } + ret.append(layouts[i + arity_in].to_string() + " "); + ret.append(layouts[i + arity_in].dtype.name()); + } + ret.append("): algo=" + algo.name); + ret.append(ssprintf(" workspace=%.2fMiB reproducible=%d", + workspace / (1024 * 1024.0), algo.is_reproducible)); + mgb_log_debug("%s", ret.c_str()); + megdnn_opr->execution_policy() = {algo}; return workspace; }