Fix pooling, add return code in each test, add return code handling in test_all_tests script
Signed-off-by: Micaela Verucchi <micaelaverucchi@gmail.com>
This commit is contained in:
@@ -72,17 +72,17 @@ class ImuOdom {
|
|||||||
tk::dnn::Input *x0 = new tk::dnn::Input (net, dim0, i0_d);
|
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_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::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::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_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::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::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_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::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::Layer *concat_l[3] = { x0_2, x1_2, x2_2 };
|
||||||
tk::dnn::Route *concat = new tk::dnn::Route(net, concat_l, 3);
|
tk::dnn::Route *concat = new tk::dnn::Route(net, concat_l, 3);
|
||||||
|
|||||||
@@ -407,8 +407,9 @@ protected:
|
|||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
POOLING_MAX = 0,
|
POOLING_MAX = 0,
|
||||||
POOLING_AVERAGE = 1, // count for average includes 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_AVERAGE_EXCLUDE_PADDING = 2, // count for average does not include padded values
|
||||||
|
POOLING_MAX_FIXEDSIZE = 100 // max pool darknet fashion
|
||||||
} tkdnnPoolingMode_t;
|
} tkdnnPoolingMode_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -421,13 +422,13 @@ public:
|
|||||||
int winH, winW;
|
int winH, winW;
|
||||||
int strideH, strideW;
|
int strideH, strideW;
|
||||||
int paddingH, paddingW;
|
int paddingH, paddingW;
|
||||||
bool maxpoolfixedsize;
|
bool size;
|
||||||
tkdnnPoolingMode_t pool_mode;
|
tkdnnPoolingMode_t pool_mode;
|
||||||
|
|
||||||
Pooling(Network *net, int winH, int winW,
|
Pooling(Network *net, int winH, int winW,
|
||||||
int strideH, int strideW,
|
int strideH, int strideW,
|
||||||
int paddingH = 0, int paddingW = 0,
|
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 ~Pooling();
|
||||||
virtual layerType_t getLayerType() { return LAYER_POOLING; };
|
virtual layerType_t getLayerType() { return LAYER_POOLING; };
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
void printCenteredTitle(const char *title, char fill, int dim = 30);
|
||||||
bool fileExist(const char *fname);
|
bool fileExist(const char *fname);
|
||||||
void downloadWeightsifDoNotExist(const std::string& input_bin, const std::string& test_folder, const std::string& weights_url);
|
void downloadWeightsifDoNotExist(const std::string& input_bin, const std::string& test_folder, const std::string& weights_url);
|
||||||
|
|||||||
@@ -5,14 +5,26 @@ cd build
|
|||||||
RED='\033[1;31m'
|
RED='\033[1;31m'
|
||||||
GREEN='\033[1;32m'
|
GREEN='\033[1;32m'
|
||||||
ORANGE='\033[1;33m'
|
ORANGE='\033[1;33m'
|
||||||
|
PINK='\033[1;95m'
|
||||||
NC='\033[0m' # No Color
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
function print_output {
|
function print_output {
|
||||||
if [ $1 -eq 0 ]
|
if [ $1 -eq 0 ]; then
|
||||||
then
|
|
||||||
echo -e "$2 ${GREEN}OK${NC}"
|
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
|
else
|
||||||
echo -e "$2 ${RED}NOT OKAY${NC}"
|
echo -e "$2 ${RED}NOT OKAY (OPENCV maybe)${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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) ptype = PoolingType::kAVERAGE;
|
||||||
if(l->pool_mode == tkdnnPoolingMode_t::POOLING_AVERAGE_EXCLUDE_PADDING) ptype = PoolingType::kMAX_AVERAGE_BLEND;
|
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);
|
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);
|
IPluginLayer *lRT = networkRT->addPlugin(&input, 1, *plugin);
|
||||||
|
|||||||
+13
-21
@@ -7,7 +7,7 @@ namespace tk { namespace dnn {
|
|||||||
|
|
||||||
Pooling::Pooling( Network *net, int winH, int winW, int strideH, int strideW,
|
Pooling::Pooling( Network *net, int winH, int winW, int strideH, int strideW,
|
||||||
int paddingH, int paddingW,
|
int paddingH, int paddingW,
|
||||||
tkdnnPoolingMode_t pool_mode, bool final, bool maxpoolfixedsize) :
|
tkdnnPoolingMode_t pool_mode, bool final) :
|
||||||
Layer(net, final) {
|
Layer(net, final) {
|
||||||
|
|
||||||
this->winH = winH;
|
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->pool_mode = pool_mode;
|
||||||
this->paddingH = paddingH;
|
this->paddingH = paddingH;
|
||||||
this->paddingW = paddingW;
|
this->paddingW = paddingW;
|
||||||
this->maxpoolfixedsize = maxpoolfixedsize;
|
|
||||||
|
|
||||||
checkCUDNN( cudnnCreatePoolingDescriptor(&poolingDesc) );
|
checkCUDNN( cudnnCreatePoolingDescriptor(&poolingDesc) );
|
||||||
|
|
||||||
@@ -40,9 +39,10 @@ Pooling::Pooling( Network *net, int winH, int winW, int strideH, int strideW,
|
|||||||
n = l;
|
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) );
|
CUDNN_NOT_PROPAGATE_NAN, winH, winW, paddingH, paddingW, strideH, strideW) );
|
||||||
|
|
||||||
checkCUDNN( cudnnSetTensor4dDescriptor(srcTensorDesc,
|
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));
|
// checkCUDNN( cudnnGetPooling2dForwardOutputDim(poolingDesc, srcTensorDesc, &n, &c, &h, &w));
|
||||||
|
|
||||||
//compute w and h as in darknet
|
//compute w and h as in darknet
|
||||||
int padH = paddingH == 0? winH -1 : paddingH;
|
if(pool_mode == tkdnnPoolingMode_t::POOLING_MAX_FIXEDSIZE){
|
||||||
int padW = paddingW == 0? winW -1 : paddingW;
|
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{
|
|
||||||
h = (h + padH - winH)/strideH +1;
|
h = (h + padH - winH)/strideH +1;
|
||||||
w = (w + padW - winW)/strideW +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;
|
// h = (h + winH*this->paddingH)/strideH;
|
||||||
// w = (w + winW*this->paddingW)/strideW;
|
// w = (w + winW*this->paddingW)/strideW;
|
||||||
@@ -112,22 +110,16 @@ dnnType* Pooling::infer(dataDim_t &dim, dnnType* srcData) {
|
|||||||
poolDst = tmpOutputData;
|
poolDst = tmpOutputData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(pool_mode == tkdnnPoolingMode_t::POOLING_MAX_FIXEDSIZE){
|
||||||
|
|
||||||
if(this->maxpoolfixedsize)
|
|
||||||
{
|
|
||||||
MaxPoolingForward(poolSrc, poolDst, dim.n, dim.c, dim.h, dim.w, this->strideH, this->strideW, this->winH, this->winH-1);
|
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 alpha = dnnType(1);
|
||||||
dnnType beta = dnnType(0);
|
dnnType beta = dnnType(0);
|
||||||
checkCUDNN( cudnnPoolingForward(net->cudnnHandle, poolingDesc,
|
checkCUDNN( cudnnPoolingForward(net->cudnnHandle, poolingDesc,
|
||||||
&alpha, srcTensorDesc, poolSrc,
|
&alpha, srcTensorDesc, poolSrc,
|
||||||
&beta, dstTensorDesc, poolDst) );
|
&beta, dstTensorDesc, poolDst) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//update dim
|
//update dim
|
||||||
dim = output_dim;
|
dim = output_dim;
|
||||||
|
|||||||
@@ -342,15 +342,15 @@ int main()
|
|||||||
tk::dnn::Activation a83(&net, tk::dnn::ACTIVATION_LEAKY);
|
tk::dnn::Activation a83(&net, tk::dnn::ACTIVATION_LEAKY);
|
||||||
|
|
||||||
//SPP
|
//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::Layer *r85_layers[1] = {&a83};
|
||||||
tk::dnn::Route r85(&net, r85_layers, 1);
|
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::Layer *r87_layers[1] = {&a83};
|
||||||
tk::dnn::Route r87(&net, r87_layers, 1);
|
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::Layer *r89_layers[4] = {&p88, &p86, &p84, &a83};
|
||||||
tk::dnn::Route r89(&net, r89_layers, 4);
|
tk::dnn::Route r89(&net, r89_layers, 4);
|
||||||
//END SPP
|
//END SPP
|
||||||
@@ -536,18 +536,19 @@ int main()
|
|||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
rt_out[i] = (dnnType *)netRT.buffersRT[i + 1];
|
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++)
|
for (int i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int odim = out_dim[i].tot();
|
int odim = out_dim[i].tot();
|
||||||
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
||||||
std::cout << "CUDNN vs correct";
|
std::cout<<"CUDNN vs correct";
|
||||||
checkResult(odim, cudnn_out[i], out);
|
ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout << "TRT vs correct";
|
std::cout<<"TRT vs correct";
|
||||||
checkResult(odim, rt_out[i], out);
|
ret_tensorrt |= checkResult(odim, rt_out[i], out) == 0 ? 0 : ERROR_TKDNN;
|
||||||
std::cout << "CUDNN vs TRT ";
|
std::cout<<"CUDNN vs TRT ";
|
||||||
checkResult(odim, cudnn_out[i], rt_out[i]);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -339,12 +339,12 @@ int main()
|
|||||||
int odim = out_dim.tot();
|
int odim = out_dim.tot();
|
||||||
readBinaryFile(output_bin, odim, &out_h, &out);
|
readBinaryFile(output_bin, odim, &out_h, &out);
|
||||||
|
|
||||||
std::cout << "CUDNN vs correct";
|
std::cout<<"CUDNN vs correct";
|
||||||
checkResult(odim, cudnn_out, out);
|
int ret_cudnn = checkResult(odim, cudnn_out, out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout << "TRT vs correct";
|
std::cout<<"TRT vs correct";
|
||||||
checkResult(odim, rt_out, out);
|
int ret_tensorrt = checkResult(odim, rt_out, out) == 0 ? 0 : ERROR_TKDNN;
|
||||||
std::cout << "CUDNN vs TRT ";
|
std::cout<<"CUDNN vs TRT ";
|
||||||
checkResult(odim, cudnn_out, rt_out);
|
int ret_cudnn_tensorrt = checkResult(odim, cudnn_out, rt_out) == 0 ? 0 : ERROR_CUDNNvsTENSORRT;
|
||||||
|
|
||||||
return 0;
|
return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -501,6 +501,7 @@ int main()
|
|||||||
|
|
||||||
tk::dnn::Layer *outs[3] = { hm, wh, reg };
|
tk::dnn::Layer *outs[3] = { hm, wh, reg };
|
||||||
int out_count = 1;
|
int out_count = 1;
|
||||||
|
int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0;
|
||||||
for(int i=0; i<3; i++) {
|
for(int i=0; i<3; i++) {
|
||||||
printCenteredTitle((std::string(" RESNET CHECK RESULTS ") + std::to_string(i) + " ").c_str(), '=', 30);
|
printCenteredTitle((std::string(" RESNET CHECK RESULTS ") + std::to_string(i) + " ").c_str(), '=', 30);
|
||||||
|
|
||||||
@@ -517,13 +518,12 @@ int main()
|
|||||||
if(i==0)
|
if(i==0)
|
||||||
out_count ++;
|
out_count ++;
|
||||||
|
|
||||||
std::cout << "CUDNN vs correct";
|
std::cout<<"CUDNN vs correct";
|
||||||
checkResult(odim, cudnn_out, out);
|
ret_cudnn |= checkResult(odim, cudnn_out, out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout << "TRT vs correct";
|
std::cout<<"TRT vs correct";
|
||||||
checkResult(odim, rt_out, out);
|
ret_tensorrt |= checkResult(odim, rt_out, out) == 0 ? 0 : ERROR_TKDNN;
|
||||||
std::cout << "CUDNN vs TRT ";
|
std::cout<<"CUDNN vs TRT ";
|
||||||
checkResult(odim, cudnn_out, rt_out);
|
ret_cudnn_tensorrt |= checkResult(odim, cudnn_out, rt_out) == 0 ? 0 : ERROR_CUDNNvsTENSORRT;
|
||||||
}
|
}
|
||||||
|
return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ int main() {
|
|||||||
|
|
||||||
std::ofstream path("path.txt");
|
std::ofstream path("path.txt");
|
||||||
|
|
||||||
|
int ret_cudnn = 0;
|
||||||
for(int i=0; i<N; i++) {
|
for(int i=0; i<N; i++) {
|
||||||
std::cout<<"i: "<<i<<"\n";
|
std::cout<<"i: "<<i<<"\n";
|
||||||
//TIMER_START
|
//TIMER_START
|
||||||
@@ -65,9 +66,9 @@ int main() {
|
|||||||
// Print real test
|
// Print real test
|
||||||
printCenteredTitle( (std::string(" CHECK RESULT ") + std::to_string(i) + " ").c_str() , '=');
|
printCenteredTitle( (std::string(" CHECK RESULT ") + std::to_string(i) + " ").c_str() , '=');
|
||||||
ImuNet.odim0.print();
|
ImuNet.odim0.print();
|
||||||
checkResult(ImuNet.odim0.tot(), out0, ImuNet.o0_d);
|
ret_cudnn |= checkResult(ImuNet.odim0.tot(), out0, ImuNet.o0_d) == 0 ? 0 : ERROR_CUDNN;
|
||||||
ImuNet.odim1.print();
|
ImuNet.odim1.print();
|
||||||
checkResult(ImuNet.odim0.tot(), out1, ImuNet.o1_d);
|
ret_cudnn |= checkResult(ImuNet.odim0.tot(), out1, ImuNet.o1_d) == 0 ? 0 : ERROR_CUDNN;
|
||||||
|
|
||||||
i0_h += ImuNet.dim0.tot();
|
i0_h += ImuNet.dim0.tot();
|
||||||
i1_h += ImuNet.dim1.tot();
|
i1_h += ImuNet.dim1.tot();
|
||||||
@@ -77,5 +78,5 @@ int main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
system("cat path.txt | gnuplot -p -e \"set datafile separator ' '; plot '-'\"");
|
system("cat path.txt | gnuplot -p -e \"set datafile separator ' '; plot '-'\"");
|
||||||
return 0;
|
return ret_cudnn;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -507,17 +507,19 @@ int main()
|
|||||||
dnnType *out2, *out2_h;
|
dnnType *out2, *out2_h;
|
||||||
int odim2 = out_dim2.tot();
|
int odim2 = out_dim2.tot();
|
||||||
readBinaryFile(output_bin2, odim2, &out2_h, &out2);
|
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;
|
std::cout << "CUDNN vs correct" << std::endl;
|
||||||
checkResult(odim1, cudnn_out1, out1);
|
ret_cudnn |= checkResult(odim1, cudnn_out1, out1) == 0 ? 0 : ERROR_CUDNN;
|
||||||
checkResult(odim2, cudnn_out2, out2);
|
ret_cudnn |= checkResult(odim2, cudnn_out2, out2) == 0 ? 0 : ERROR_CUDNN;
|
||||||
|
|
||||||
std::cout << "TRT vs correct" << std::endl;
|
std::cout << "TRT vs correct" << std::endl;
|
||||||
checkResult(odim1, rt_out1, out1);
|
ret_tensorrt |= checkResult(odim1, rt_out1, out1) == 0 ? 0 : ERROR_TKDNN;
|
||||||
checkResult(odim2, rt_out2, out2);
|
ret_tensorrt |= checkResult(odim2, rt_out2, out2) == 0 ? 0 : ERROR_TKDNN;
|
||||||
|
|
||||||
std::cout << "CUDNN vs TRT " << std::endl;
|
std::cout << "CUDNN vs TRT " << std::endl;
|
||||||
checkResult(odim1, cudnn_out1, rt_out1);
|
ret_cudnn_tensorrt |= checkResult(odim1, cudnn_out1, rt_out1) == 0 ? 0 : ERROR_CUDNNvsTENSORRT;
|
||||||
checkResult(odim2, cudnn_out2, rt_out2);
|
ret_cudnn_tensorrt |= checkResult(odim2, cudnn_out2, rt_out2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT;
|
||||||
|
|
||||||
std::cout << "---------------------------------------------------" << std::endl;
|
std::cout << "---------------------------------------------------" << std::endl;
|
||||||
std::cout << "Confidence CUDNN" << std::endl;
|
std::cout << "Confidence CUDNN" << std::endl;
|
||||||
@@ -533,8 +535,8 @@ int main()
|
|||||||
std::cout << "---------------------------------------------------" << std::endl;
|
std::cout << "---------------------------------------------------" << std::endl;
|
||||||
|
|
||||||
std::cout << "CUDNN vs TRT " << std::endl;
|
std::cout << "CUDNN vs TRT " << std::endl;
|
||||||
checkResult(conf->output_dim.tot(), conf->dstData, rt_out3);
|
ret_cudnn_tensorrt |= checkResult(conf->output_dim.tot(), conf->dstData, rt_out3) == 0 ? 0 : ERROR_CUDNNvsTENSORRT;
|
||||||
checkResult(loc->output_dim.tot(), loc->dstData, rt_out4);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -506,17 +506,19 @@ int main()
|
|||||||
dnnType *out2, *out2_h;
|
dnnType *out2, *out2_h;
|
||||||
int odim2 = out_dim2.tot();
|
int odim2 = out_dim2.tot();
|
||||||
readBinaryFile(output_bin2, odim2, &out2_h, &out2);
|
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;
|
std::cout << "CUDNN vs correct" << std::endl;
|
||||||
checkResult(odim1, cudnn_out1, out1);
|
ret_cudnn |= checkResult(odim1, cudnn_out1, out1) == 0 ? 0 : ERROR_CUDNN;
|
||||||
checkResult(odim2, cudnn_out2, out2);
|
ret_cudnn |= checkResult(odim2, cudnn_out2, out2) == 0 ? 0 : ERROR_CUDNN;
|
||||||
|
|
||||||
std::cout << "TRT vs correct" << std::endl;
|
std::cout << "TRT vs correct" << std::endl;
|
||||||
checkResult(odim1, rt_out1, out1);
|
ret_tensorrt |= checkResult(odim1, rt_out1, out1) == 0 ? 0 : ERROR_TKDNN;
|
||||||
checkResult(odim2, rt_out2, out2);
|
ret_tensorrt |= checkResult(odim2, rt_out2, out2) == 0 ? 0 : ERROR_TKDNN;
|
||||||
|
|
||||||
std::cout << "CUDNN vs TRT " << std::endl;
|
std::cout << "CUDNN vs TRT " << std::endl;
|
||||||
checkResult(odim1, cudnn_out1, rt_out1);
|
ret_cudnn_tensorrt |= checkResult(odim1, cudnn_out1, rt_out1) == 0 ? 0 : ERROR_CUDNNvsTENSORRT;
|
||||||
checkResult(odim2, cudnn_out2, rt_out2);
|
ret_cudnn_tensorrt |= checkResult(odim2, cudnn_out2, rt_out2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT;
|
||||||
|
|
||||||
std::cout << "---------------------------------------------------" << std::endl;
|
std::cout << "---------------------------------------------------" << std::endl;
|
||||||
std::cout << "Confidence CUDNN" << std::endl;
|
std::cout << "Confidence CUDNN" << std::endl;
|
||||||
@@ -532,8 +534,8 @@ int main()
|
|||||||
std::cout << "---------------------------------------------------" << std::endl;
|
std::cout << "---------------------------------------------------" << std::endl;
|
||||||
|
|
||||||
std::cout << "CUDNN vs TRT " << std::endl;
|
std::cout << "CUDNN vs TRT " << std::endl;
|
||||||
checkResult(conf->output_dim.tot(), conf->dstData, rt_out3);
|
ret_cudnn_tensorrt |= checkResult(conf->output_dim.tot(), conf->dstData, rt_out3) == 0 ? 0 : ERROR_CUDNNvsTENSORRT;
|
||||||
checkResult(loc->output_dim.tot(), loc->dstData, rt_out4);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -326,13 +326,13 @@ int main()
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int odim = out_dim.tot();
|
int odim = out_dim.tot();
|
||||||
readBinaryFile(output_bin, odim, &out_h, &out);
|
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";
|
return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt;
|
||||||
checkResult(odim, rt_out, out);
|
|
||||||
std::cout << "CUDNN vs TRT ";
|
|
||||||
checkResult(odim, cudnn_out, rt_out);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -377,6 +377,7 @@ int main()
|
|||||||
|
|
||||||
tk::dnn::Layer *outs[3] = { hm, wh, reg };
|
tk::dnn::Layer *outs[3] = { hm, wh, reg };
|
||||||
int out_count = 1;
|
int out_count = 1;
|
||||||
|
int ret_cudnn = 0, ret_tensorrt = 0, ret_cudnn_tensorrt = 0;
|
||||||
for(int i=0; i<3; i++) {
|
for(int i=0; i<3; i++) {
|
||||||
printCenteredTitle((std::string(" RESNET CHECK RESULTS ") + std::to_string(i) + " ").c_str(), '=', 30);
|
printCenteredTitle((std::string(" RESNET CHECK RESULTS ") + std::to_string(i) + " ").c_str(), '=', 30);
|
||||||
|
|
||||||
@@ -397,12 +398,12 @@ int main()
|
|||||||
if(i==0)
|
if(i==0)
|
||||||
out_count ++;
|
out_count ++;
|
||||||
|
|
||||||
std::cout << "CUDNN vs correct";
|
std::cout<<"CUDNN vs correct";
|
||||||
checkResult(odim, cudnn_out, out);
|
ret_cudnn |= checkResult(odim, cudnn_out, out) == 0 ? 0: ERROR_CUDNN;
|
||||||
|
std::cout<<"TRT vs correct";
|
||||||
std::cout << "TRT vs correct";
|
ret_tensorrt |= checkResult(odim, rt_out, out) == 0 ? 0 : ERROR_TKDNN;
|
||||||
checkResult(odim, rt_out, out);
|
std::cout<<"CUDNN vs TRT ";
|
||||||
std::cout << "CUDNN vs TRT ";
|
ret_cudnn_tensorrt |= checkResult(odim, cudnn_out, rt_out) == 0 ? 0 : ERROR_CUDNNvsTENSORRT;
|
||||||
checkResult(odim, cudnn_out, rt_out);
|
}
|
||||||
}
|
return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,8 +62,12 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
//readBinaryFile(output_bin, out_dim, &out_h, &out);
|
//readBinaryFile(output_bin, out_dim, &out_h, &out);
|
||||||
//std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out);
|
// std::cout<<"CUDNN vs correct";
|
||||||
//std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out);
|
// int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2);
|
// std::cout<<"TRT vs correct";
|
||||||
return 0;
|
// 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;
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-10
@@ -138,15 +138,20 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
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";
|
// std::cout<<"\n\nDetected objects: \n";
|
||||||
dnnType *output_h = new dnnType[rI.output_dim.tot()];
|
// dnnType *output_h = new dnnType[rI.output_dim.tot()];
|
||||||
checkCuda(cudaMemcpy(output_h, out_data2,
|
// checkCuda(cudaMemcpy(output_h, out_data2,
|
||||||
rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost));
|
// rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost));
|
||||||
rI.interpretData(output_h);
|
// rI.interpretData(output_h);
|
||||||
rI.showImageResult(input_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;
|
||||||
|
|
||||||
|
return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,14 +82,18 @@ int main() {
|
|||||||
}
|
}
|
||||||
for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1];
|
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++) {
|
for(int i=0; i<3; i++) {
|
||||||
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int odim = out_dim[i].tot();
|
int odim = out_dim[i].tot();
|
||||||
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
||||||
std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out);
|
std::cout<<"CUDNN vs correct";
|
||||||
std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out);
|
ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,14 +82,18 @@ int main() {
|
|||||||
}
|
}
|
||||||
for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1];
|
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++) {
|
for(int i=0; i<3; i++) {
|
||||||
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int odim = out_dim[i].tot();
|
int odim = out_dim[i].tot();
|
||||||
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
||||||
std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out);
|
std::cout<<"CUDNN vs correct";
|
||||||
std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out);
|
ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,14 +80,18 @@ int main() {
|
|||||||
}
|
}
|
||||||
for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1];
|
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++) {
|
for(int i=0; i<3; i++) {
|
||||||
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int odim = out_dim[i].tot();
|
int odim = out_dim[i].tot();
|
||||||
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
||||||
std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out);
|
std::cout<<"CUDNN vs correct";
|
||||||
std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out);
|
ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,14 +82,18 @@ int main() {
|
|||||||
}
|
}
|
||||||
for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1];
|
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++) {
|
for(int i=0; i<3; i++) {
|
||||||
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int odim = out_dim[i].tot();
|
int odim = out_dim[i].tot();
|
||||||
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
||||||
std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out);
|
std::cout<<"CUDNN vs correct";
|
||||||
std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out);
|
ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,14 +80,18 @@ int main() {
|
|||||||
}
|
}
|
||||||
for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1];
|
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++) {
|
for(int i=0; i<3; i++) {
|
||||||
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int odim = out_dim[i].tot();
|
int odim = out_dim[i].tot();
|
||||||
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
||||||
std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out);
|
std::cout<<"CUDNN vs correct";
|
||||||
std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out);
|
ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,14 +82,19 @@ int main() {
|
|||||||
}
|
}
|
||||||
for(int i=0; i<3; i++) rt_out[i] = (dnnType*)netRT.buffersRT[i+1];
|
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++) {
|
for(int i=0; i<3; i++) {
|
||||||
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
printCenteredTitle((std::string(" YOLO ") + std::to_string(i) + " CHECK RESULTS ").c_str(), '=', 30);
|
||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int odim = out_dim[i].tot();
|
int odim = out_dim[i].tot();
|
||||||
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
readBinaryFile(output_bins[i], odim, &out_h, &out);
|
||||||
std::cout<<"CUDNN vs correct"; checkResult(odim, cudnn_out[i], out);
|
std::cout<<"CUDNN vs correct";
|
||||||
std::cout<<"TRT vs correct"; checkResult(odim, rt_out[i], out);
|
ret_cudnn |= checkResult(odim, cudnn_out[i], out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(odim, cudnn_out[i], rt_out[i]);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ int main() {
|
|||||||
|
|
||||||
tk::dnn::Conv2d c10(&net, 512, 3, 3, 1, 1, 1, 1, c10_bin, true);
|
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::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::Conv2d c12(&net, 1024, 3, 3, 1, 1, 1, 1, c12_bin, true);
|
||||||
tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);
|
tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);
|
||||||
@@ -118,9 +118,13 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
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 correct";
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2);
|
int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN;
|
||||||
|
std::cout<<"TRT vs correct";
|
||||||
return 0;
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ int main() {
|
|||||||
|
|
||||||
tk::dnn::Conv2d c10(&net, 512, 3, 3, 1, 1, 1, 1, c10_bin, true);
|
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::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::Conv2d c12(&net, 1024, 3, 3, 1, 1, 1, 1, c12_bin, true);
|
||||||
tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);
|
tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);
|
||||||
@@ -117,9 +117,12 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
||||||
std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out);
|
std::cout<<"CUDNN vs correct";
|
||||||
std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out);
|
int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2);
|
std::cout<<"TRT vs correct";
|
||||||
|
int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN;
|
||||||
return 0;
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ int main() {
|
|||||||
|
|
||||||
tk::dnn::Conv2d c10(&net, 512, 3, 3, 1, 1, 1, 1, c10_bin, true);
|
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::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::Conv2d c12(&net, 1024, 3, 3, 1, 1, 1, 1, c12_bin, true);
|
||||||
tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);
|
tk::dnn::Activation a12(&net, tk::dnn::ACTIVATION_LEAKY);
|
||||||
@@ -115,9 +115,13 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
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 correct";
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2);
|
int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN;
|
||||||
|
std::cout<<"TRT vs correct";
|
||||||
return 0;
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,9 +116,12 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
||||||
std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out);
|
std::cout<<"CUDNN vs correct";
|
||||||
std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out);
|
int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2);
|
std::cout<<"TRT vs correct";
|
||||||
|
int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN;
|
||||||
return 0;
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-10
@@ -136,15 +136,21 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
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";
|
// std::cout<<"\n\nDetected objects: \n";
|
||||||
dnnType *output_h = new dnnType[rI.output_dim.tot()];
|
// dnnType *output_h = new dnnType[rI.output_dim.tot()];
|
||||||
checkCuda(cudaMemcpy(output_h, out_data2,
|
// checkCuda(cudaMemcpy(output_h, out_data2,
|
||||||
rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost));
|
// rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost));
|
||||||
rI.interpretData(output_h);
|
// rI.interpretData(output_h);
|
||||||
rI.showImageResult(input_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;
|
||||||
|
|
||||||
|
return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,15 +136,21 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
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";
|
// std::cout<<"\n\nDetected objects: \n";
|
||||||
dnnType *output_h = new dnnType[rI.output_dim.tot()];
|
// dnnType *output_h = new dnnType[rI.output_dim.tot()];
|
||||||
checkCuda(cudaMemcpy(output_h, out_data2,
|
// checkCuda(cudaMemcpy(output_h, out_data2,
|
||||||
rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost));
|
// rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost));
|
||||||
rI.interpretData(output_h);
|
// rI.interpretData(output_h);
|
||||||
rI.showImageResult(input_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;
|
||||||
|
|
||||||
|
return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,16 +136,20 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
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<<"\n\nDetected objects: \n";
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2);
|
// dnnType *output_h = new dnnType[rI.output_dim.tot()];
|
||||||
|
// checkCuda(cudaMemcpy(output_h, out_data2,
|
||||||
std::cout<<"\n\nDetected objects: \n";
|
// rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost));
|
||||||
dnnType *output_h = new dnnType[rI.output_dim.tot()];
|
// rI.interpretData(output_h, 608, 608);
|
||||||
checkCuda(cudaMemcpy(output_h, out_data2,
|
// rI.showImageResult(input_h);
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,8 +88,13 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
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 correct";
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2);
|
int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN;
|
||||||
return 0;
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-11
@@ -138,15 +138,19 @@ int main() {
|
|||||||
dnnType *out, *out_h;
|
dnnType *out, *out_h;
|
||||||
int out_dim = net.getOutputDim().tot();
|
int out_dim = net.getOutputDim().tot();
|
||||||
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
readBinaryFile(output_bin, out_dim, &out_h, &out);
|
||||||
std::cout<<"CUDNN vs correct"; checkResult(out_dim, out_data, out);
|
std::cout<<"CUDNN vs correct";
|
||||||
std::cout<<"TRT vs correct"; checkResult(out_dim, out_data2, out);
|
int ret_cudnn = checkResult(out_dim, out_data, out) == 0 ? 0: ERROR_CUDNN;
|
||||||
std::cout<<"CUDNN vs TRT "; checkResult(out_dim, out_data, out_data2);
|
std::cout<<"TRT vs correct";
|
||||||
|
int ret_tensorrt = checkResult(out_dim, out_data2, out) == 0 ? 0 : ERROR_TKDNN;
|
||||||
std::cout<<"\n\nDetected objects: \n";
|
std::cout<<"CUDNN vs TRT ";
|
||||||
dnnType *output_h = new dnnType[rI.output_dim.tot()];
|
int ret_cudnn_tensorrt = checkResult(out_dim, out_data, out_data2) == 0 ? 0 : ERROR_CUDNNvsTENSORRT;
|
||||||
checkCuda(cudaMemcpy(output_h, out_data2,
|
|
||||||
rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost));
|
// std::cout<<"\n\nDetected objects: \n";
|
||||||
rI.interpretData(output_h);
|
// dnnType *output_h = new dnnType[rI.output_dim.tot()];
|
||||||
rI.showImageResult(input_h);
|
// checkCuda(cudaMemcpy(output_h, out_data2,
|
||||||
return 0;
|
// rI.output_dim.tot()*sizeof(dnnType), cudaMemcpyDeviceToHost));
|
||||||
|
// rI.interpretData(output_h);
|
||||||
|
// rI.showImageResult(input_h);
|
||||||
|
|
||||||
|
return ret_cudnn | ret_tensorrt | ret_cudnn_tensorrt;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user