Skip to main content
The SessionOptions class provides configuration options for creating and running inference sessions.

Namespace

Class Declaration

Constructor

SessionOptions()

Creates a new SessionOptions instance with default settings.
Example:

Static Factory Methods

MakeSessionOptionWithCudaProvider

Creates SessionOptions configured for CUDA execution.
Parameters:
  • deviceId (int): CUDA device ID (default: 0)
Example:

MakeSessionOptionWithCudaProvider (Advanced)

Creates SessionOptions with detailed CUDA provider options.
Example:

MakeSessionOptionWithTensorrtProvider

Creates SessionOptions configured for TensorRT execution.

Properties and Methods

Graph Optimization Level

Controls the level of graph optimizations applied.
Values:
  • ORT_DISABLE_ALL - No optimizations
  • ORT_ENABLE_BASIC - Basic optimizations (constant folding, redundant node elimination)
  • ORT_ENABLE_EXTENDED - Extended optimizations (operator fusion)
  • ORT_ENABLE_LAYOUT - Layout transformations
  • ORT_ENABLE_ALL - All available optimizations
Example:

Execution Mode

Controls sequential vs parallel execution.
Values:
  • ORT_SEQUENTIAL - Execute operators sequentially
  • ORT_PARALLEL - Execute operators in parallel when possible
Example:

Thread Configuration

IntraOpNumThreads

Sets the number of threads used to parallelize execution within nodes.
Example:

InterOpNumThreads

Sets the number of threads used to parallelize execution between nodes.
Example:

Memory Optimization

EnableCpuMemArena

Enables the CPU memory arena allocator.
Example:

EnableMemPattern

Enables memory pattern optimization.
Example:

Profiling

EnableProfiling

Enables profiling for the session.

ProfileOutputPathPrefix

Sets the output path prefix for profiling data.
Example:

Logging

LogId

Sets the logger ID for the session.

LogSeverityLevel

Sets the minimum log severity level.
Example:

Optimized Model Output

OptimizedModelFilePath

Path to save the optimized model.
Example:

Execution Provider Configuration

AppendExecutionProvider_CPU

Adds CPU execution provider.

AppendExecutionProvider_CUDA

Adds CUDA execution provider.
Example:

AppendExecutionProvider_CUDA (Advanced)

Adds CUDA provider with detailed options.

AppendExecutionProvider_DML

Adds DirectML execution provider (Windows only).

AppendExecutionProvider_TensorRT

Adds TensorRT execution provider.

AppendExecutionProvider_OpenVINO

Adds OpenVINO execution provider.
Example:

Advanced Configuration

AddConfigEntry

Adds a configuration entry.
Example:

AddSessionConfigEntry

Adds a session configuration entry.

AddInitializer

Adds an initializer to the session.

RegisterCustomOpLibrary

Registers a custom operator library.
Example:

Complete Examples

Basic Configuration

GPU Acceleration (CUDA)

Production Configuration

Model Optimization and Export

Custom Operators

Advanced CUDA Configuration

Performance Tuning Guide

CPU Optimization

GPU Optimization

Memory-Constrained Environments

Best Practices

  1. Set appropriate optimization level: Use ORT_ENABLE_ALL for production
  2. Configure threading: Match your workload and hardware
  3. Enable memory optimizations: Unless memory-constrained
  4. Use GPU when available: Significant performance gains
  5. Profile your model: Enable profiling to identify bottlenecks
  6. Reuse SessionOptions: Create once, use for multiple sessions
  7. Always dispose: SessionOptions implements IDisposable

See Also