/usr/local/lib64/python3.6/site-packages/torch/include/torch/csrc/jit/tensorexpr
NameSizeModeActions
operators/-0755rm
analysis.h58880644editdlrm
block_codegen.h42110644editdlrm
bounds_inference.h22300644editdlrm
bounds_overlap.h33290644editdlrm
codegen.h64020644editdlrm
cpp_codegen.h22780644editdlrm
cpp_intrinsics.h7190644editdlrm
cuda_codegen.h77820644editdlrm
cuda_random.h26420644editdlrm
dim_arg.h8840644editdlrm
eval.h96390644editdlrm
exceptions.h32530644editdlrm
expr.h115880644editdlrm
external_functions.h12740644editdlrm
external_functions_registry.h23430644editdlrm
fwd_decls.h28060644editdlrm
graph_opt.h25530644editdlrm
half_support.h50380644editdlrm
hash_provider.h79300644editdlrm
intrinsic_symbols.h4200644editdlrm
ir.h226220644editdlrm
ir_cloner.h20690644editdlrm
ir_mutator.h20100644editdlrm
ir_printer.h36930644editdlrm
ir_simplifier.h150900644editdlrm
ir_verifier.h12400644editdlrm
ir_visitor.h18250644editdlrm
kernel.h92100644editdlrm
llvm_codegen.h31800644editdlrm
llvm_jit.h19650644editdlrm
loopnest.h215990644editdlrm
mem_dependency_checker.h130030644editdlrm
reduction.h67420644editdlrm
registerizer.h124980644editdlrm
stmt.h211380644editdlrm
tensor.h76400644editdlrm
tensorexpr_init.h2680644editdlrm
types.h38800644editdlrm
unique_name_manager.h9400644editdlrm
var_substitutor.h17530644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/include/torch/csrc/jit/tensorexpr/cpp_codegen.h (2278B)
#pragma once #include #include namespace torch { namespace jit { namespace tensorexpr { class CppVarNameRewriter; // Generates C++ code from the IR. // // Vector operations are unrolled. // For example: // C[Ramp(0, 1, 3)] = A[Ramp(0, 2, 3)] + B[Ramp(0, 3, 3)]; // is unrolled into: // C[0] = A[0] + B[0]; // C[1] = A[2] + B[3]; // C[2] = A[4] + B[6]; class TORCH_API CppPrinter : public IRPrinter { public: explicit CppPrinter(std::ostream* os); ~CppPrinter() override; void printPrologue(); using IRPrinter::visit; // Binary expressions. void visit(ModPtr) override; void visit(MaxPtr) override; void visit(MinPtr) override; // Conditional expressions. void visit(CompareSelectPtr) override; void visit(IfThenElsePtr) override; // Tensor operations. void visit(AllocatePtr) override; void visit(FreePtr) override; void visit(LoadPtr) override; void visit(StorePtr) override; // Casts. void visit(CastPtr) override; void visit(BitCastPtr) override; // Calls. void visit(IntrinsicsPtr) override; void visit(ExternalCallPtr) override; // Vars. void visit(LetPtr) override; void visit(VarPtr) override; // Vector data types. void visit(RampPtr) override; void visit(BroadcastPtr) override; private: int lane_; std::unordered_map vector_vars_; }; class TORCH_API CppCodeGen : public CodeGen { public: CppCodeGen( StmtPtr stmt, const std::vector& buffer_args, at::Device device = at::kCPU, const std::string& kernel_func_name = "func"); ~CppCodeGen() override; void call(const std::vector& args) override; void call_raw(const std::vector& args) override; template void operator()(const Ts&... ts) { call(std::vector({CallArg(ts)...})); } std::string getCodeText(const std::string& attr = "") override { return oss_.str(); } private: void init(); std::ostream& os() { return printer_->os(); } std::ostringstream oss_; std::unique_ptr printer_; std::unique_ptr var_name_rewriter_; }; } // namespace tensorexpr } // namespace jit } // namespace torch