其他分享
首页 > 其他分享> > TensorRT教程18:使用DLA(深学习加速器)

TensorRT教程18:使用DLA(深学习加速器)

作者:互联网

使用DLA(深学习加速器)

https://github.com/NVIDIA/TensorRT/tree/master/samples/opensource/sampleMNIST

示例:带有 DLA 的 sampleMNIST

示例首先创建构建器:

auto builder = SampleUniquePtr<nvinfer1::IBuilder>(nvinfer1::createInferBuilder(gLogger));
if (!builder) return false;
builder->setMaxBatchSize(batchSize);
config->setMaxWorkspaceSize(16_MB);

然后,启用 GPU回退模式:

config->setFlag(BuilderFlag::kGPU_FALLBACK);
config->setFlag(BuilderFlag::kFP16); or config->setFlag(BuilderFlag::kINT8);

在 DLA 上启用执行,其中 核心 指定要执行的 DLA 核心上:

config->setDefaultDeviceType(DeviceType::kDLA);
config->setDLACore(dlaCore);

通过这些额外的更改,sampleMNIST 已准备好在 DLA 上执行。 运行示例MNIST对于 DLA Core 1,请使用以下内容命令:

 ./sample_mnist --useDLACore=1 [--int8|--fp16]

示例:在网络创建期间为层启用 DLA 模式 ]

在这个例子中,让我们创建一个简单的网络,其中包含输入、卷积和 输出。

  1. 创建构建器和网络:
IBuilder* builder = createInferBuilder(gLogger);
INetworkDefinition* network = builder->createNetworkV2(0U);
  1. 使用输入维度将输入层添加到网络。
auto data = network->addInput(INPUT_BLOB_NAME, dt, Dims3{1, INPUT_H, INPUT_W});
  1. 添加具有隐藏层输入节点、步幅和权重的卷积层过滤和偏置。
auto conv1 = network->addConvolution(*data->getOutput(0), 20, DimsHW{5, 5}, weightMap["conv1filter"], weightMap["conv1bias"]);
conv1->setStride(DimsHW{1, 1});
  1. 设置卷积层在 DLA 上运行:
if(canRunOnDLA(conv1))
{
config->setFlag(BuilderFlag::kFP16); or config->setFlag(BuilderFlag::kINT8);
builder->setDeviceType(conv1, DeviceType::kDLA); 
}
  1. 标记输出:
network->markOutput(*conv1->getOutput(0));
  1. 将 DLA 引擎设置为在以下位置执行:
engine->setDLACore(0)

标签:DLA,BuilderFlag,18,builder,TensorRT,setFlag,conv1,config
来源: https://blog.csdn.net/weixin_41562691/article/details/119085054