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

Function gen_input_code

src/jit/impl/nvrtc/codegen_cuda.cpp:78–100  ·  view source on GitHub ↗

generate code to access input values in the kernel

Source from the content-addressed store, hash-verified

76
77//! generate code to access input values in the kernel
78void gen_input_code(
79 str_util::StrReplaceMap& replace_map, VarNode2AST& var2ast,
80 const JITExecutor::Args& args, const PlaceholderArray& placeholders) {
81 std::string decl_exps_str, assign_exps_str, decl_fastdiv_offset_str;
82 for (size_t i = 0; i < args.inputs.size(); i++) {
83 ASTPtr elem_var = ASTPtr::make<VariableAST>("x" + std::to_string(i));
84 ASTPtr elem_val = gen_data_ast(i, args.inputs[i]);
85 ASTPtr elem_decl =
86 ASTPtr::make<DeclFloatAST>(elem_var, CompNode::DeviceType::CUDA);
87 ASTPtr elem_assign = ASTPtr::make<AssignAST>(elem_var, elem_val);
88 var2ast[placeholders[args.inputs[i].idx]->output(0)] = elem_var;
89 decl_exps_str += elem_decl->code_gen();
90 assign_exps_str += elem_assign->code_gen();
91
92 ASTPtr offset_var = ASTPtr::make<VariableAST>("offset_" + std::to_string(i));
93 ASTPtr offset_decl = ASTPtr::make<DeclIntAST>(offset_var);
94 decl_fastdiv_offset_str += offset_decl->code_gen();
95 }
96 str_util::append_replace_map(
97 replace_map, {{"{{DECL_fastdiv_offset}}", decl_fastdiv_offset_str},
98 {"{{DECL_EXPRS}}", decl_exps_str},
99 {"{{ASSIGN_EXPRS}}", assign_exps_str}});
100}
101
102ASTPtr gen_opr_ast(cg::OperatorNodeBase* opr, const VarNode2AST& var2ast) {
103 ASTPtrArray cur_inputs;

Callers 1

codegen_cudaMethod · 0.85

Calls 6

to_stringFunction · 0.85
gen_data_astFunction · 0.85
append_replace_mapFunction · 0.85
sizeMethod · 0.45
outputMethod · 0.45
code_genMethod · 0.45

Tested by

no test coverage detected