MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / algo_benchmark

Function algo_benchmark

dnn/test/common/benchmarker.h:359–381  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

357////////////////// Algo Benchmark ////////////////////////
358template <typename Opr, typename Proxy = OprProxy<Opr>, typename T = Timer>
359float algo_benchmark(
360 Benchmarker<Opr, T, Proxy>& benchmark, TensorLayoutArray layouts,
361 const std::string& algo_base) {
362 Proxy proxy;
363 auto opr = benchmark.opr();
364 opr->param() = benchmark.param();
365 proxy.deduce_layout(opr, layouts);
366 auto algos = OprAlgoProxy<Opr>::get_all_algorithms_info_safe(opr, layouts);
367 float min_used = std::numeric_limits<float>::max();
368 bool execed = false;
369 for (auto i : algos) {
370 if (std::regex_match(i.desc.name, std::regex("(" + algo_base + ")(.*)"))) {
371 opr->execution_policy().algo = i.desc;
372 auto used = benchmark.exec(layouts);
373 min_used = std::min(min_used, used);
374 printf("run algo: %s used: %f ms min_used: %f ms\n", i.desc.name.c_str(),
375 used, min_used);
376 execed = true;
377 }
378 }
379 megdnn_assert(execed, "no algo start with %s\n", algo_base.c_str());
380 return min_used;
381}
382
383template <typename Opr, typename Proxy = OprProxy<Opr>, typename T = Timer>
384float algo_benchmark(

Callers

nothing calls this directly

Calls 7

maxFunction · 0.85
minFunction · 0.50
oprMethod · 0.45
paramMethod · 0.45
deduce_layoutMethod · 0.45
execMethod · 0.45
make_layoutsMethod · 0.45

Tested by

no test coverage detected