mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-10 17:37:14 +00:00
Combine custom logger global threadpools (#4857)
* add custom logger and global threadpools to C and C++ API * code cleanup and formatting * reformat code * tidy up some more code formatting * remove comment * fix API break from merging from master * renamed API function to CreateEnvWithCustomLoggerAndGlobalThreadPools * rename log variable and apply clang-format
This commit is contained in:
parent
6ad39819c2
commit
4ed31ca214
5 changed files with 57 additions and 26 deletions
|
|
@ -289,13 +289,13 @@ struct OrtApi {
|
|||
/**
|
||||
* \param out Should be freed by `OrtReleaseEnv` after use
|
||||
*/
|
||||
ORT_API2_STATUS(CreateEnv, OrtLoggingLevel default_logging_level, _In_ const char* logid, _Outptr_ OrtEnv** out);
|
||||
ORT_API2_STATUS(CreateEnv, OrtLoggingLevel logging_level, _In_ const char* logid, _Outptr_ OrtEnv** out);
|
||||
|
||||
/**
|
||||
* \param out Should be freed by `OrtReleaseEnv` after use
|
||||
*/
|
||||
ORT_API2_STATUS(CreateEnvWithCustomLogger, OrtLoggingFunction logging_function, _In_opt_ void* logger_param,
|
||||
OrtLoggingLevel default_warning_level, _In_ const char* logid, _Outptr_ OrtEnv** out);
|
||||
OrtLoggingLevel logging_level, _In_ const char* logid, _Outptr_ OrtEnv** out);
|
||||
|
||||
// Platform telemetry events are on by default since they are lightweight. You can manually turn them off.
|
||||
ORT_API2_STATUS(EnableTelemetryEvents, _In_ const OrtEnv* env);
|
||||
|
|
@ -819,11 +819,9 @@ struct OrtApi {
|
|||
* Use this in conjunction with DisablePerSessionThreads API or else the session will use
|
||||
* its own thread pools.
|
||||
*/
|
||||
ORT_API2_STATUS(CreateEnvWithGlobalThreadPools, OrtLoggingLevel default_logging_level, _In_ const char* logid,
|
||||
ORT_API2_STATUS(CreateEnvWithGlobalThreadPools, OrtLoggingLevel logging_level, _In_ const char* logid,
|
||||
_In_ const OrtThreadingOptions* t_options, _Outptr_ OrtEnv** out);
|
||||
|
||||
/* TODO: Should there be a version of CreateEnvWithGlobalThreadPools with custom logging function? */
|
||||
|
||||
/*
|
||||
* Calling this API will make the session use the global threadpools shared across sessions.
|
||||
* This API should be used in conjunction with CreateEnvWithGlobalThreadPools API.
|
||||
|
|
@ -1064,6 +1062,16 @@ struct OrtApi {
|
|||
*/
|
||||
ORT_API2_STATUS(AddInitializer, _Inout_ OrtSessionOptions* options, _In_z_ const char* name,
|
||||
_In_ const OrtValue* val);
|
||||
|
||||
/**
|
||||
* Creates a custom environment with global threadpools and logger that will be shared across sessions.
|
||||
* Use this in conjunction with DisablePerSessionThreads API or else the session will use
|
||||
* its own thread pools.
|
||||
*
|
||||
* \param out should be freed by `OrtReleaseEnv` after use
|
||||
*/
|
||||
ORT_API2_STATUS(CreateEnvWithCustomLoggerAndGlobalThreadPools, OrtLoggingFunction logging_function, _In_opt_ void* logger_param, OrtLoggingLevel logging_level,
|
||||
_In_ const char* logid, _In_ const struct OrtThreadingOptions* tp_options, _Outptr_ OrtEnv** out);
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -177,9 +177,11 @@ struct ModelMetadata;
|
|||
|
||||
struct Env : Base<OrtEnv> {
|
||||
Env(std::nullptr_t) {}
|
||||
Env(OrtLoggingLevel default_logging_level = ORT_LOGGING_LEVEL_WARNING, _In_ const char* logid = "");
|
||||
Env(const OrtThreadingOptions* tp_options, OrtLoggingLevel default_logging_level = ORT_LOGGING_LEVEL_WARNING, _In_ const char* logid = "");
|
||||
Env(OrtLoggingLevel default_logging_level, const char* logid, OrtLoggingFunction logging_function, void* logger_param);
|
||||
Env(OrtLoggingLevel logging_level = ORT_LOGGING_LEVEL_WARNING, _In_ const char* logid = "");
|
||||
Env(const OrtThreadingOptions* tp_options, OrtLoggingLevel logging_level = ORT_LOGGING_LEVEL_WARNING, _In_ const char* logid = "");
|
||||
Env(OrtLoggingLevel logging_level, const char* logid, OrtLoggingFunction logging_function, void* logger_param);
|
||||
Env(const OrtThreadingOptions* tp_options, OrtLoggingFunction logging_function, void* logger_param,
|
||||
OrtLoggingLevel logging_level = ORT_LOGGING_LEVEL_WARNING, _In_ const char* logid = "");
|
||||
explicit Env(OrtEnv* p) : Base<OrtEnv>{p} {}
|
||||
|
||||
Env& EnableTelemetryEvents();
|
||||
|
|
|
|||
|
|
@ -286,18 +286,24 @@ inline void IoBinding::ClearBoundOutputs() {
|
|||
GetApi().ClearBoundOutputs(p_);
|
||||
}
|
||||
|
||||
inline Env::Env(OrtLoggingLevel default_warning_level, _In_ const char* logid) {
|
||||
ThrowOnError(GetApi().CreateEnv(default_warning_level, logid, &p_));
|
||||
inline Env::Env(OrtLoggingLevel logging_level, _In_ const char* logid) {
|
||||
ThrowOnError(GetApi().CreateEnv(logging_level, logid, &p_));
|
||||
ThrowOnError(GetApi().SetLanguageProjection(p_, OrtLanguageProjection::ORT_PROJECTION_CPLUSPLUS));
|
||||
}
|
||||
|
||||
inline Env::Env(OrtLoggingLevel default_warning_level, const char* logid, OrtLoggingFunction logging_function, void* logger_param) {
|
||||
ThrowOnError(GetApi().CreateEnvWithCustomLogger(logging_function, logger_param, default_warning_level, logid, &p_));
|
||||
inline Env::Env(OrtLoggingLevel logging_level, const char* logid, OrtLoggingFunction logging_function, void* logger_param) {
|
||||
ThrowOnError(GetApi().CreateEnvWithCustomLogger(logging_function, logger_param, logging_level, logid, &p_));
|
||||
ThrowOnError(GetApi().SetLanguageProjection(p_, OrtLanguageProjection::ORT_PROJECTION_CPLUSPLUS));
|
||||
}
|
||||
|
||||
inline Env::Env(const OrtThreadingOptions* tp_options, OrtLoggingLevel default_warning_level, _In_ const char* logid) {
|
||||
ThrowOnError(GetApi().CreateEnvWithGlobalThreadPools(default_warning_level, logid, tp_options, &p_));
|
||||
inline Env::Env(const OrtThreadingOptions* tp_options, OrtLoggingLevel logging_level, _In_ const char* logid) {
|
||||
ThrowOnError(GetApi().CreateEnvWithGlobalThreadPools(logging_level, logid, tp_options, &p_));
|
||||
ThrowOnError(GetApi().SetLanguageProjection(p_, OrtLanguageProjection::ORT_PROJECTION_CPLUSPLUS));
|
||||
}
|
||||
|
||||
inline Env::Env(const OrtThreadingOptions* tp_options, OrtLoggingFunction logging_function, void* logger_param,
|
||||
OrtLoggingLevel logging_level, _In_ const char* logid) {
|
||||
ThrowOnError(GetApi().CreateEnvWithCustomLoggerAndGlobalThreadPools(logging_function, logger_param, logging_level, logid, tp_options, &p_));
|
||||
ThrowOnError(GetApi().SetLanguageProjection(p_, OrtLanguageProjection::ORT_PROJECTION_CPLUSPLUS));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -83,30 +83,41 @@ using namespace onnxruntime;
|
|||
auto tensor = v->GetMutable<onnxruntime::Tensor>();
|
||||
|
||||
ORT_API_STATUS_IMPL(OrtApis::CreateEnvWithCustomLogger, OrtLoggingFunction logging_function,
|
||||
_In_opt_ void* logger_param, OrtLoggingLevel default_warning_level, _In_ const char* logid,
|
||||
_In_opt_ void* logger_param, OrtLoggingLevel logging_level, _In_ const char* logid,
|
||||
_Outptr_ OrtEnv** out) {
|
||||
API_IMPL_BEGIN
|
||||
OrtEnv::LoggingManagerConstructionInfo lm_info{logging_function, logger_param, default_warning_level, logid};
|
||||
OrtEnv::LoggingManagerConstructionInfo lm_info{logging_function, logger_param, logging_level, logid};
|
||||
Status status;
|
||||
*out = OrtEnv::GetInstance(lm_info, status);
|
||||
return ToOrtStatus(status);
|
||||
API_IMPL_END
|
||||
}
|
||||
|
||||
ORT_API_STATUS_IMPL(OrtApis::CreateEnv, OrtLoggingLevel default_warning_level,
|
||||
ORT_API_STATUS_IMPL(OrtApis::CreateEnv, OrtLoggingLevel logging_level,
|
||||
_In_ const char* logid, _Outptr_ OrtEnv** out) {
|
||||
API_IMPL_BEGIN
|
||||
OrtEnv::LoggingManagerConstructionInfo lm_info{nullptr, nullptr, default_warning_level, logid};
|
||||
OrtEnv::LoggingManagerConstructionInfo lm_info{nullptr, nullptr, logging_level, logid};
|
||||
Status status;
|
||||
*out = OrtEnv::GetInstance(lm_info, status);
|
||||
return ToOrtStatus(status);
|
||||
API_IMPL_END
|
||||
}
|
||||
|
||||
ORT_API_STATUS_IMPL(OrtApis::CreateEnvWithGlobalThreadPools, OrtLoggingLevel default_warning_level,
|
||||
ORT_API_STATUS_IMPL(OrtApis::CreateEnvWithGlobalThreadPools, OrtLoggingLevel logging_level,
|
||||
_In_ const char* logid, _In_ const struct OrtThreadingOptions* tp_options, _Outptr_ OrtEnv** out) {
|
||||
API_IMPL_BEGIN
|
||||
OrtEnv::LoggingManagerConstructionInfo lm_info{nullptr, nullptr, default_warning_level, logid};
|
||||
OrtEnv::LoggingManagerConstructionInfo lm_info{nullptr, nullptr, logging_level, logid};
|
||||
Status status;
|
||||
*out = OrtEnv::GetInstance(lm_info, status, tp_options);
|
||||
return ToOrtStatus(status);
|
||||
API_IMPL_END
|
||||
}
|
||||
|
||||
ORT_API_STATUS_IMPL(OrtApis::CreateEnvWithCustomLoggerAndGlobalThreadPools, OrtLoggingFunction logging_function, _In_opt_ void* logger_param,
|
||||
OrtLoggingLevel logging_level, _In_ const char* logid, _In_ const struct OrtThreadingOptions* tp_options,
|
||||
_Outptr_ OrtEnv** out) {
|
||||
API_IMPL_BEGIN
|
||||
OrtEnv::LoggingManagerConstructionInfo lm_info{logging_function, logger_param, logging_level, logid};
|
||||
Status status;
|
||||
*out = OrtEnv::GetInstance(lm_info, status, tp_options);
|
||||
return ToOrtStatus(status);
|
||||
|
|
@ -2016,6 +2027,7 @@ static constexpr OrtApi ort_api_1_to_6 = {
|
|||
|
||||
// Version 6 - In development, feel free to add/remove/rearrange here
|
||||
&OrtApis::AddInitializer,
|
||||
&OrtApis::CreateEnvWithCustomLoggerAndGlobalThreadPools,
|
||||
};
|
||||
|
||||
// Assert to do a limited check to ensure Version 1 of OrtApi never changes (will detect an addition or deletion but not if they cancel out each other)
|
||||
|
|
|
|||
|
|
@ -26,9 +26,16 @@ _Check_return_ _Ret_notnull_ OrtStatus* ORT_API_CALL CreateStatus(OrtErrorCode c
|
|||
OrtErrorCode ORT_API_CALL GetErrorCode(_In_ const OrtStatus* status) NO_EXCEPTION ORT_ALL_ARGS_NONNULL;
|
||||
const char* ORT_API_CALL GetErrorMessage(_In_ const OrtStatus* status) NO_EXCEPTION ORT_ALL_ARGS_NONNULL;
|
||||
|
||||
ORT_API_STATUS_IMPL(CreateEnv, OrtLoggingLevel default_logging_level, _In_ const char* logid, _Outptr_ OrtEnv** out)
|
||||
ORT_API_STATUS_IMPL(CreateEnv, OrtLoggingLevel logging_level, _In_ const char* logid, _Outptr_ OrtEnv** out)
|
||||
ORT_ALL_ARGS_NONNULL;
|
||||
ORT_API_STATUS_IMPL(CreateEnvWithCustomLogger, OrtLoggingFunction logging_function, _In_opt_ void* logger_param, OrtLoggingLevel default_warning_level, _In_ const char* logid, _Outptr_ OrtEnv** out);
|
||||
ORT_API_STATUS_IMPL(CreateEnvWithCustomLogger, OrtLoggingFunction logging_function, _In_opt_ void* logger_param, OrtLoggingLevel logging_level, _In_ const char* logid, _Outptr_ OrtEnv** out);
|
||||
ORT_API_STATUS_IMPL(CreateEnvWithGlobalThreadPools, OrtLoggingLevel logging_level, _In_ const char* logid,
|
||||
_In_ const struct OrtThreadingOptions* t_options, _Outptr_ OrtEnv** out)
|
||||
ORT_ALL_ARGS_NONNULL;
|
||||
ORT_API_STATUS_IMPL(CreateEnvWithCustomLoggerAndGlobalThreadPools, OrtLoggingFunction logging_function, _In_opt_ void* logger_param, OrtLoggingLevel logging_level,
|
||||
_In_ const char* logid, _In_ const struct OrtThreadingOptions* tp_options, _Outptr_ OrtEnv** out)
|
||||
ORT_ALL_ARGS_NONNULL;
|
||||
|
||||
ORT_API_STATUS_IMPL(EnableTelemetryEvents, _In_ const OrtEnv* env);
|
||||
ORT_API_STATUS_IMPL(DisableTelemetryEvents, _In_ const OrtEnv* env);
|
||||
|
||||
|
|
@ -187,10 +194,6 @@ ORT_API_STATUS_IMPL(GetMapValueType, _In_ const OrtMapTypeInfo* map_type_info, _
|
|||
// OrtSequenceTypeInfo Accessors
|
||||
ORT_API_STATUS_IMPL(GetSequenceElementType, _In_ const OrtSequenceTypeInfo* sequence_type_info, _Outptr_ OrtTypeInfo** type_info);
|
||||
|
||||
ORT_API_STATUS_IMPL(CreateEnvWithGlobalThreadPools, OrtLoggingLevel default_logging_level, _In_ const char* logid,
|
||||
_In_ const struct OrtThreadingOptions* t_options, _Outptr_ OrtEnv** out)
|
||||
ORT_ALL_ARGS_NONNULL;
|
||||
|
||||
ORT_API_STATUS_IMPL(DisablePerSessionThreads, _In_ OrtSessionOptions* options);
|
||||
ORT_API_STATUS_IMPL(CreateThreadingOptions, _Outptr_ OrtThreadingOptions** out);
|
||||
ORT_API(void, ReleaseThreadingOptions, _Frees_ptr_opt_ OrtThreadingOptions*);
|
||||
|
|
|
|||
Loading…
Reference in a new issue