Description
Hello,
I’m having a new issue when trying to build an engine on a Jetson AGX Xavier. Precisely when i’m running the function that is supposed to create a context from an ONNX model :
TRTUniquePtr<nvinfer1::IBuilder> builder{nvinfer1::createInferBuilder(gLogger)}; //Create builder pointer
TRTUniquePtr<nvinfer1::INetworkDefinition> network{builder->createNetworkV2(explicitBatch)}; //Create Network pointer
TRTUniquePtr<nvonnxparser::IParser> parser{nvonnxparser::createParser(*network, gLogger)}; //Create parser for ONNX model
TRTUniquePtr<nvinfer1::IBuilderConfig> config{builder->createBuilderConfig()}; //Create config (depends on TensorRT version)
if (!parser->parseFromFile(model_path.c_str(), static_cast<int>(nvinfer1::ILogger::Severity::kINFO)))
{
std::cerr << "ERROR: could not parse the model.\n";
return;
}
// allow TensorRT to use up to 4GB of GPU memory for tactic selection.
config->setMaxWorkspaceSize(1ULL << 32);
// use FP16 mode if possible
if (builder->platformHasFastFp16())
{
config->setFlag(nvinfer1::BuilderFlag::kFP16);
std::cout << "Using FP16" << "\n";
}
engine.reset(builder->buildEngineWithConfig(*network, *config));
context.reset(engine->createExecutionContext());
TRTUniquePtr<nvinfer1::IHostMemory> engine_plan{engine->serialize()};
writeBuffer(engine_plan->data(), engine_plan->size(), enginePath);
The engine creation starts with some logs then display a warning and segfaults :
[W]onnx2trt_utils.cpp:364: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.
Using FP16
[W]Detected invalid timing cache, setup a local cache instead
Segmentation fault (core dumped)
The thing is I also have this warning on my desktop computer and it works fine, I also use to have this warning on the same Jetson Xavier and it worked fine but since then the board was reflashed to have PLLAON as clock source (for some CAN issues) and I wonder if it could be related. And either way, how to solve it ?
[EDIT] As explained below it turns out the segfault was not related to TensorRT or the new clock source but simply to a stack memory limit
Environment
TensorRT Version: 8.0.1.6
GPU Type: Jetson AGX Xavier
Nvidia Driver Version:
CUDA Version: 10.2.300
CUDNN Version: 8.2.1.32
Operating System + Version: Ubuntu 18.04