diff --git a/src/core/test/mem_reuse.cpp b/src/core/test/mem_reuse.cpp index 20f7d5ed..f9f57a5e 100644 --- a/src/core/test/mem_reuse.cpp +++ b/src/core/test/mem_reuse.cpp @@ -17,6 +17,7 @@ #include "megbrain/opr/blas.h" #include "megbrain/test/helper.h" +#include "megdnn/oprs/base.h" using namespace mgb; @@ -26,7 +27,8 @@ SymbolVar make_conv(SymbolVar inp, SymbolVar kern) { using Conv = opr::Convolution; Conv::ExecutionPolicy poly; poly.workspace_limit = 0; - return Conv::make(inp, kern, {}, poly); + SymbolVar conv = Conv::make(inp, kern, {}, poly); + return conv; } // used for test NO_SYS_MEM_ALLOC @@ -74,9 +76,12 @@ MGB_DYN_TYPE_OBJ_FINAL_IMPL(SharedDeviceTensorDirect); TEST(TestMemReuse, PureMLP0) { auto graph = ComputingGraph::make(); HostTensorGenerator<> gen; - auto host_inp = gen({256, 1, 64, 64}), - host_kern0 = gen({32, 1, 1, 1}), - host_kern1 = gen({32, 32, 1, 1}); + CompNode cn = CompNode::load("cpu0"); + //! FIXME currently recursive chooser does not support workspace_limit in + //! heuristic + auto host_inp = gen({256, 1, 64, 64}, cn), + host_kern0 = gen({32, 1, 1, 1}, cn), + host_kern1 = gen({32, 32, 1, 1}, cn); auto inp = opr::SharedDeviceTensor::make(*graph, *host_inp, {"inp"}), kern0 = opr::SharedDeviceTensor::make(*graph, *host_kern0, {"kern0"}), kern1 = opr::SharedDeviceTensor::make(*graph, *host_kern1, {"kern1"}); @@ -102,9 +107,12 @@ TEST(TestMemReuse, PureMLP0) { TEST(TestMemReuse, PureMLP1) { auto graph = ComputingGraph::make(); HostTensorGenerator<> gen; - auto host_inp = gen({256, 1, 64, 64}), - host_kern0 = gen({32, 1, 1, 1}), - host_kern1 = gen({32, 32, 1, 1}); + CompNode cn = CompNode::load("cpu0"); + //! FIXME currently recursive chooser does not support workspace_limit in + //! heuristic + auto host_inp = gen({256, 1, 64, 64}, cn), + host_kern0 = gen({32, 1, 1, 1}, cn), + host_kern1 = gen({32, 32, 1, 1}, cn); auto inp = opr::Host2DeviceCopy::make(*graph, host_inp, {"inp"}), kern0 = opr::SharedDeviceTensor::make(*graph, *host_kern0, {"kern0"}), kern1 = opr::SharedDeviceTensor::make(*graph, *host_kern1, {"kern1"}), @@ -338,4 +346,3 @@ TEST(TestMemReuse, FwdNoSysMemAlloc) { } // vim: syntax=cpp.doxygen foldmethod=marker foldmarker=f{{{,f}}} - diff --git a/src/opr/impl/search_policy/algo_chooser.cpp b/src/opr/impl/search_policy/algo_chooser.cpp index d12ff319..45e9cd68 100644 --- a/src/opr/impl/search_policy/algo_chooser.cpp +++ b/src/opr/impl/search_policy/algo_chooser.cpp @@ -11,6 +11,7 @@ */ #include "megbrain/opr/search_policy/algo_chooser.h" +#include #include "megbrain/opr/internal/megdnn_opr_wrapper.h" #include "megbrain/opr/search_policy/algo_chooser_helper.h" #include "megbrain/opr/search_policy/profiler.h" @@ -473,6 +474,13 @@ AlgoChooser::ExeContext::get_profile_result_from_cache( template typename AlgoChooser::ImplExecutionPolicy AlgoChooser::ExeContext::choose_by_heuristic(bool reproducible) const { + if (m_execution_policy.workspace_limit != + std::numeric_limits::max()) { + mgb_log_warn( + "workspace_limit should not be setted if choose algo by " + "heuristic"); + } auto workspace_limit = WorkspaceLimitGetter::get_workspace_limit( owner_graph(), m_cn, m_execution_policy.workspace_limit); ImplExecutionPolicy policy;