代码拉取完成,页面将自动刷新
/*
* SPDX-License-Identifier: Apache-2.0
*/
#include "onnxErrorRecorder.hpp"
#include <exception>
namespace onnx2trt
{
ONNXParserErrorRecorder* ONNXParserErrorRecorder::create(
nvinfer1::ILogger* logger, nvinfer1::IErrorRecorder* otherRecorder)
{
try
{
auto recorder = new ONNXParserErrorRecorder(logger, otherRecorder);
if (recorder)
{
recorder->incRefCount();
}
return recorder;
}
catch (const std::exception& e)
{
logError(logger, e.what());
return nullptr;
}
}
void ONNXParserErrorRecorder::destroy(ONNXParserErrorRecorder*& recorder)
{
if (recorder)
{
recorder->decRefCount();
recorder = nullptr;
}
}
void ONNXParserErrorRecorder::logError(nvinfer1::ILogger* logger, const char* str)
{
if (logger)
{
logger->log(ILogger::Severity::kERROR, str);
}
}
ONNXParserErrorRecorder::ONNXParserErrorRecorder(
nvinfer1::ILogger* logger, nvinfer1::IErrorRecorder* otherRecorder)
: mUserRecorder(otherRecorder)
, mLogger(logger)
{
if (mUserRecorder)
{
mUserRecorder->incRefCount();
}
}
ONNXParserErrorRecorder::~ONNXParserErrorRecorder() noexcept
{
if (mUserRecorder)
{
mUserRecorder->decRefCount();
}
}
void ONNXParserErrorRecorder::clear() noexcept
{
try
{
// grab a lock so that there is no addition while clearing.
std::lock_guard<std::mutex> guard(mStackLock);
mErrorStack.clear();
}
catch (const std::exception& e)
{
logError(mLogger, e.what());
}
};
bool ONNXParserErrorRecorder::reportError(
nvinfer1::ErrorCode val, nvinfer1::IErrorRecorder::ErrorDesc desc) noexcept
{
try
{
std::lock_guard<std::mutex> guard(mStackLock);
mErrorStack.push_back(errorPair(val, desc));
if (mUserRecorder)
{
mUserRecorder->reportError(val, desc);
}
else
{
logError(mLogger, desc);
}
}
catch (const std::exception& e)
{
logError(mLogger, e.what());
}
// All errors are considered fatal.
return true;
}
nvinfer1::IErrorRecorder::RefCount ONNXParserErrorRecorder::incRefCount() noexcept
{
// Atomically increment or decrement the ref counter.
return ++mRefCount;
}
nvinfer1::IErrorRecorder::RefCount ONNXParserErrorRecorder::decRefCount() noexcept
{
auto newVal = --mRefCount;
if (newVal == 0)
{
delete this;
}
return newVal;
}
} // namespace onnx2trt
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。