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