MCPcopy Create free account
hub / github.com/alibaba/MNN / ExprModule

Method ExprModule

express/module/PipelineModule.cpp:34–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

32//#define MNN_PIPELINE_MODULE_DEBUG
33
34ExprModule::ExprModule(EXPRP expr) {
35 mExpr = expr;
36 setName(expr->name());
37 mInputs = expr->inputs();
38 auto op = mExpr->get();
39 if (op) {
40 auto typeName = EnumNameOpType(op->type());
41 setType(typeName);
42 }
43 for (int i = 0; i < mInputs.size(); ++i) {
44 auto inputExpr = mInputs[i]->expr().first;
45 if (inputExpr->get() != nullptr) {
46 mInputs[i] = nullptr;
47 mInputIndexes.emplace_back(i);
48 continue;
49 }
50 switch (inputExpr->inputType()) {
51 case VARP::INPUT:
52 mInputs[i] = nullptr;
53 mInputIndexes.emplace_back(i);
54 break;
55 case VARP::CONSTANT:
56 break;
57 case VARP::TRAINABLE:
58 addParameter(mInputs[i]);
59 break;
60 default:
61 break;
62 }
63 }
64 // TODO: Optimize the logic
65 if (!mExpr->mCanDecompose) {
66 ExecutorScope::Current()->setLazyComputeMode(Executor::LAZY_CONTENT);
67 }
68}
69
70std::vector<VARP> ExprModule::onForward(const std::vector<VARP>& inputs) {
71 MNN_ASSERT(mInputIndexes.size() == inputs.size());

Callers

nothing calls this directly

Calls 8

setNameFunction · 0.85
EnumNameOpTypeFunction · 0.85
setTypeFunction · 0.85
setLazyComputeModeMethod · 0.80
nameMethod · 0.45
getMethod · 0.45
typeMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected