From 0474f019cf9b1548980327e785236238dd70f5f3 Mon Sep 17 00:00:00 2001 From: Davide Sapienza Date: Mon, 30 Mar 2020 15:08:25 +0200 Subject: [PATCH] Add TKDNN_MODE variable to the name of the network. This commit permits to obtain different .rt files for different precision optimizations of the same network. Signed-off-by: Davide Sapienza --- include/tkDNN/Network.h | 1 + src/Network.cpp | 28 +++++++++++++++++++ .../csresnext50-panet-spp.cpp | 2 +- tests/dla34/dla34.cpp | 2 +- tests/dla34_cnet/dla34_cnet.cpp | 2 +- tests/mnist/test_mnist.cpp | 2 +- tests/mobilenetv2ssd/mobilenetv2ssd.cpp | 2 +- tests/mobilenetv2ssd512/mobilenetv2ssd512.cpp | 2 +- tests/resnet101/resnet101.cpp | 2 +- tests/resnet101_cnet/resnet101_cnet.cpp | 2 +- tests/simple/test_simple.cpp | 2 +- tests/yolo/yolo.cpp | 2 +- tests/yolo3/yolo3.cpp | 2 +- tests/yolo3_512/yolo3_512.cpp | 2 +- tests/yolo3_512tp/yolo3_512tp.cpp | 2 +- tests/yolo3_berkeley/yolo3_berkeley.cpp | 2 +- tests/yolo3_coco4/yolo3_coco4.cpp | 2 +- tests/yolo3_flir/yolo3_flir.cpp | 2 +- tests/yolo3_tiny/yolo3_tiny.cpp | 2 +- tests/yolo3_tiny512/yolo3_tiny512.cpp | 2 +- tests/yolo3_tiny512tp/yolo3_tiny512tp.cpp | 2 +- tests/yolo_224/yolo_224.cpp | 2 +- tests/yolo_berkeley/yolo_berkeley.cpp | 2 +- tests/yolo_relu/yolo_relu.cpp | 2 +- tests/yolo_tiny/yolo_tiny.cpp | 2 +- tests/yolo_voc/yolo_voc.cpp | 2 +- 26 files changed, 53 insertions(+), 24 deletions(-) diff --git a/include/tkDNN/Network.h b/include/tkDNN/Network.h index 26f9f53..d21659a 100644 --- a/include/tkDNN/Network.h +++ b/include/tkDNN/Network.h @@ -47,6 +47,7 @@ public: bool addLayer(Layer *l); void print(); + const char *getNetworkRTName(char *network_name); cudnnDataType_t dataType; cudnnTensorFormat_t tensorFormat; diff --git a/src/Network.cpp b/src/Network.cpp index 559855f..24152ec 100644 --- a/src/Network.cpp +++ b/src/Network.cpp @@ -114,6 +114,34 @@ void Network::print() { printCenteredTitle("", '=', 60); std::cout<<"\n"; } +const char *Network::getNetworkRTName(char *network_name){ + int network_name_len = strlen(network_name); + char *RTName = (char *)malloc((network_name_len + 9)*sizeof(char)); + if (fp16){ + strcat(RTName, network_name); + strcat(RTName, "_fp16.rt"); + RTName[network_name_len + 7] = '\0'; + } + else if (dla){ + strcat(RTName, network_name); + strcat(RTName, "_dla.rt"); + RTName[network_name_len + 6] = '\0'; + } + + else if (int8){ + strcat(RTName, network_name); + strcat(RTName, "_int8.rt"); + RTName[network_name_len + 8] = '\0'; + } + + else{ + strcat(RTName, network_name); + strcat(RTName, "_fp32.rt"); + RTName[network_name_len + 8] = '\0'; + } + + return RTName; +} }} diff --git a/tests/csresnext50-panet-spp/csresnext50-panet-spp.cpp b/tests/csresnext50-panet-spp/csresnext50-panet-spp.cpp index eda09f5..b613f50 100644 --- a/tests/csresnext50-panet-spp/csresnext50-panet-spp.cpp +++ b/tests/csresnext50-panet-spp/csresnext50-panet-spp.cpp @@ -475,7 +475,7 @@ int main() net.print(); // //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "csresnext50-panet-spp.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("csresnext50-panet-spp")); // the network have 3 outputs tk::dnn::dataDim_t out_dim[3]; diff --git a/tests/dla34/dla34.cpp b/tests/dla34/dla34.cpp index 15f7b3f..dd2714a 100644 --- a/tests/dla34/dla34.cpp +++ b/tests/dla34/dla34.cpp @@ -301,7 +301,7 @@ int main() net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "dla34.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("dla34")); tk::dnn::dataDim_t out_dim; diff --git a/tests/dla34_cnet/dla34_cnet.cpp b/tests/dla34_cnet/dla34_cnet.cpp index 0bb822b..3bc5c50 100644 --- a/tests/dla34_cnet/dla34_cnet.cpp +++ b/tests/dla34_cnet/dla34_cnet.cpp @@ -477,7 +477,7 @@ int main() net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "dla34_cnet.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("dla34_cnet")); tk::dnn::dataDim_t dim1 = dim; //input dim printCenteredTitle(" CUDNN inference ", '=', 30); diff --git a/tests/mnist/test_mnist.cpp b/tests/mnist/test_mnist.cpp index e2d4dc0..bb26b77 100644 --- a/tests/mnist/test_mnist.cpp +++ b/tests/mnist/test_mnist.cpp @@ -22,7 +22,7 @@ int main() { tk::dnn::Dense l6(&net, 10, d3_bin); tk::dnn::Softmax l7(&net); - tk::dnn::NetworkRT netRT(&net, "mnist.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("mnist")); // Load input dnnType *data; diff --git a/tests/mobilenetv2ssd/mobilenetv2ssd.cpp b/tests/mobilenetv2ssd/mobilenetv2ssd.cpp index 851ffa9..2b4f1ed 100644 --- a/tests/mobilenetv2ssd/mobilenetv2ssd.cpp +++ b/tests/mobilenetv2ssd/mobilenetv2ssd.cpp @@ -467,7 +467,7 @@ int main() net.print(); // convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "mobilenetv2ssd.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("mobilenetv2ssd")); tk::dnn::dataDim_t dim1 = dim; //input dim printCenteredTitle(" CUDNN inference ", '=', 30); diff --git a/tests/mobilenetv2ssd512/mobilenetv2ssd512.cpp b/tests/mobilenetv2ssd512/mobilenetv2ssd512.cpp index 81a9b33..3927ab4 100644 --- a/tests/mobilenetv2ssd512/mobilenetv2ssd512.cpp +++ b/tests/mobilenetv2ssd512/mobilenetv2ssd512.cpp @@ -466,7 +466,7 @@ int main() net.print(); // convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "mobilenetv2ssd512.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("mobilenetv2ssd512")); tk::dnn::dataDim_t dim1 = dim; //input dim printCenteredTitle(" CUDNN inference ", '=', 30); diff --git a/tests/resnet101/resnet101.cpp b/tests/resnet101/resnet101.cpp index 5fe6bbe..aa09d2e 100644 --- a/tests/resnet101/resnet101.cpp +++ b/tests/resnet101/resnet101.cpp @@ -290,7 +290,7 @@ int main() net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "resnet101.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("resnet101")); tk::dnn::dataDim_t out_dim; diff --git a/tests/resnet101_cnet/resnet101_cnet.cpp b/tests/resnet101_cnet/resnet101_cnet.cpp index 9467f18..415598b 100644 --- a/tests/resnet101_cnet/resnet101_cnet.cpp +++ b/tests/resnet101_cnet/resnet101_cnet.cpp @@ -350,7 +350,7 @@ int main() net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "resnet101_cnet.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("resnet101_cnet")); tk::dnn::dataDim_t dim1 = dim; //input dim diff --git a/tests/simple/test_simple.cpp b/tests/simple/test_simple.cpp index 5634e4a..83e3064 100644 --- a/tests/simple/test_simple.cpp +++ b/tests/simple/test_simple.cpp @@ -32,7 +32,7 @@ int main() { std::cout<<"\n"; //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "simple.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("simple")); dnnType *out_data, *out_data2; // cudnn output, tensorRT output diff --git a/tests/yolo/yolo.cpp b/tests/yolo/yolo.cpp index 6e1ce17..86f9af9 100644 --- a/tests/yolo/yolo.cpp +++ b/tests/yolo/yolo.cpp @@ -112,7 +112,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo")); dnnType *out_data, *out_data2; // cudnn output, tensorRT output diff --git a/tests/yolo3/yolo3.cpp b/tests/yolo3/yolo3.cpp index dac61b6..b6f0f65 100644 --- a/tests/yolo3/yolo3.cpp +++ b/tests/yolo3/yolo3.cpp @@ -31,7 +31,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo3.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo3")); // the network have 3 outputs tk::dnn::dataDim_t out_dim[3]; diff --git a/tests/yolo3_512/yolo3_512.cpp b/tests/yolo3_512/yolo3_512.cpp index 1050990..89569d3 100644 --- a/tests/yolo3_512/yolo3_512.cpp +++ b/tests/yolo3_512/yolo3_512.cpp @@ -31,7 +31,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo3_512.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo3_512")); // the network have 3 outputs tk::dnn::dataDim_t out_dim[3]; diff --git a/tests/yolo3_512tp/yolo3_512tp.cpp b/tests/yolo3_512tp/yolo3_512tp.cpp index 935c03c..4856961 100644 --- a/tests/yolo3_512tp/yolo3_512tp.cpp +++ b/tests/yolo3_512tp/yolo3_512tp.cpp @@ -29,7 +29,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo3_512tp.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo3_512tp")); // the network have 3 outputs tk::dnn::dataDim_t out_dim[3]; diff --git a/tests/yolo3_berkeley/yolo3_berkeley.cpp b/tests/yolo3_berkeley/yolo3_berkeley.cpp index d9f6dc2..15ee98e 100644 --- a/tests/yolo3_berkeley/yolo3_berkeley.cpp +++ b/tests/yolo3_berkeley/yolo3_berkeley.cpp @@ -31,7 +31,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo3_berkeley.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo3_berkeley")); // the network have 3 outputs tk::dnn::dataDim_t out_dim[3]; diff --git a/tests/yolo3_coco4/yolo3_coco4.cpp b/tests/yolo3_coco4/yolo3_coco4.cpp index 72c983c..2b4d475 100644 --- a/tests/yolo3_coco4/yolo3_coco4.cpp +++ b/tests/yolo3_coco4/yolo3_coco4.cpp @@ -24,7 +24,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo3_coco4.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo3_coco4")); // the network have 3 outputs tk::dnn::dataDim_t out_dim[3]; diff --git a/tests/yolo3_flir/yolo3_flir.cpp b/tests/yolo3_flir/yolo3_flir.cpp index f284d31..a88adb9 100644 --- a/tests/yolo3_flir/yolo3_flir.cpp +++ b/tests/yolo3_flir/yolo3_flir.cpp @@ -31,7 +31,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo3_flir.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo3_flir")); // the network have 3 outputs tk::dnn::dataDim_t out_dim[3]; diff --git a/tests/yolo3_tiny/yolo3_tiny.cpp b/tests/yolo3_tiny/yolo3_tiny.cpp index e6491c6..c4458ef 100644 --- a/tests/yolo3_tiny/yolo3_tiny.cpp +++ b/tests/yolo3_tiny/yolo3_tiny.cpp @@ -92,7 +92,7 @@ int main() { net.print(); // convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo3_tiny.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo3_tiny")); dnnType *out_data, *out_data2; // cudnn output, tensorRT output diff --git a/tests/yolo3_tiny512/yolo3_tiny512.cpp b/tests/yolo3_tiny512/yolo3_tiny512.cpp index cd6444f..cad35c7 100644 --- a/tests/yolo3_tiny512/yolo3_tiny512.cpp +++ b/tests/yolo3_tiny512/yolo3_tiny512.cpp @@ -89,7 +89,7 @@ int main() { net.print(); // convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo3_tiny512.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo3_tiny512")); dnnType *out_data, *out_data2; // cudnn output, tensorRT output diff --git a/tests/yolo3_tiny512tp/yolo3_tiny512tp.cpp b/tests/yolo3_tiny512tp/yolo3_tiny512tp.cpp index b669133..5fbf5c6 100644 --- a/tests/yolo3_tiny512tp/yolo3_tiny512tp.cpp +++ b/tests/yolo3_tiny512tp/yolo3_tiny512tp.cpp @@ -89,7 +89,7 @@ int main() { net.print(); // convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo3_tiny512tp.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo3_tiny512tp")); dnnType *out_data, *out_data2; // cudnn output, tensorRT output diff --git a/tests/yolo_224/yolo_224.cpp b/tests/yolo_224/yolo_224.cpp index 9d6d28a..fff98c4 100644 --- a/tests/yolo_224/yolo_224.cpp +++ b/tests/yolo_224/yolo_224.cpp @@ -110,7 +110,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo_224.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo_224")); dnnType *out_data, *out_data2; // cudnn output, tensorRT output diff --git a/tests/yolo_berkeley/yolo_berkeley.cpp b/tests/yolo_berkeley/yolo_berkeley.cpp index dcb8d7d..8d2b9d7 100644 --- a/tests/yolo_berkeley/yolo_berkeley.cpp +++ b/tests/yolo_berkeley/yolo_berkeley.cpp @@ -110,7 +110,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo_berkeley.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo_berkeley")); dnnType *out_data, *out_data2; // cudnn output, tensorRT output diff --git a/tests/yolo_relu/yolo_relu.cpp b/tests/yolo_relu/yolo_relu.cpp index ddb0802..8157849 100644 --- a/tests/yolo_relu/yolo_relu.cpp +++ b/tests/yolo_relu/yolo_relu.cpp @@ -110,7 +110,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo_relu.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo_relu")); dnnType *out_data, *out_data2; // cudnn output, tensorRT output diff --git a/tests/yolo_tiny/yolo_tiny.cpp b/tests/yolo_tiny/yolo_tiny.cpp index 08c504d..357510a 100644 --- a/tests/yolo_tiny/yolo_tiny.cpp +++ b/tests/yolo_tiny/yolo_tiny.cpp @@ -62,7 +62,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo_tiny.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo_tiny")); dnnType *out_data, *out_data2; // cudnn output, tensorRT output diff --git a/tests/yolo_voc/yolo_voc.cpp b/tests/yolo_voc/yolo_voc.cpp index 9d2609c..c82ee4a 100644 --- a/tests/yolo_voc/yolo_voc.cpp +++ b/tests/yolo_voc/yolo_voc.cpp @@ -112,7 +112,7 @@ int main() { net.print(); //convert network to tensorRT - tk::dnn::NetworkRT netRT(&net, "yolo_voc.rt"); + tk::dnn::NetworkRT netRT(&net, net.getNetworkRTName("yolo_voc")); dnnType *out_data, *out_data2; // cudnn output, tensorRT output