/// <summary> /// A helper method to construct a SessionOptions object for CUDA execution provider. /// Use only if CUDA is installed and you have the onnxruntime package specific to this Execution Provider. /// </summary> /// <param name="cudaProviderOptions">CUDA EP provider options</param> /// <returns>A SessionsOptions() object configured for execution on provider options</returns> public static SessionOptions MakeSessionOptionWithCudaProvider(OrtCUDAProviderOptions cudaProviderOptions) { CheckCudaExecutionProviderDLLs(); SessionOptions options = new SessionOptions(); try { options.AppendExecutionProvider_CUDA(cudaProviderOptions); return(options); } catch (Exception) { options.Dispose(); throw; } }
/// <summary> /// A helper method to construct a SessionOptions object for TensorRT execution. /// Use only if CUDA/TensorRT are installed and you have the onnxruntime package specific to this Execution Provider. /// </summary> /// <param name="deviceId"></param> /// <returns>A SessionsOptions() object configured for execution on deviceId</returns> public static SessionOptions MakeSessionOptionWithTensorrtProvider(int deviceId = 0) { CheckTensorrtExecutionProviderDLLs(); SessionOptions options = new SessionOptions(); try { options.AppendExecutionProvider_Tensorrt(deviceId); options.AppendExecutionProvider_CUDA(deviceId); return(options); } catch (Exception) { options.Dispose(); throw; } }
/// <summary> /// A helper method to construct a SessionOptions object for TensorRT execution. /// Use only if CUDA/TensorRT are installed and you have the onnxruntime package specific to this Execution Provider. /// </summary> /// <param name="deviceId"></param> /// <returns>A SessionsOptions() object configured for execution on deviceId</returns> public static SessionOptions MakeSessionOptionWithTensorrtProvider(int deviceId = 0) { CheckTensorrtExecutionProviderDLLs(); SessionOptions options = new SessionOptions(); try { NativeApiStatus.VerifySuccess(NativeMethods.OrtSessionOptionsAppendExecutionProvider_Tensorrt(options.Handle, deviceId)); NativeApiStatus.VerifySuccess(NativeMethods.OrtSessionOptionsAppendExecutionProvider_CUDA(options.Handle, deviceId)); NativeApiStatus.VerifySuccess(NativeMethods.OrtSessionOptionsAppendExecutionProvider_CPU(options.Handle, 1)); return(options); } catch (Exception e) { options.Dispose(); throw e; } }
/// <summary> /// A helper method to construct a SessionOptions object for TensorRT execution provider. /// Use only if CUDA/TensorRT are installed and you have the onnxruntime package specific to this Execution Provider. /// </summary> /// <param name="trtProviderOptions">TensorRT EP provider options</param> /// <returns>A SessionsOptions() object configured for execution on provider options</returns> public static SessionOptions MakeSessionOptionWithTensorrtProvider(OrtTensorRTProviderOptions trtProviderOptions) { CheckTensorrtExecutionProviderDLLs(); SessionOptions options = new SessionOptions(); try { // Make sure that CUDA EP uses the same device id as TensorRT EP. options.AppendExecutionProvider_Tensorrt(trtProviderOptions); options.AppendExecutionProvider_CUDA(trtProviderOptions.GetDeviceId()); return(options); } catch (Exception) { options.Dispose(); throw; } }
/// <summary> /// A helper method to construct a SessionOptions object for TensorRT execution provider. /// Use only if CUDA/TensorRT are installed and you have the onnxruntime package specific to this Execution Provider. /// </summary> /// <param name="trtProviderOptions">TensorRT EP provider options</param> /// <returns>A SessionsOptions() object configured for execution on provider options</returns> public static SessionOptions MakeSessionOptionWithTensorrtProvider(OrtTensorRTProviderOptions trtProviderOptions) { CheckTensorrtExecutionProviderDLLs(); SessionOptions options = new SessionOptions(); try { // Make sure that CUDA EP uses the same device id as TensorRT EP. int deviceId = trtProviderOptions.GetDeviceId(); NativeApiStatus.VerifySuccess(NativeMethods.SessionOptionsAppendExecutionProvider_TensorRT(options.Handle, trtProviderOptions.Handle)); NativeApiStatus.VerifySuccess(NativeMethods.OrtSessionOptionsAppendExecutionProvider_CUDA(options.Handle, deviceId)); NativeApiStatus.VerifySuccess(NativeMethods.OrtSessionOptionsAppendExecutionProvider_CPU(options.Handle, 1)); return(options); } catch (Exception e) { options.Dispose(); throw e; } }
protected virtual void Dispose(bool disposing) { if (disposing) { // cleanup managed resources if (_builtInSessionOptions != null) { _builtInSessionOptions.Dispose(); } if (_builtInRunOptions != null) { _builtInRunOptions.Dispose(); } } // cleanup unmanaged resources if (_nativeHandle != IntPtr.Zero) { NativeMethods.OrtReleaseSession(_nativeHandle); } }