update tensorrt8 branch

This commit is contained in:
perseusdg
2021-08-30 19:04:26 +05:30
parent 2ffe07057e
commit de83ae5d25
20 changed files with 96 additions and 97 deletions
+7 -8
View File
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.15)
project (tkDNN)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
if(UNIX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -fPIC -Wno-deprecated-declarations -Wno-unused-variable ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -fPIC -Wno-deprecated-declarations -Wno-unused-variable")
endif()
if(WIN32)
set(CMAKE_CXX_STANDARD 11)
@@ -31,7 +31,7 @@ endif()
find_package(CUDA 9.0 REQUIRED)
SET(CUDA_SEPARABLE_COMPILATION ON)
#set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -arch=sm_30 --compiler-options '-fPIC'")
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --maxrregcount=32)
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --maxrregcount=32 -G -g)
find_package(CUDNN REQUIRED)
@@ -41,8 +41,7 @@ include_directories(${CUDNN_INCLUDE_DIR})
# compile
file(GLOB tkdnn_CUSRC "src/kernels/*.cu" "src/sorting.cu" )
cuda_include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include ${CUDA_INCLUDE_DIRS} ${CUDNN_INCLUDE_DIRS})
cuda_add_library(kernels SHARED ${tkdnn_CUSRC})
target_link_libraries(kernels ${CUDA_CUBLAS_LIBRARIES})
#-------------------------------------------------------------------------------
@@ -65,12 +64,12 @@ find_package(yaml-cpp REQUIRED)
# Build Libraries
#-------------------------------------------------------------------------------
file(GLOB tkdnn_SRC "src/*.cpp")
set(tkdnn_LIBS kernels ${CUDA_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES} ${CUDNN_LIBRARIES} ${OpenCV_LIBS} yaml-cpp)
set(tkdnn_LIBS ${CUDA_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES} ${CUDNN_LIBRARIES} ${OpenCV_LIBS} yaml-cpp)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include ${CUDA_INCLUDE_DIRS} ${OPENCV_INCLUDE_DIRS} ${NVINFER_INCLUDES})
add_library(tkDNN SHARED ${tkdnn_SRC})
target_link_libraries(tkDNN ${tkdnn_LIBS})
cuda_add_library(tkDNN SHARED ${tkdnn_SRC} ${tkdnn_CUSRC})
target_link_libraries(tkDNN ${tkdnn_LIBS} ${CUDA_CUBLAS_LIBRAY})
#static
#add_library(tkDNN_static STATIC ${tkdnn_SRC})
@@ -169,7 +168,7 @@ target_link_libraries(seg_demo tkDNN)
#endif()
message("install dir:" ${CMAKE_INSTALL_PREFIX})
install(DIRECTORY include/ DESTINATION include/)
install(TARGETS tkDNN kernels DESTINATION lib)
install(TARGETS tkDNN DESTINATION lib)
install(TARGETS test_simple test_mnist test_mnistRT test_rtinference demo map_demo DESTINATION bin)
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" # source directory
DESTINATION "share/tkDNN/cmake/" # target directory
+1
View File
@@ -119,6 +119,7 @@ public:
bool serialize(const char *filename);
bool deserialize(const char *filename);
void destroy();
+3 -2
View File
@@ -8,6 +8,7 @@ public:
ActivationLeakyRT(const void *data, size_t length)
{
std::cout<<"DESERIALIZE LEAKYRT"<<std::endl;
const char* buf = reinterpret_cast<const char*>(data),*bufCheck = buf;
slope = readBUF<float>(buf);
size = readBUF<int>(buf);
@@ -139,8 +140,8 @@ public:
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
@@ -139,8 +139,8 @@ public:
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
+3 -2
View File
@@ -9,6 +9,7 @@ public:
~ActivationMishRT() {}
ActivationMishRT(const void *data, size_t length) {
std::cout<<"DESERIALIZE MISH"<<std::endl;
const char *buf = reinterpret_cast<const char *>(data), *bufCheck = buf;
size = readBUF<int>(buf);
assert(buf == bufCheck + length);
@@ -126,8 +127,8 @@ public:
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
@@ -14,6 +14,7 @@ public:
}
ActivationReLUCeiling(const void *data, size_t length) {
std::cout<<"RELU CEILING DESERIALIZE"<<std::endl;
const char *buf = reinterpret_cast<const char *>(data), *bufCheck = buf;
ceiling = readBUF<float>(buf);
size = readBUF<int>(buf);
@@ -140,9 +141,9 @@ public:
return &mFC;
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
public:
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
+2 -3
View File
@@ -352,10 +352,9 @@ public:
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
REGISTER_TENSORRT_PLUGIN(DeformableConvRTPluginCreator);
+2 -2
View File
@@ -154,8 +154,8 @@ public:
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
@@ -173,8 +173,8 @@ public:
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
+2 -2
View File
@@ -179,8 +179,8 @@ public:
return &mFC;
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
+2 -2
View File
@@ -134,8 +134,8 @@ public:
return &mFC;
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
+2 -2
View File
@@ -140,8 +140,8 @@ public:
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
+2 -2
View File
@@ -155,8 +155,8 @@ public:
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
+2 -2
View File
@@ -173,8 +173,8 @@ public:
return &mFC;
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
+3 -3
View File
@@ -157,9 +157,9 @@ public:
const PluginFieldCollection *getFieldNames() NOEXCEPT override{
return &mFC;
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
public:
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
+7 -4
View File
@@ -73,7 +73,8 @@ public:
}
const char *getPluginVersion() const NOEXCEPT override{
return "UpsampleRT_tkDNN";
static const char* UPSAMPLE_RT_PLUGIN = "UpsampleRT_TRT";
return UPSAMPLE_RT_PLUGIN;
}
void destroy() NOEXCEPT override{delete this;}
@@ -128,7 +129,8 @@ public:
}
const char *getPluginName() const NOEXCEPT override{
return "UpsampleRT_tkDNN";
static const char* UPSAMPLE_RT_PLUGIN = "UpsampleRT_TRT";
return UPSAMPLE_RT_PLUGIN;
}
const char *getPluginVersion() const NOEXCEPT override{
@@ -139,9 +141,10 @@ public:
return &mFC;
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
REGISTER_TENSORRT_PLUGIN(UpsampleRTPluginCreator);
+16 -7
View File
@@ -1,4 +1,5 @@
#include<cassert>
#include <vector>
#include "../kernels.h"
#define YOLORT_CLASSNAME_W 256
@@ -27,11 +28,12 @@ public:
}
YoloRT(const void *data,size_t length){
std::vector<float> maskTemp,biasTemp;
std::cout<<"LENGTH : "<<length<<std::endl;
const char* buf = reinterpret_cast<const char*>(data),*bufCheck = buf;
classes = readBUF<int>(buf);
num = readBUF<int>(buf);
n_masks = readBUF<int>(buf);
std::cout<<n_masks<<std::endl;
scaleXY = readBUF<float>(buf);
nms_thresh = readBUF<float>(buf);
nms_kind = readBUF<int>(buf);
@@ -39,10 +41,16 @@ public:
c = readBUF<int>(buf);
h = readBUF<int>(buf);
w = readBUF<int>(buf);
for(int i=0;i<n_masks;i++)
mask[i] = readBUF<dnnType>(buf);
for(int i=0;i<n_masks*2*num;i++)
bias[i] = readBUF<dnnType>(buf);
for(int i=0;i<n_masks;i++){
maskTemp.push_back(readBUF<dnnType>(buf));
std::cout<<maskTemp[i]<<std::endl;
}
for(int i=0;i<n_masks*2*num;i++){
biasTemp.push_back(readBUF<dnnType>(buf));
std::cout<<biasTemp[i]<<std::endl;
}
mask = maskTemp.data();
bias = biasTemp.data();
classesNames.resize(classes);
for(int i=0;i<classes;i++){
char tmp[YOLORT_CLASSNAME_W];
@@ -133,6 +141,7 @@ public:
char *buf = reinterpret_cast<char *>(buffer), *a = buf;
tk::dnn::writeBUF(buf, classes); //std::cout << "Classes :" << classes << std::endl;
tk::dnn::writeBUF(buf, num); //std::cout << "Num : " << num << std::endl;
std::cout<<num<<std::endl;
tk::dnn::writeBUF(buf, n_masks); //std::cout << "N_Masks" << n_masks << std::endl;
tk::dnn::writeBUF(buf, scaleXY); //std::cout << "ScaleXY :" << scaleXY << std::endl;
tk::dnn::writeBUF(buf, nms_thresh); //std::cout << "nms_thresh :" << nms_thresh << std::endl;
@@ -265,8 +274,8 @@ public:
}
private:
static PluginFieldCollection mFC;
static std::vector<PluginField> mPluginAttributes;
PluginFieldCollection mFC;
std::vector<PluginField> mPluginAttributes;
std::string mPluginNamespace;
};
+26 -48
View File
@@ -8,45 +8,13 @@
#include "utils.h"
#include "NvInfer.h"
#include "NetworkRT.h"
#include "Int8Calibrator.h"
using namespace nvinfer1;
PluginFieldCollection tk::dnn::ActivationLeakyRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::ActivationReLUCeilingPluginCreator::mFC{};
PluginFieldCollection tk::dnn::ActivationMishRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::ActivationLogisticRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::DeformableConvRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::RegionRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::ReorgRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::UpsampleRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::ShortcutRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::ReshapeRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::MaxPoolFixedSizeRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::ResizeLayerRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::YoloRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::RouteRTPluginCreator::mFC{};
PluginFieldCollection tk::dnn::FlattenConcatRTPluginCreator::mFC{};
std::vector<PluginField> tk::dnn::ActivationLeakyRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::ActivationReLUCeilingPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::ActivationMishRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::ActivationLogisticRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::DeformableConvRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::RegionRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::ReorgRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::UpsampleRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::ShortcutRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::ReshapeRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::MaxPoolFixedSizeRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::ResizeLayerRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::YoloRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::RouteRTPluginCreator::mPluginAttributes;
std::vector<PluginField> tk::dnn::FlattenConcatRTPluginCreator::mPluginAttributes;
// Logger for info/warning/errors
class Logger : public ILogger {
void log(Severity severity, const char* msg) NOEXCEPT override {
@@ -590,7 +558,7 @@ ILayer* NetworkRT::convert_layer(ITensor *input, Yolo *l) {
ILayer* NetworkRT::convert_layer(ITensor *input, Upsample *l) {
//std::cout<<"convert Upsample\n";
//std::cout<<"New plugin UPSAMPLE\n";
std::cout<<"New plugin UPSAMPLE\n";
IPluginV2 *plugin = new UpsampleRT(l->stride);
IPluginV2Layer *lRT = networkRT->addPluginV2(&input, 1, *plugin);
checkNULL(lRT);
@@ -681,11 +649,21 @@ bool NetworkRT::deserialize(const char *filename) {
runtimeRT = createInferRuntime(loggerRT);
engineRT = runtimeRT->deserializeCudaEngine(gieModelStream, size);
std::cout<<size<<std::endl;
//if (gieModelStream) delete [] gieModelStream;
return true;
}
void NetworkRT::destroy() {
contextRT->destroy();
configRT->destroy();
engineRT->destroy();
builderRT->destroy();
}
/*
IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialData, size_t serialLength) {
@@ -735,7 +713,7 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
r->w = readBUF<int>(buf);
assert(buf == bufCheck + serialLength);
return r;
}
}
if(name.find("Reorg") == 0) {
int strideTemp = readBUF<int>(buf);
@@ -745,7 +723,7 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
r->w = readBUF<int>(buf);
assert(buf == bufCheck + serialLength);
return r;
}
}
if(name.find("Shortcut") == 0) {
tk::dnn::dataDim_t bdim;
@@ -760,7 +738,7 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
r->w = readBUF<int>(buf);
return r;
assert(buf == bufCheck + serialLength);
}
}
if(name.find("Pooling") == 0) {
int cTemp = readBUF<int>(buf);
@@ -788,10 +766,10 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
r->i_w = readBUF<int>(buf);
assert(buf == bufCheck + serialLength);
return r;
}
}
if(name.find("Flatten") == 0) {
FlattenConcatRT *r = new FlattenConcatRT();
FlattenConcatRT *r = new FlattenConcatRT();
r->c = readBUF<int>(buf);
r->h = readBUF<int>(buf);
r->w = readBUF<int>(buf);
@@ -799,7 +777,7 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
r->cols = readBUF<int>(buf);
assert(buf == bufCheck + serialLength);
return r;
}
}
if(name.find("Reshape") == 0) {
@@ -808,11 +786,11 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
new_dim.c = readBUF<int>(buf);
new_dim.h = readBUF<int>(buf);
new_dim.w = readBUF<int>(buf);
ReshapeRT *r = new ReshapeRT(new_dim);
ReshapeRT *r = new ReshapeRT(new_dim);
assert(buf == bufCheck + serialLength);
return r;
}
}
if(name.find("Yolo") == 0) {
@@ -824,7 +802,7 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
int nms_kind_temp = readBUF<int>(buf);
int new_coords_temp = readBUF<int>(buf);
YoloRT *r = new YoloRT(classes_temp,num_temp,nullptr,n_masks_temp,scale_xy_temp,nms_thresh_temp,nms_kind_temp,new_coords_temp);
YoloRT *r = new YoloRT(classes_temp,num_temp,nullptr,n_masks_temp,scale_xy_temp,nms_thresh_temp,nms_kind_temp,new_coords_temp);
@@ -848,7 +826,7 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
yolos[n_yolos++] = r;
return r;
}
}
if(name.find("Upsample") == 0) {
int strideTemp = readBUF<int>(buf);
UpsampleRT* r = new UpsampleRT(strideTemp);
@@ -857,7 +835,7 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
r->w = readBUF<int>(buf);
assert(buf == bufCheck + serialLength);
return r;
}
}
if(name.find("Route") == 0) {
int groupsTemp = readBUF<int>(buf);
@@ -871,7 +849,7 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
r->w = readBUF<int>(buf);
assert(buf == bufCheck + serialLength);
return r;
}
}
if(name.find("Deformable") == 0) {
int chuck_dimTemp = readBUF<int>(buf);
@@ -924,7 +902,7 @@ IPlugin* PluginFactory::createPlugin(const char* layerName, const void* serialDa
free(aus);
assert(buf == bufCheck + serialLength);
return r;
}
}
FatalError("Cant deserialize Plugin");
return NULL;
+1 -1
View File
@@ -7,7 +7,7 @@ namespace tk { namespace dnn {
//convert network to tensorRT
std::cout<<(tensor_path).c_str()<<"\n";
netRT = new tk::dnn::NetworkRT(NULL, (tensor_path).c_str() );
netRT = new tk::dnn::NetworkRT(nullptr, (tensor_path).c_str() );
nBatches = n_batches;
confThreshold = conf_thresh;
+7
View File
@@ -26,8 +26,15 @@ int main() {
tk::dnn::NetworkRT *netRT = new tk::dnn::NetworkRT(net, net->getNetworkRTName(bin_path.c_str()));
int ret = testInference(input_bins, output_bins, net, netRT);
std::cout<<ret<<std::endl;
std::cout<<"Releasing Layers"<<std::endl;
net->releaseLayers();
std::cout<<"DELETING NET"<<std::endl;
delete net;
std::cout<<"DELETING NETRT"<<std::endl;
netRT->destroy();
delete netRT;
std::cout<<"RETRUNING RET"<<std::endl;
return ret;
}