MCPcopy Create free account
hub / github.com/NVIDIA/TensorRT / getAllRefitWeightsForLayer

Function getAllRefitWeightsForLayer

samples/common/sampleEngines.cpp:1418–1509  ·  view source on GitHub ↗

There is not a getWeightsName API, so we need to use WeightsRole.

Source from the content-addressed store, hash-verified

1416
1417// There is not a getWeightsName API, so we need to use WeightsRole.
1418std::vector<std::pair<WeightsRole, Weights>> getAllRefitWeightsForLayer(const ILayer& l)
1419{
1420 switch (l.getType())
1421 {
1422 case LayerType::kCONSTANT:
1423 {
1424 auto const& layer = static_cast<const nvinfer1::IConstantLayer&>(l);
1425 auto const weights = layer.getWeights();
1426 switch (weights.type)
1427 {
1428 case DataType::kFLOAT:
1429 case DataType::kHALF:
1430 case DataType::kINT8:
1431 case DataType::kINT32: return {std::make_pair(WeightsRole::kCONSTANT, weights)};
1432 case DataType::kBOOL:
1433 case DataType::kUINT8:
1434 case DataType::kFP8:
1435 // Refit not supported for these types.
1436 break;
1437 }
1438 break;
1439 }
1440 case LayerType::kCONVOLUTION:
1441 {
1442 auto const& layer = static_cast<const nvinfer1::IConvolutionLayer&>(l);
1443 return {std::make_pair(WeightsRole::kKERNEL, layer.getKernelWeights()),
1444 std::make_pair(WeightsRole::kBIAS, layer.getBiasWeights())};
1445 }
1446 case LayerType::kDECONVOLUTION:
1447 {
1448 auto const& layer = static_cast<const nvinfer1::IDeconvolutionLayer&>(l);
1449 return {std::make_pair(WeightsRole::kKERNEL, layer.getKernelWeights()),
1450 std::make_pair(WeightsRole::kBIAS, layer.getBiasWeights())};
1451 }
1452 case LayerType::kFULLY_CONNECTED:
1453 {
1454 auto const& layer = static_cast<const nvinfer1::IFullyConnectedLayer&>(l);
1455 return {std::make_pair(WeightsRole::kKERNEL, layer.getKernelWeights()),
1456 std::make_pair(WeightsRole::kBIAS, layer.getBiasWeights())};
1457 }
1458 case LayerType::kSCALE:
1459 {
1460 auto const& layer = static_cast<const nvinfer1::IScaleLayer&>(l);
1461 return {std::make_pair(WeightsRole::kSCALE, layer.getScale()),
1462 std::make_pair(WeightsRole::kSHIFT, layer.getShift())};
1463 }
1464 case LayerType::kACTIVATION:
1465 case LayerType::kASSERTION:
1466 case LayerType::kCAST:
1467 case LayerType::kCONCATENATION:
1468 case LayerType::kCONDITION:
1469 case LayerType::kCONDITIONAL_INPUT:
1470 case LayerType::kCONDITIONAL_OUTPUT:
1471 case LayerType::kDEQUANTIZE:
1472 case LayerType::kEINSUM:
1473 case LayerType::kELEMENTWISE:
1474 case LayerType::kFILL:
1475 case LayerType::kGATHER:

Callers 1

timeRefitFunction · 0.85

Calls 6

getScaleMethod · 0.80
getShiftMethod · 0.80
getTypeMethod · 0.45
getWeightsMethod · 0.45
getKernelWeightsMethod · 0.45
getBiasWeightsMethod · 0.45

Tested by

no test coverage detected