Страница:
Execution Engine
Страницы
CUDA Programming
Contrib Ops
Contribution Guide
Development Tips & Tricks
Development in Github
Distributed Training
Execution Engine
ExecutionProvider
Glossary
Graph
Home
Learning Roadmap
Leverage Existing Artifacts
Logging
Memory Management
Model Training Domain Knowledge
ONNX Dependency
Ops and Kernels
Per Op Gradient Building
Performance Investigation
Run a model with ORT
Testing
Upcoming Release Roadmap
Update ONNX Runtime Docs
User Interface
Write a kernel
1
Execution Engine
Sherlock редактировал(а) эту страницу 2021-03-12 13:58:08 -08:00
InferenceSession::Run()
- Read RunOptions and understand the options (run_option.h)
SequentialExecutor::Execute()
-
What's the purpose of ExecutionFrame? (execution_frame.h)
- How is one nodes output passed in as another node's input?
- What happens when we call context->Output() inside an op kernel?
- How are feeds and fetches stored in ExecutionFrame?
-
How is the execution order determined? (graph_viewer.cc)
- Default execution order uses Graph::ReverseDFS() to generated topological sort
- Priority-based execution order uses Graph::KahnsTopologicalSort with per-node priority
-
How is each node's kernel invoked ?
-
How does ORT guarantees all the cuda kernel is completed before session.run return?
Advance: GraphPartitioner
- How each node is determined to be place on which execution provider? (graph_partitioner.h)
Please use the learning roadmap on the home wiki page for building general understanding of ORT.