From 3502c5b67664f5a4ac02241c8d7b23af8dbd99d2 Mon Sep 17 00:00:00 2001 From: Micaela Verucchi Date: Thu, 9 Apr 2020 15:25:05 +0200 Subject: [PATCH] Fix pooling, add return code in each test, add return code handling in test_all_tests script Signed-off-by: Micaela Verucchi --- include/tkDNN/ImuOdom.h | 6 ++-- include/tkDNN/Layer.h | 9 ++--- include/tkDNN/utils.h | 6 ++++ scripts/test_all_tests.sh | 18 ++++++++-- src/NetworkRT.cpp | 2 +- src/Pooling.cpp | 34 +++++++------------ .../csresnext50-panet-spp.cpp | 21 ++++++------ tests/dla34/dla34.cpp | 14 ++++---- tests/dla34_cnet/dla34_cnet.cpp | 18 +++++----- tests/imuodom/imuodom.cpp | 7 ++-- tests/mobilenetv2ssd/mobilenetv2ssd.cpp | 20 ++++++----- tests/mobilenetv2ssd512/mobilenetv2ssd512.cpp | 20 ++++++----- tests/resnet101/resnet101.cpp | 16 ++++----- tests/resnet101_cnet/resnet101_cnet.cpp | 17 +++++----- tests/simple/test_simple.cpp | 12 ++++--- tests/yolo/yolo.cpp | 25 ++++++++------ tests/yolo3/yolo3.cpp | 12 ++++--- tests/yolo3_512/yolo3_512.cpp | 12 ++++--- tests/yolo3_512tp/yolo3_512tp.cpp | 12 ++++--- tests/yolo3_berkeley/yolo3_berkeley.cpp | 12 ++++--- tests/yolo3_coco4/yolo3_coco4.cpp | 12 ++++--- tests/yolo3_flir/yolo3_flir.cpp | 13 ++++--- tests/yolo3_tiny/yolo3_tiny.cpp | 16 +++++---- tests/yolo3_tiny512/yolo3_tiny512.cpp | 15 ++++---- tests/yolo3_tiny512tp/yolo3_tiny512tp.cpp | 16 +++++---- tests/yolo3_tinyNM512/yolo3_tinyNM512.cpp | 13 ++++--- tests/yolo_224/yolo_224.cpp | 26 ++++++++------ tests/yolo_berkeley/yolo_berkeley.cpp | 26 ++++++++------ tests/yolo_relu/yolo_relu.cpp | 26 ++++++++------ tests/yolo_tiny/yolo_tiny.cpp | 13 ++++--- tests/yolo_voc/yolo_voc.cpp | 26 ++++++++------ 31 files changed, 293 insertions(+), 202 deletions(-) diff --git a/include/tkDNN/ImuOdom.h b/include/tkDNN/ImuOdom.h index 49e5d4d..5cf9d10 100644 --- a/include/tkDNN/ImuOdom.h +++ b/include/tkDNN/ImuOdom.h @@ -72,17 +72,17 @@ class ImuOdom { tk::dnn::Input *x0 = new tk::dnn::Input (net, dim0, i0_d); tk::dnn::Conv2d *x0_0 = new tk::dnn::Conv2d (net, 128, 1, 11, 1, 1, 0, 0, c0_bin); tk::dnn::Conv2d *x0_1 = new tk::dnn::Conv2d (net, 128, 1, 11, 1, 1, 0, 0, c1_bin); - tk::dnn::Pooling *x0_2 = new tk::dnn::Pooling(net, 1, 3, 1, 3, tk::dnn::tkdnnPoolingMode_t::POOLING_MAX); + tk::dnn::Pooling *x0_2 = new tk::dnn::Pooling(net, 1, 3, 1, 3 , 0, 0, tk::dnn::tkdnnPoolingMode_t::POOLING_MAX); tk::dnn::Input *x1 = new tk::dnn::Input (net, dim1, i1_d); tk::dnn::Conv2d *x1_0 = new tk::dnn::Conv2d (net, 128, 1, 11, 1, 1, 0, 0, c2_bin); tk::dnn::Conv2d *x1_1 = new tk::dnn::Conv2d (net, 128, 1, 11, 1, 1, 0, 0, c3_bin); - tk::dnn::Pooling *x1_2 = new tk::dnn::Pooling(net, 1, 3, 1, 3, tk::dnn::tkdnnPoolingMode_t::POOLING_MAX); + tk::dnn::Pooling *x1_2 = new tk::dnn::Pooling(net, 1, 3, 1, 3, 0, 0, tk::dnn::tkdnnPoolingMode_t::POOLING_MAX); tk::dnn::Input *x2 = new tk::dnn::Input (net, dim2, i2_d); tk::dnn::Conv2d *x2_0 = new tk::dnn::Conv2d (net, 128, 1, 11, 1, 1, 0, 0, c4_bin); tk::dnn::Conv2d *x2_1 = new tk::dnn::Conv2d (net, 128, 1, 11, 1, 1, 0, 0, c5_bin); - tk::dnn::Pooling *x2_2 = new tk::dnn::Pooling(net, 1, 3, 1, 3, tk::dnn::tkdnnPoolingMode_t::POOLING_MAX); + tk::dnn::Pooling *x2_2 = new tk::dnn::Pooling(net, 1, 3, 1, 3, 0, 0, tk::dnn::tkdnnPoolingMode_t::POOLING_MAX); tk::dnn::Layer *concat_l[3] = { x0_2, x1_2, x2_2 }; tk::dnn::Route *concat = new tk::dnn::Route(net, concat_l, 3); diff --git a/include/tkDNN/Layer.h b/include/tkDNN/Layer.h index c1167af..4aeacff 100644 --- a/include/tkDNN/Layer.h +++ b/include/tkDNN/Layer.h @@ -407,8 +407,9 @@ protected: */ typedef enum { POOLING_MAX = 0, - POOLING_AVERAGE = 1, // count for average includes padded values - POOLING_AVERAGE_EXCLUDE_PADDING = 2 // count for average does not include padded values + POOLING_AVERAGE = 1, // count for average includes padded values + POOLING_AVERAGE_EXCLUDE_PADDING = 2, // count for average does not include padded values + POOLING_MAX_FIXEDSIZE = 100 // max pool darknet fashion } tkdnnPoolingMode_t; /** @@ -421,13 +422,13 @@ public: int winH, winW; int strideH, strideW; int paddingH, paddingW; - bool maxpoolfixedsize; + bool size; tkdnnPoolingMode_t pool_mode; Pooling(Network *net, int winH, int winW, int strideH, int strideW, int paddingH = 0, int paddingW = 0, - tkdnnPoolingMode_t pool_mode = POOLING_MAX, bool final = false, bool test=false); + tkdnnPoolingMode_t pool_mode = POOLING_MAX, bool final = false); virtual ~Pooling(); virtual layerType_t getLayerType() { return LAYER_POOLING; }; diff --git a/include/tkDNN/utils.h b/include/tkDNN/utils.h index 0fed5c9..a3d7987 100644 --- a/include/tkDNN/utils.h +++ b/include/tkDNN/utils.h @@ -93,6 +93,12 @@ } \ } +typedef enum { + ERROR_CUDNN = 2, + ERROR_TKDNN = 4, + ERROR_CUDNNvsTENSORRT = 8 +} resultError_t; + void printCenteredTitle(const char *title, char fill, int dim = 30); bool fileExist(const char *fname); void downloadWeightsifDoNotExist(const std::string& input_bin, const std::string& test_folder, const std::string& weights_url); diff --git a/scripts/test_all_tests.sh b/scripts/test_all_tests.sh index 7695d68..d663d01 100644 --- a/scripts/test_all_tests.sh +++ b/scripts/test_all_tests.sh @@ -5,14 +5,26 @@ cd build RED='\033[1;31m' GREEN='\033[1;32m' ORANGE='\033[1;33m' +PINK='\033[1;95m' NC='\033[0m' # No Color function print_output { - if [ $1 -eq 0 ] - then + if [ $1 -eq 0 ]; then echo -e "$2 ${GREEN}OK${NC}" + elif [ $1 -eq 1 ]; then + echo -e "$2 ${RED}FATAL ERROR${NC}" + elif [ $1 -eq 2 ] || [ $1 -eq 10 ]; then + echo -e "$2 ${PINK}CUDNN ERROR${NC}" + elif [ $1 -eq 4 ] || [ $1 -eq 12 ]; then + echo -e "$2 ${PINK}TENSORRT ERROR${NC}" + elif [ $1 -eq 8 ]; then + echo -e "$2 ${PINK}CUDNN vs TENSORRT ERROR${NC}" + elif [ $1 -eq 6 ]; then + echo -e "$2 ${PINK}CUDNN & TENSORTRT ERROR${NC}" + elif [ $1 -eq 14 ]; then + echo -e "$2 ${PINK}ERROR FOR EVERY CHECK${NC}" else - echo -e "$2 ${RED}NOT OKAY${NC}" + echo -e "$2 ${RED}NOT OKAY (OPENCV maybe)${NC}" fi } diff --git a/src/NetworkRT.cpp b/src/NetworkRT.cpp index da58ddf..d1886be 100644 --- a/src/NetworkRT.cpp +++ b/src/NetworkRT.cpp @@ -354,7 +354,7 @@ ILayer* NetworkRT::convert_layer(ITensor *input, Pooling *l) { if(l->pool_mode == tkdnnPoolingMode_t::POOLING_AVERAGE) ptype = PoolingType::kAVERAGE; if(l->pool_mode == tkdnnPoolingMode_t::POOLING_AVERAGE_EXCLUDE_PADDING) ptype = PoolingType::kMAX_AVERAGE_BLEND; - if(l->maxpoolfixedsize) + if(l->pool_mode == tkdnnPoolingMode_t::POOLING_MAX_FIXEDSIZE) { IPlugin *plugin = new MaxPoolFixedSizeRT(l->output_dim.c, l->output_dim.h, l->output_dim.w, l->output_dim.n, l->strideH, l->strideW, l->winH, l->winH-1); IPluginLayer *lRT = networkRT->addPlugin(&input, 1, *plugin); diff --git a/src/Pooling.cpp b/src/Pooling.cpp index 48f12cf..c010049 100644 --- a/src/Pooling.cpp +++ b/src/Pooling.cpp @@ -7,7 +7,7 @@ namespace tk { namespace dnn { Pooling::Pooling( Network *net, int winH, int winW, int strideH, int strideW, int paddingH, int paddingW, - tkdnnPoolingMode_t pool_mode, bool final, bool maxpoolfixedsize) : + tkdnnPoolingMode_t pool_mode, bool final) : Layer(net, final) { this->winH = winH; @@ -17,7 +17,6 @@ Pooling::Pooling( Network *net, int winH, int winW, int strideH, int strideW, this->pool_mode = pool_mode; this->paddingH = paddingH; this->paddingW = paddingW; - this->maxpoolfixedsize = maxpoolfixedsize; checkCUDNN( cudnnCreatePoolingDescriptor(&poolingDesc) ); @@ -40,9 +39,10 @@ Pooling::Pooling( Network *net, int winH, int winW, int strideH, int strideW, n = l; } - + cudnnPoolingMode_t cudnn_pool_mode = cudnnPoolingMode_t(pool_mode); + if(pool_mode == POOLING_MAX_FIXEDSIZE) cudnn_pool_mode = cudnnPoolingMode_t(tkdnnPoolingMode_t::POOLING_MAX); - checkCUDNN( cudnnSetPooling2dDescriptor(poolingDesc, cudnnPoolingMode_t(pool_mode), + checkCUDNN( cudnnSetPooling2dDescriptor(poolingDesc, cudnn_pool_mode, CUDNN_NOT_PROPAGATE_NAN, winH, winW, paddingH, paddingW, strideH, strideW) ); checkCUDNN( cudnnSetTensor4dDescriptor(srcTensorDesc, @@ -52,18 +52,16 @@ Pooling::Pooling( Network *net, int winH, int winW, int strideH, int strideW, // checkCUDNN( cudnnGetPooling2dForwardOutputDim(poolingDesc, srcTensorDesc, &n, &c, &h, &w)); //compute w and h as in darknet - int padH = paddingH == 0? winH -1 : paddingH; - int padW = paddingW == 0? winW -1 : paddingW; - - if(final){ - h = (h + 2*paddingH - winH)/strideH +1 ; - w = (w + 2*paddingW - winW)/strideW +1; - } - else{ + if(pool_mode == tkdnnPoolingMode_t::POOLING_MAX_FIXEDSIZE){ + int padH = paddingH == 0? winH -1 : paddingH; + int padW = paddingW == 0? winW -1 : paddingW; h = (h + padH - winH)/strideH +1; w = (w + padW - winW)/strideW +1; } - + else{ + h = (h + 2*paddingH - winH)/strideH +1 ; + w = (w + 2*paddingW - winW)/strideW +1; + } // h = (h + winH*this->paddingH)/strideH; // w = (w + winW*this->paddingW)/strideW; @@ -112,22 +110,16 @@ dnnType* Pooling::infer(dataDim_t &dim, dnnType* srcData) { poolDst = tmpOutputData; } - - - if(this->maxpoolfixedsize) - { + if(pool_mode == tkdnnPoolingMode_t::POOLING_MAX_FIXEDSIZE){ MaxPoolingForward(poolSrc, poolDst, dim.n, dim.c, dim.h, dim.w, this->strideH, this->strideW, this->winH, this->winH-1); } - else - { + else{ dnnType alpha = dnnType(1); dnnType beta = dnnType(0); checkCUDNN( cudnnPoolingForward(net->cudnnHandle, poolingDesc, &alpha, srcTensorDesc, poolSrc, &beta, dstTensorDesc, poolDst) ); - } - //update dim dim = output_dim; diff --git a/tests/csresnext50-panet-spp/csresnext50-panet-spp.cpp b/tests/csresnext50-panet-spp/csresnext50-panet-spp.cpp index b613f50..e836761 100644 --- a/tests/csresnext50-panet-spp/csresnext50-panet-spp.cpp +++ b/tests/csresnext50-panet-spp/csresnext50-panet-spp.cpp @@ -342,15 +342,15 @@ int main() tk::dnn::Activation a83(&net, tk::dnn::ACTIVATION_LEAKY); //SPP - tk::dnn::Pooling p84(&net, 5, 5, 1, 1,0,0, tk::dnn::POOLING_MAX, false, true); + tk::dnn::Pooling p84(&net, 5, 5, 1, 1,0,0, tk::dnn::POOLING_MAX_FIXEDSIZE); tk::dnn::Layer *r85_layers[1] = {&a83}; tk::dnn::Route r85(&net, r85_layers, 1); - tk::dnn::Pooling p86(&net, 9, 9, 1, 1,0,0, tk::dnn::POOLING_MAX, false, true); + tk::dnn::Pooling p86(&net, 9, 9, 1, 1,0,0, tk::dnn::POOLING_MAX_FIXEDSIZE); tk::dnn::Layer *r87_layers[1] = {&a83}; tk::dnn::Route r87(&net, r87_layers, 1); - tk::dnn::Pooling p88(&net, 13, 13, 1, 1, 12, 12, tk::dnn::POOLING_MAX, false, true); + tk::dnn::Pooling p88(&net, 13, 13, 1, 1, 12, 12, tk::dnn::POOLING_MAX_FIXEDSIZE); tk::dnn::Layer *r89_layers[4] = {&p88, &p86, &p84, &a83}; tk::dnn::Route r89(&net, r89_layers, 4); //END SPP @@ -536,18 +536,19 @@ int main() for (int i = 0; i < 3; i++) rt_out[i] = (dnnType *)netRT.buffersRT[i + 1]; + int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0; for (int i = 0; i < 3; i++) { printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30); dnnType *out, *out_h; int odim = out_dim[i].tot(); readBinaryFile(output_bins[i], odim, &out_h, &out); - std::cout << "CUDNN vs correct"; - checkResult(odim, cudnn_out[i], out); - std::cout << "TRT vs correct"; - checkResult(odim, rt_out[i], out); - std::cout << "CUDNN vs TRT "; - checkResult(odim, cudnn_out[i], rt_out[i]); + std::cout<<"CUDNN vs correct"; + ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + ret_tensorrt |= checkResult(odim, rt_out[i], out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + ret_cudnn_tensorrt |= checkResult(odim, cudnn_out[i], rt_out[i]) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; } - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/dla34/dla34.cpp b/tests/dla34/dla34.cpp index dd2714a..4786cd7 100644 --- a/tests/dla34/dla34.cpp +++ b/tests/dla34/dla34.cpp @@ -339,12 +339,12 @@ int main() int odim = out_dim.tot(); readBinaryFile(output_bin, odim, &out_h, &out); - std::cout << "CUDNN vs correct"; - checkResult(odim, cudnn_out, out); - std::cout << "TRT vs correct"; - checkResult(odim, rt_out, out); - std::cout << "CUDNN vs TRT "; - checkResult(odim, cudnn_out, rt_out); + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(odim, cudnn_out, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(odim, rt_out, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(odim, cudnn_out, rt_out) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/dla34_cnet/dla34_cnet.cpp b/tests/dla34_cnet/dla34_cnet.cpp index 567f6f1..92cc825 100644 --- a/tests/dla34_cnet/dla34_cnet.cpp +++ b/tests/dla34_cnet/dla34_cnet.cpp @@ -501,6 +501,7 @@ int main() tk::dnn::Layer *outs[3] = { hm, wh, reg }; int out_count = 1; + int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0; for(int i=0; i<3; i++) { printCenteredTitle((std::string(" RESNET CHECK RESULTS ") + std::to_string(i) + " ").c_str(), '=', 30); @@ -517,13 +518,12 @@ int main() if(i==0) out_count ++; - std::cout << "CUDNN vs correct"; - checkResult(odim, cudnn_out, out); - std::cout << "TRT vs correct"; - checkResult(odim, rt_out, out); - std::cout << "CUDNN vs TRT "; - checkResult(odim, cudnn_out, rt_out); - } - - return 0; + std::cout<<"CUDNN vs correct"; + ret_cudnn |= checkResult(odim, cudnn_out, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + ret_tensorrt |= checkResult(odim, rt_out, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + ret_cudnn_tensorrt |= checkResult(odim, cudnn_out, rt_out) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + } + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/imuodom/imuodom.cpp b/tests/imuodom/imuodom.cpp index 0e9cc82..98ab1be 100644 --- a/tests/imuodom/imuodom.cpp +++ b/tests/imuodom/imuodom.cpp @@ -51,6 +51,7 @@ int main() { std::ofstream path("path.txt"); + int ret_cudnn = 0; for(int i=0; ioutput_dim.tot(), conf->dstData, rt_out3); - checkResult(loc->output_dim.tot(), loc->dstData, rt_out4); + ret_cudnn_tensorrt |= checkResult(conf->output_dim.tot(), conf->dstData, rt_out3) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + ret_cudnn_tensorrt |= checkResult(loc->output_dim.tot(), loc->dstData, rt_out4) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/mobilenetv2ssd512/mobilenetv2ssd512.cpp b/tests/mobilenetv2ssd512/mobilenetv2ssd512.cpp index 099737a..8be099f 100644 --- a/tests/mobilenetv2ssd512/mobilenetv2ssd512.cpp +++ b/tests/mobilenetv2ssd512/mobilenetv2ssd512.cpp @@ -506,17 +506,19 @@ int main() dnnType *out2, *out2_h; int odim2 = out_dim2.tot(); readBinaryFile(output_bin2, odim2, &out2_h, &out2); + int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0; + std::cout << "CUDNN vs correct" << std::endl; - checkResult(odim1, cudnn_out1, out1); - checkResult(odim2, cudnn_out2, out2); + ret_cudnn |= checkResult(odim1, cudnn_out1, out1) == 0 ? 0 : ERROR_CUDNN; + ret_cudnn |= checkResult(odim2, cudnn_out2, out2) == 0 ? 0 : ERROR_CUDNN; std::cout << "TRT vs correct" << std::endl; - checkResult(odim1, rt_out1, out1); - checkResult(odim2, rt_out2, out2); + ret_tensorrt |= checkResult(odim1, rt_out1, out1) == 0 ? 0 : ERROR_TKDNN; + ret_tensorrt |= checkResult(odim2, rt_out2, out2) == 0 ? 0 : ERROR_TKDNN; std::cout << "CUDNN vs TRT " << std::endl; - checkResult(odim1, cudnn_out1, rt_out1); - checkResult(odim2, cudnn_out2, rt_out2); + ret_cudnn_tensorrt |= checkResult(odim1, cudnn_out1, rt_out1) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + ret_cudnn_tensorrt |= checkResult(odim2, cudnn_out2, rt_out2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; std::cout << "---------------------------------------------------" << std::endl; std::cout << "Confidence CUDNN" << std::endl; @@ -532,8 +534,8 @@ int main() std::cout << "---------------------------------------------------" << std::endl; std::cout << "CUDNN vs TRT " << std::endl; - checkResult(conf->output_dim.tot(), conf->dstData, rt_out3); - checkResult(loc->output_dim.tot(), loc->dstData, rt_out4); + ret_cudnn_tensorrt |= checkResult(conf->output_dim.tot(), conf->dstData, rt_out3) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + ret_cudnn_tensorrt |= checkResult(loc->output_dim.tot(), loc->dstData, rt_out4) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/resnet101/resnet101.cpp b/tests/resnet101/resnet101.cpp index aa09d2e..e5987f6 100644 --- a/tests/resnet101/resnet101.cpp +++ b/tests/resnet101/resnet101.cpp @@ -326,13 +326,13 @@ int main() dnnType *out, *out_h; int odim = out_dim.tot(); readBinaryFile(output_bin, odim, &out_h, &out); - std::cout << "CUDNN vs correct"; - checkResult(odim, cudnn_out, out); + + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(odim, cudnn_out, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(odim, rt_out, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(odim, cudnn_out, rt_out) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; - std::cout << "TRT vs correct"; - checkResult(odim, rt_out, out); - std::cout << "CUDNN vs TRT "; - checkResult(odim, cudnn_out, rt_out); - - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/resnet101_cnet/resnet101_cnet.cpp b/tests/resnet101_cnet/resnet101_cnet.cpp index ae0015b..4af2070 100644 --- a/tests/resnet101_cnet/resnet101_cnet.cpp +++ b/tests/resnet101_cnet/resnet101_cnet.cpp @@ -377,6 +377,7 @@ int main() tk::dnn::Layer *outs[3] = { hm, wh, reg }; int out_count = 1; + int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0; for(int i=0; i<3; i++) { printCenteredTitle((std::string(" RESNET CHECK RESULTS ") + std::to_string(i) + " ").c_str(), '=', 30); @@ -397,12 +398,12 @@ int main() if(i==0) out_count ++; - std::cout << "CUDNN vs correct"; - checkResult(odim, cudnn_out, out); - - std::cout << "TRT vs correct"; - checkResult(odim, rt_out, out); - std::cout << "CUDNN vs TRT "; - checkResult(odim, cudnn_out, rt_out); - } + std::cout<<"CUDNN vs correct"; + ret_cudnn |= checkResult(odim, cudnn_out, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + ret_tensorrt |= checkResult(odim, rt_out, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + ret_cudnn_tensorrt |= checkResult(odim, cudnn_out, rt_out) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + } + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/simple/test_simple.cpp b/tests/simple/test_simple.cpp index be90069..18da44d 100644 --- a/tests/simple/test_simple.cpp +++ b/tests/simple/test_simple.cpp @@ -62,8 +62,12 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); //readBinaryFile(output_bin, out_dim, &out_h, &out); - //std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - //std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - return 0; + // std::cout<<"CUDNN vs correct"; + // int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + // std::cout<<"TRT vs correct"; + // int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + return ret_cudnn_tensorrt; } diff --git a/tests/yolo/yolo.cpp b/tests/yolo/yolo.cpp index 86f9af9..1138488 100644 --- a/tests/yolo/yolo.cpp +++ b/tests/yolo/yolo.cpp @@ -138,15 +138,20 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); readBinaryFile(output_bin, out_dim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - std::cout<<"\n\nDetected objects: \n"; - dnnType *output_h = new dnnType[rI.output_dim.tot()]; - checkCuda(cudaMemcpy(output_h, out_data2, - rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost)); - rI.interpretData(output_h); - rI.showImageResult(input_h); - return 0; + // std::cout<<"\n\nDetected objects: \n"; + // dnnType *output_h = new dnnType[rI.output_dim.tot()]; + // checkCuda(cudaMemcpy(output_h, out_data2, + // rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost)); + // rI.interpretData(output_h); + // rI.showImageResult(input_h); + + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo3/yolo3.cpp b/tests/yolo3/yolo3.cpp index b6f0f65..0e1949f 100644 --- a/tests/yolo3/yolo3.cpp +++ b/tests/yolo3/yolo3.cpp @@ -82,14 +82,18 @@ int main() { } for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1]; + int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0; for(int i=0; i<3; i++) { printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30); dnnType *out, *out_h; int odim = out_dim[i].tot(); readBinaryFile(output_bins[i], odim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out); - std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out); - std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]); + std::cout<<"CUDNN vs correct"; + ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + ret_tensorrt |= checkResult(odim, rt_out[i], out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + ret_cudnn_tensorrt |= checkResult(odim, cudnn_out[i], rt_out[i]) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; } - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo3_512/yolo3_512.cpp b/tests/yolo3_512/yolo3_512.cpp index a6ea5b5..d1ecb85 100644 --- a/tests/yolo3_512/yolo3_512.cpp +++ b/tests/yolo3_512/yolo3_512.cpp @@ -82,14 +82,18 @@ int main() { } for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1]; + int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0; for(int i=0; i<3; i++) { printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30); dnnType *out, *out_h; int odim = out_dim[i].tot(); readBinaryFile(output_bins[i], odim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out); - std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out); - std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]); + std::cout<<"CUDNN vs correct"; + ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + ret_tensorrt |= checkResult(odim, rt_out[i], out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + ret_cudnn_tensorrt |= checkResult(odim, cudnn_out[i], rt_out[i]) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; } - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo3_512tp/yolo3_512tp.cpp b/tests/yolo3_512tp/yolo3_512tp.cpp index 4856961..08426cd 100644 --- a/tests/yolo3_512tp/yolo3_512tp.cpp +++ b/tests/yolo3_512tp/yolo3_512tp.cpp @@ -80,14 +80,18 @@ int main() { } for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1]; + int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0; for(int i=0; i<3; i++) { printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30); dnnType *out, *out_h; int odim = out_dim[i].tot(); readBinaryFile(output_bins[i], odim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out); - std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out); - std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]); + std::cout<<"CUDNN vs correct"; + ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + ret_tensorrt |= checkResult(odim, rt_out[i], out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + ret_cudnn_tensorrt |= checkResult(odim, cudnn_out[i], rt_out[i]) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; } - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo3_berkeley/yolo3_berkeley.cpp b/tests/yolo3_berkeley/yolo3_berkeley.cpp index 15ee98e..b3d4d85 100644 --- a/tests/yolo3_berkeley/yolo3_berkeley.cpp +++ b/tests/yolo3_berkeley/yolo3_berkeley.cpp @@ -82,14 +82,18 @@ int main() { } for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1]; + int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0; for(int i=0; i<3; i++) { printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30); dnnType *out, *out_h; int odim = out_dim[i].tot(); readBinaryFile(output_bins[i], odim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out); - std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out); - std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]); + std::cout<<"CUDNN vs correct"; + ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + ret_tensorrt |= checkResult(odim, rt_out[i], out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + ret_cudnn_tensorrt |= checkResult(odim, cudnn_out[i], rt_out[i]) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; } - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo3_coco4/yolo3_coco4.cpp b/tests/yolo3_coco4/yolo3_coco4.cpp index 554dada..80f2de6 100644 --- a/tests/yolo3_coco4/yolo3_coco4.cpp +++ b/tests/yolo3_coco4/yolo3_coco4.cpp @@ -80,14 +80,18 @@ int main() { } for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1]; + int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0; for(int i=0; i<3; i++) { printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30); dnnType *out, *out_h; int odim = out_dim[i].tot(); readBinaryFile(output_bins[i], odim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out); - std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out); - std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]); + std::cout<<"CUDNN vs correct"; + ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + ret_tensorrt |= checkResult(odim, rt_out[i], out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + ret_cudnn_tensorrt |= checkResult(odim, cudnn_out[i], rt_out[i]) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; } - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo3_flir/yolo3_flir.cpp b/tests/yolo3_flir/yolo3_flir.cpp index a88adb9..ba492a6 100644 --- a/tests/yolo3_flir/yolo3_flir.cpp +++ b/tests/yolo3_flir/yolo3_flir.cpp @@ -82,14 +82,19 @@ int main() { } for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1]; + + int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0; for(int i=0; i<3; i++) { printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30); dnnType *out, *out_h; int odim = out_dim[i].tot(); readBinaryFile(output_bins[i], odim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out); - std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out); - std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]); + std::cout<<"CUDNN vs correct"; + ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + ret_tensorrt |= checkResult(odim, rt_out[i], out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + ret_cudnn_tensorrt |= checkResult(odim, cudnn_out[i], rt_out[i]) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; } - return 0; + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo3_tiny/yolo3_tiny.cpp b/tests/yolo3_tiny/yolo3_tiny.cpp index c4458ef..ab45893 100644 --- a/tests/yolo3_tiny/yolo3_tiny.cpp +++ b/tests/yolo3_tiny/yolo3_tiny.cpp @@ -55,7 +55,7 @@ int main() { tk::dnn::Conv2d c10(&net, 512, 3, 3, 1, 1, 1, 1, c10_bin, true); tk::dnn::Activation a10(&net, tk::dnn::ACTIVATION_LEAKY); - tk::dnn::Pooling p11(&net, 2, 2, 1, 1,0,0, tk::dnn::POOLING_MAX, false, true); + tk::dnn::Pooling p11(&net, 2, 2, 1, 1,0,0, tk::dnn::POOLING_MAX_FIXEDSIZE); tk::dnn::Conv2d c12(&net, 1024, 3, 3, 1, 1, 1, 1, c12_bin, true); tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY); @@ -118,9 +118,13 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); readBinaryFile(output_bin, out_dim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - - return 0; + + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo3_tiny512/yolo3_tiny512.cpp b/tests/yolo3_tiny512/yolo3_tiny512.cpp index f366df9..057c117 100644 --- a/tests/yolo3_tiny512/yolo3_tiny512.cpp +++ b/tests/yolo3_tiny512/yolo3_tiny512.cpp @@ -54,7 +54,7 @@ int main() { tk::dnn::Conv2d c10(&net, 512, 3, 3, 1, 1, 1, 1, c10_bin, true); tk::dnn::Activation a10(&net, tk::dnn::ACTIVATION_LEAKY); - tk::dnn::Pooling p11(&net, 2, 2, 1, 1,0,0, tk::dnn::POOLING_MAX, false, true); + tk::dnn::Pooling p11(&net, 2, 2, 1, 1,0,0, tk::dnn::POOLING_MAX_FIXEDSIZE); tk::dnn::Conv2d c12(&net, 1024, 3, 3, 1, 1, 1, 1, c12_bin, true); tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY); @@ -117,9 +117,12 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); readBinaryFile(output_bin, out_dim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - - return 0; + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo3_tiny512tp/yolo3_tiny512tp.cpp b/tests/yolo3_tiny512tp/yolo3_tiny512tp.cpp index 5fbf5c6..dbff1bb 100644 --- a/tests/yolo3_tiny512tp/yolo3_tiny512tp.cpp +++ b/tests/yolo3_tiny512tp/yolo3_tiny512tp.cpp @@ -52,7 +52,7 @@ int main() { tk::dnn::Conv2d c10(&net, 512, 3, 3, 1, 1, 1, 1, c10_bin, true); tk::dnn::Activation a10(&net, tk::dnn::ACTIVATION_LEAKY); - tk::dnn::Pooling p11(&net, 2, 2, 1, 1,0,0, tk::dnn::POOLING_MAX, false, true); + tk::dnn::Pooling p11(&net, 2, 2, 1, 1,0,0, tk::dnn::POOLING_MAX_FIXEDSIZE); tk::dnn::Conv2d c12(&net, 1024, 3, 3, 1, 1, 1, 1, c12_bin, true); tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY); @@ -115,9 +115,13 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); readBinaryFile(output_bin, out_dim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - - return 0; + + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo3_tinyNM512/yolo3_tinyNM512.cpp b/tests/yolo3_tinyNM512/yolo3_tinyNM512.cpp index 73aa9ca..b3a8c06 100644 --- a/tests/yolo3_tinyNM512/yolo3_tinyNM512.cpp +++ b/tests/yolo3_tinyNM512/yolo3_tinyNM512.cpp @@ -116,9 +116,12 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); readBinaryFile(output_bin, out_dim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - - return 0; + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo_224/yolo_224.cpp b/tests/yolo_224/yolo_224.cpp index fff98c4..6c18a9b 100644 --- a/tests/yolo_224/yolo_224.cpp +++ b/tests/yolo_224/yolo_224.cpp @@ -136,15 +136,21 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); readBinaryFile(output_bin, out_dim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - std::cout<<"\n\nDetected objects: \n"; - dnnType *output_h = new dnnType[rI.output_dim.tot()]; - checkCuda(cudaMemcpy(output_h, out_data2, - rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost)); - rI.interpretData(output_h); - rI.showImageResult(input_h); - return 0; + // std::cout<<"\n\nDetected objects: \n"; + // dnnType *output_h = new dnnType[rI.output_dim.tot()]; + // checkCuda(cudaMemcpy(output_h, out_data2, + // rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost)); + // rI.interpretData(output_h); + // rI.showImageResult(input_h); + + + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo_berkeley/yolo_berkeley.cpp b/tests/yolo_berkeley/yolo_berkeley.cpp index 8d2b9d7..a9ec33e 100644 --- a/tests/yolo_berkeley/yolo_berkeley.cpp +++ b/tests/yolo_berkeley/yolo_berkeley.cpp @@ -136,15 +136,21 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); readBinaryFile(output_bin, out_dim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - std::cout<<"\n\nDetected objects: \n"; - dnnType *output_h = new dnnType[rI.output_dim.tot()]; - checkCuda(cudaMemcpy(output_h, out_data2, - rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost)); - rI.interpretData(output_h); - rI.showImageResult(input_h); - return 0; + // std::cout<<"\n\nDetected objects: \n"; + // dnnType *output_h = new dnnType[rI.output_dim.tot()]; + // checkCuda(cudaMemcpy(output_h, out_data2, + // rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost)); + // rI.interpretData(output_h); + // rI.showImageResult(input_h); + + + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo_relu/yolo_relu.cpp b/tests/yolo_relu/yolo_relu.cpp index 8157849..66d20cb 100644 --- a/tests/yolo_relu/yolo_relu.cpp +++ b/tests/yolo_relu/yolo_relu.cpp @@ -136,16 +136,20 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); readBinaryFile(output_bin, out_dim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - - std::cout<<"\n\nDetected objects: \n"; - dnnType *output_h = new dnnType[rI.output_dim.tot()]; - checkCuda(cudaMemcpy(output_h, out_data2, - rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost)); - rI.interpretData(output_h, 608, 608); - rI.showImageResult(input_h); + + // std::cout<<"\n\nDetected objects: \n"; + // dnnType *output_h = new dnnType[rI.output_dim.tot()]; + // checkCuda(cudaMemcpy(output_h, out_data2, + // rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost)); + // rI.interpretData(output_h, 608, 608); + // rI.showImageResult(input_h); - return 0; + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo_tiny/yolo_tiny.cpp b/tests/yolo_tiny/yolo_tiny.cpp index 357510a..41585f4 100644 --- a/tests/yolo_tiny/yolo_tiny.cpp +++ b/tests/yolo_tiny/yolo_tiny.cpp @@ -88,8 +88,13 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); readBinaryFile(output_bin, out_dim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - return 0; + + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; } diff --git a/tests/yolo_voc/yolo_voc.cpp b/tests/yolo_voc/yolo_voc.cpp index c82ee4a..24c3745 100644 --- a/tests/yolo_voc/yolo_voc.cpp +++ b/tests/yolo_voc/yolo_voc.cpp @@ -138,15 +138,19 @@ int main() { dnnType *out, *out_h; int out_dim = net.getOutputDim().tot(); readBinaryFile(output_bin, out_dim, &out_h, &out); - std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out); - std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out); - std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2); - - std::cout<<"\n\nDetected objects: \n"; - dnnType *output_h = new dnnType[rI.output_dim.tot()]; - checkCuda(cudaMemcpy(output_h, out_data2, - rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost)); - rI.interpretData(output_h); - rI.showImageResult(input_h); - return 0; + std::cout<<"CUDNN vs correct"; + int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN; + std::cout<<"TRT vs correct"; + int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN; + std::cout<<"CUDNN vs TRT "; + int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT; + + // std::cout<<"\n\nDetected objects: \n"; + // dnnType *output_h = new dnnType[rI.output_dim.tot()]; + // checkCuda(cudaMemcpy(output_h, out_data2, + // rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost)); + // rI.interpretData(output_h); + // rI.showImageResult(input_h); + + return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt; }