From cd58072ae95940f70ebe4a47a0faaccd42c8ee1a Mon Sep 17 00:00:00 2001 From: Harshvardhan Chandirasekar <43143075+perseusdg@users.noreply.github.com> Date: Sun, 17 Apr 2022 11:01:57 -0700 Subject: [PATCH] Fixes for running master branch on windows This commit has fixes in the form of __declspec(dllexport) and __declspec(dllimport) to run the tkdnn master branch on windows along with removing cmake_export_all_symbols and solely using __declspec(dllexport) --- CMakeLists.txt | 7 ++- cmake/cuda_script.exe | Bin 0 -> 287744 bytes cmake/cuda_script.exp | Bin 0 -> 778 bytes cmake/cuda_script.lib | Bin 0 -> 1770 bytes demo/demoConfig.yaml | 4 +- include/tkDNN/CenterTrack.h | 8 +-- include/tkDNN/CenternetDetection.h | 6 +- include/tkDNN/CenternetDetection3D.h | 8 +-- include/tkDNN/DarknetParser.h | 2 +- include/tkDNN/Layer.h | 58 +++++++++--------- include/tkDNN/MobilenetDetection.h | 6 +- include/tkDNN/Network.h | 14 ++--- include/tkDNN/NetworkRT.h | 8 +-- include/tkDNN/NetworkViz.h | 4 +- include/tkDNN/Yolo3Detection.h | 6 +- include/tkDNN/demo_utils.h | 3 +- include/tkDNN/evaluation.h | 6 +- include/tkDNN/kernels.h | 36 +++++------ include/tkDNN/kernelsThrust.h | 20 +++--- include/tkDNN/pluginsRT/ActivationLeakyRT.h | 2 +- .../tkDNN/pluginsRT/ActivationLogisticRT.h | 2 +- include/tkDNN/pluginsRT/ActivationMishRT.h | 2 +- .../tkDNN/pluginsRT/ActivationReLUCeilingRT.h | 2 +- include/tkDNN/pluginsRT/ConstantPaddingRT.h | 2 +- include/tkDNN/pluginsRT/DeformableConvRT.h | 2 +- include/tkDNN/pluginsRT/FlattenConcatRT.h | 2 +- .../tkDNN/pluginsRT/MaxPoolingFixedSizeRT.h | 2 +- include/tkDNN/pluginsRT/ReflectionPadding.h | 2 +- include/tkDNN/pluginsRT/RegionRT.h | 2 +- include/tkDNN/pluginsRT/ReorgRT.h | 2 +- include/tkDNN/pluginsRT/ReshapeRT.h | 2 +- include/tkDNN/pluginsRT/ResizeLayerRT.h | 2 +- include/tkDNN/pluginsRT/RouteRT.h | 4 +- include/tkDNN/pluginsRT/ShortcutRT.h | 2 +- include/tkDNN/pluginsRT/UpsampleRT.h | 2 +- include/tkDNN/pluginsRT/YoloRT.h | 2 +- include/tkDNN/utils.h | 27 +++++--- src/NetworkRT.cpp | 4 +- src/pluginsRT/YoloRT.cpp | 4 +- 39 files changed, 141 insertions(+), 126 deletions(-) create mode 100644 cmake/cuda_script.exe create mode 100644 cmake/cuda_script.exp create mode 100644 cmake/cuda_script.lib diff --git a/CMakeLists.txt b/CMakeLists.txt index c29e987..1242b61 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,6 @@ if(WIN32) set(CMAKE_CXX_FLAGS "/Od /FS /EHsc /MDd") set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --maxrregcount=32 -G -g) endif() -set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) endif(WIN32) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/tkDNN) @@ -82,7 +81,13 @@ endif() #------------------------------------------------------------------------------- # CUDA #------------------------------------------------------------------------------- +if(UNIX) set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS}" --compiler-options '-fPIC') +endif(UNIX) + +if(WIN32) +set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS}" --compiler-options) +endif(WIN32) find_package(CUDNN REQUIRED) diff --git a/cmake/cuda_script.exe b/cmake/cuda_script.exe new file mode 100644 index 0000000000000000000000000000000000000000..642a83adbaf163306e4359f336c0f3a896fd2e9a GIT binary patch literal 287744 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 k_calibs=std::vector()); - void preprocess(cv::Mat &frame, const int bi=0); - void postprocess(const int bi=0,const bool mAP=false); - void draw(std::vector& frames); + TKDNN_LIB_EXPORT_API void preprocess(cv::Mat &frame, const int bi=0); + TKDNN_LIB_EXPORT_API void postprocess(const int bi=0,const bool mAP=false); + TKDNN_LIB_EXPORT_API void draw(std::vector& frames); }; diff --git a/include/tkDNN/CenternetDetection.h b/include/tkDNN/CenternetDetection.h index 3c8cfbb..1a18e84 100644 --- a/include/tkDNN/CenternetDetection.h +++ b/include/tkDNN/CenternetDetection.h @@ -73,9 +73,9 @@ public: CenternetDetection() {}; ~CenternetDetection() {}; - bool init(const std::string& tensor_path, const int n_classes=80, const int n_batches=1, const float conf_thresh=0.3); - void preprocess(cv::Mat &frame, const int bi=0); - void postprocess(const int bi=0,const bool mAP=false); + TKDNN_LIB_EXPORT_API bool init(const std::string& tensor_path, const int n_classes=80, const int n_batches=1, const float conf_thresh=0.3); + TKDNN_LIB_EXPORT_API void preprocess(cv::Mat &frame, const int bi=0); + TKDNN_LIB_EXPORT_API void postprocess(const int bi=0,const bool mAP=false); }; diff --git a/include/tkDNN/CenternetDetection3D.h b/include/tkDNN/CenternetDetection3D.h index 9f2b214..b8fa42c 100644 --- a/include/tkDNN/CenternetDetection3D.h +++ b/include/tkDNN/CenternetDetection3D.h @@ -92,10 +92,10 @@ public: CenternetDetection3D() {}; ~CenternetDetection3D() {}; - bool init(const std::string& tensor_path, const int n_classes=3, const int n_batches=1, const float conf_thresh=0.3, const std::vector& k_calibs=std::vector()); - void preprocess(cv::Mat &frame, const int bi=0); - void postprocess(const int bi=0,const bool mAP=false); - void draw(std::vector& frames); + TKDNN_LIB_EXPORT_API bool init(const std::string& tensor_path, const int n_classes=3, const int n_batches=1, const float conf_thresh=0.3, const std::vector& k_calibs=std::vector()); + TKDNN_LIB_EXPORT_API void preprocess(cv::Mat &frame, const int bi=0); + TKDNN_LIB_EXPORT_API void postprocess(const int bi=0,const bool mAP=false); + TKDNN_LIB_EXPORT_API void draw(std::vector& frames); }; diff --git a/include/tkDNN/DarknetParser.h b/include/tkDNN/DarknetParser.h index c6d2472..af63e94 100644 --- a/include/tkDNN/DarknetParser.h +++ b/include/tkDNN/DarknetParser.h @@ -46,7 +46,7 @@ namespace tk { namespace dnn { void darknetAddLayer(tk::dnn::Network *net, darknetFields_t &f, std::string wgs_path, std::vector &netLayers, const std::vector& names); std::vector darknetReadNames(const std::string& names_file); - tk::dnn::Network* darknetParser(const std::string& cfg_file, const std::string& wgs_path, const std::string& names_file); + TKDNN_LIB_EXPORT_API tk::dnn::Network* darknetParser(const std::string& cfg_file, const std::string& wgs_path, const std::string& names_file); void loadYoloInfo(const std::string &cfg_file,int lineNo,std::vector &mask,std::vector &anchors,int &num,int &classes,float &nms_thresh,int &nms_kind,int &coords); void loadYoloInitInfo(int &channels,int &width,int &height,const std::string &cfg_file); std::vector noYolosLine(const std::string &cfg_file); diff --git a/include/tkDNN/Layer.h b/include/tkDNN/Layer.h index daa27e5..667a951 100644 --- a/include/tkDNN/Layer.h +++ b/include/tkDNN/Layer.h @@ -43,8 +43,8 @@ enum layerType_t { class Layer { public: - Layer(Network *net); - virtual ~Layer(); + TKDNN_LIB_EXPORT_API Layer(Network *net); + TKDNN_LIB_EXPORT_API virtual ~Layer(); virtual layerType_t getLayerType() = 0; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData) { @@ -208,8 +208,8 @@ public: class Dense : public LayerWgs { public: - Dense(Network *net, int out_ch, std::string fname_weights); - virtual ~Dense(); + TKDNN_LIB_EXPORT_API Dense(Network *net, int out_ch, std::string fname_weights); + TKDNN_LIB_EXPORT_API virtual ~Dense(); virtual layerType_t getLayerType() { return LAYER_DENSE; }; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); @@ -236,8 +236,8 @@ public: float ceiling; float slope; - Activation(Network *net, int act_mode, const float ceiling=0.0, const float slope=0.1); - virtual ~Activation(); + TKDNN_LIB_EXPORT_API Activation(Network *net, int act_mode, const float ceiling=0.0, const float slope=0.1); + TKDNN_LIB_EXPORT_API virtual ~Activation(); virtual layerType_t getLayerType() { if(act_mode == CUDNN_ACTIVATION_CLIPPED_RELU) return LAYER_ACTIVATION_CRELU; @@ -272,10 +272,10 @@ protected: class Conv2d : public LayerWgs { public: - Conv2d( Network *net, int out_ch, int kernelH, int kernelW, + TKDNN_LIB_EXPORT_API Conv2d( Network *net, int out_ch, int kernelH, int kernelW, int strideH, int strideW, int paddingH, int paddingW, std::string fname_weights, bool batchnorm = false, bool deConv = false, int groups = 1, bool additional_bias=false); - virtual ~Conv2d(); + TKDNN_LIB_EXPORT_API virtual ~Conv2d(); virtual layerType_t getLayerType() { return LAYER_CONV2D; }; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); @@ -325,8 +325,8 @@ protected: class LSTM : public Layer { public: - LSTM(Network *net, int hiddensize, bool returnSeq, std::string fname_weights); - virtual ~LSTM(); + TKDNN_LIB_EXPORT_API LSTM(Network *net, int hiddensize, bool returnSeq, std::string fname_weights); + TKDNN_LIB_EXPORT_API virtual ~LSTM(); virtual layerType_t getLayerType() { return LAYER_LSTM; }; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); @@ -376,7 +376,7 @@ public: virtual ~DeConv2d() {} virtual layerType_t getLayerType() { return LAYER_DECONV2D; }; - virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); + TKDNN_LIB_EXPORT_API virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); }; @@ -386,10 +386,10 @@ public: class DeformConv2d : public LayerWgs { public: - DeformConv2d( Network *net, int out_ch, int deformable_group, int kernelH, int kernelW, + TKDNN_LIB_EXPORT_API DeformConv2d( Network *net, int out_ch, int deformable_group, int kernelH, int kernelW, int strideH, int strideW, int paddingH, int paddingW, std::string d_fname_weights, std::string fname_weights, bool batchnorm); - virtual ~DeformConv2d(); + TKDNN_LIB_EXPORT_API virtual ~DeformConv2d(); virtual layerType_t getLayerType() { return LAYER_DEFORMCONV2D; }; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); @@ -420,8 +420,8 @@ protected: class Flatten : public Layer { public: - Flatten(Network *net); - virtual ~Flatten(); + TKDNN_LIB_EXPORT_API Flatten(Network *net); + TKDNN_LIB_EXPORT_API virtual ~Flatten(); virtual layerType_t getLayerType() { return LAYER_FLATTEN; }; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); @@ -435,8 +435,8 @@ public: class Reshape : public Layer { public: - Reshape(Network *net, dataDim_t new_dim); - virtual ~Reshape(); + TKDNN_LIB_EXPORT_API Reshape(Network *net, dataDim_t new_dim); + TKDNN_LIB_EXPORT_API virtual ~Reshape(); virtual layerType_t getLayerType() { return LAYER_RESHAPE; }; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); @@ -453,7 +453,7 @@ enum ResizeMode_t { NEAREST= 0, class Resize : public Layer { public: - Resize(Network *net, int scale_c, int scale_h, int scale_w, bool fixed=false, ResizeMode_t mode=NEAREST); + TKDNN_LIB_EXPORT_API Resize(Network *net, int scale_c, int scale_h, int scale_w, bool fixed=false, ResizeMode_t mode=NEAREST); virtual ~Resize(); virtual layerType_t getLayerType() { return LAYER_RESIZE; }; @@ -469,7 +469,7 @@ public: class MulAdd : public Layer { public: - MulAdd(Network *net, dnnType mul, dnnType add); + TKDNN_LIB_EXPORT_API MulAdd(Network *net, dnnType mul, dnnType add); virtual ~MulAdd(); virtual layerType_t getLayerType() { return LAYER_MULADD; }; @@ -505,11 +505,11 @@ public: bool size; tkdnnPoolingMode_t pool_mode; - Pooling(Network *net, int winH, int winW, + TKDNN_LIB_EXPORT_API Pooling(Network *net, int winH, int winW, int strideH, int strideW, int paddingH, int paddingW, tkdnnPoolingMode_t pool_mode); - virtual ~Pooling(); + TKDNN_LIB_EXPORT_API virtual ~Pooling(); virtual layerType_t getLayerType() { return LAYER_POOLING; }; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); @@ -534,7 +534,7 @@ typedef enum { class Padding : public Layer { public: - Padding(Network *net,int32_t pad_h,int32_t pad_w,tkdnnPaddingMode_t padding_mode,float constant = 0.0); + TKDNN_LIB_EXPORT_API Padding(Network *net,int32_t pad_h,int32_t pad_w,tkdnnPaddingMode_t padding_mode,float constant = 0.0); virtual ~Padding(); virtual layerType_t getLayerType(){return LAYER_PADDING ;}; virtual dnnType* infer(dataDim_t& dim,dnnType* srcData); @@ -553,8 +553,8 @@ public: class Softmax : public Layer { public: - Softmax(Network *net, const tk::dnn::dataDim_t* dim=nullptr, const cudnnSoftmaxMode_t mode=CUDNN_SOFTMAX_MODE_CHANNEL); - virtual ~Softmax(); + TKDNN_LIB_EXPORT_API Softmax(Network *net, const tk::dnn::dataDim_t* dim=nullptr, const cudnnSoftmaxMode_t mode=CUDNN_SOFTMAX_MODE_CHANNEL); + TKDNN_LIB_EXPORT_API virtual ~Softmax(); virtual layerType_t getLayerType() { return LAYER_SOFTMAX; }; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); @@ -569,8 +569,8 @@ public: class Route : public Layer { public: - Route(Network *net, Layer **layers, int layers_n, int groups = 1, int group_id = 0); - virtual ~Route(); + TKDNN_LIB_EXPORT_API Route(Network *net, Layer **layers, int layers_n, int groups = 1, int group_id = 0); + TKDNN_LIB_EXPORT_API virtual ~Route(); virtual layerType_t getLayerType() { return LAYER_ROUTE; }; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); @@ -607,8 +607,8 @@ public: class Shortcut : public Layer { public: - Shortcut(Network *net, Layer *backLayer, bool mul=false); - virtual ~Shortcut(); + TKDNN_LIB_EXPORT_API Shortcut(Network *net, Layer *backLayer, bool mul=false); + TKDNN_LIB_EXPORT_API virtual ~Shortcut(); virtual layerType_t getLayerType() { return LAYER_SHORTCUT; }; virtual dnnType* infer(dataDim_t &dim, dnnType* srcData); @@ -627,7 +627,7 @@ public: class Upsample : public Layer { public: - Upsample(Network *net, int stride); + TKDNN_LIB_EXPORT_API Upsample(Network *net, int stride); virtual ~Upsample(); virtual layerType_t getLayerType() { return LAYER_UPSAMPLE; }; diff --git a/include/tkDNN/MobilenetDetection.h b/include/tkDNN/MobilenetDetection.h index 58512d5..40a6ec6 100644 --- a/include/tkDNN/MobilenetDetection.h +++ b/include/tkDNN/MobilenetDetection.h @@ -65,9 +65,9 @@ public: MobilenetDetection() {}; ~MobilenetDetection() {}; - bool init(const std::string& tensor_path,const int n_classes, const int n_batches=1, const float conf_thresh=0.3); - void preprocess(cv::Mat &frame, const int bi=0); - void postprocess(const int bi=0,const bool mAP=false); + TKDNN_LIB_EXPORT_API bool init(const std::string& tensor_path,const int n_classes, const int n_batches=1, const float conf_thresh=0.3); + TKDNN_LIB_EXPORT_API void preprocess(cv::Mat &frame, const int bi=0); + TKDNN_LIB_EXPORT_API void postprocess(const int bi=0,const bool mAP=false); }; diff --git a/include/tkDNN/Network.h b/include/tkDNN/Network.h index 6edf248..a78036d 100644 --- a/include/tkDNN/Network.h +++ b/include/tkDNN/Network.h @@ -38,18 +38,18 @@ const int MAX_LAYERS = 512; class Network { public: - Network(dataDim_t input_dim); - virtual ~Network(); - void releaseLayers(); + TKDNN_LIB_EXPORT_API Network(dataDim_t input_dim); + TKDNN_LIB_EXPORT_API virtual ~Network(); + TKDNN_LIB_EXPORT_API void releaseLayers(); /** Do inference for every added layer */ - dnnType* infer(dataDim_t &dim, dnnType* data); + TKDNN_LIB_EXPORT_API dnnType* infer(dataDim_t &dim, dnnType* data); bool addLayer(Layer *l); - void print(); - const char *getNetworkRTName(const char *network_name); + TKDNN_LIB_EXPORT_API void print(); + TKDNN_LIB_EXPORT_API const char *getNetworkRTName(const char *network_name); void adjustFeatureMapSizeWithShortcuts(); cudnnDataType_t dataType; @@ -61,7 +61,7 @@ public: int num_layers; //current number of layers dataDim_t input_dim; - dataDim_t getOutputDim(); + TKDNN_LIB_EXPORT_API dataDim_t getOutputDim(); bool fp16, dla, int8; int maxBatchSize; diff --git a/include/tkDNN/NetworkRT.h b/include/tkDNN/NetworkRT.h index a422134..5a2e67a 100644 --- a/include/tkDNN/NetworkRT.h +++ b/include/tkDNN/NetworkRT.h @@ -55,8 +55,8 @@ public: std::vector yolo_plugins; // yolo layers in network - NetworkRT(Network *net, const char *name); - virtual ~NetworkRT(); + TKDNN_LIB_EXPORT_API NetworkRT(Network *net, const char *name); + TKDNN_LIB_EXPORT_API virtual ~NetworkRT(); int getMaxBatchSize() { if(engineRT != nullptr) @@ -75,7 +75,7 @@ public: /** Do inference */ - dnnType* infer(dataDim_t &dim, dnnType* data); + TKDNN_LIB_EXPORT_API dnnType* infer(dataDim_t &dim, dnnType* data); void enqueue(int batchSize = 1); nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, Layer *l); @@ -104,7 +104,7 @@ public: #endif bool deserialize(const char *filename); - void destroy(); + TKDNN_LIB_EXPORT_API void destroy(); diff --git a/include/tkDNN/NetworkViz.h b/include/tkDNN/NetworkViz.h index ffdf361..0a85b11 100644 --- a/include/tkDNN/NetworkViz.h +++ b/include/tkDNN/NetworkViz.h @@ -6,7 +6,7 @@ namespace tk { namespace dnn { cv::Mat vizFloat2colorMap(cv::Mat map, double min=0, double max=0, int classes=19); -cv::Mat vizData2Mat(dnnType *dataInput, tk::dnn::dataDim_t dim, int img_h, int img_w, double min=0, double max=0, int classes=0); -cv::Mat vizLayer2Mat(tk::dnn::Network *net, int layer, int imgdim = 1000); +TKDNN_LIB_EXPORT_API cv::Mat vizData2Mat(dnnType *dataInput, tk::dnn::dataDim_t dim, int img_h, int img_w, double min=0, double max=0, int classes=0); +TKDNN_LIB_EXPORT_API cv::Mat vizLayer2Mat(tk::dnn::Network *net, int layer, int imgdim = 1000); }} diff --git a/include/tkDNN/Yolo3Detection.h b/include/tkDNN/Yolo3Detection.h index b49915a..47f9c1d 100644 --- a/include/tkDNN/Yolo3Detection.h +++ b/include/tkDNN/Yolo3Detection.h @@ -24,9 +24,9 @@ public: Yolo3Detection() {}; ~Yolo3Detection() {}; - bool init(const std::string& tensor_path, const int n_classes=80, const int n_batches=1, const float conf_thresh=0.3); - void preprocess(cv::Mat &frame, const int bi=0); - void postprocess(const int bi=0,const bool mAP=false); + TKDNN_LIB_EXPORT_API bool init(const std::string& tensor_path, const int n_classes=80, const int n_batches=1, const float conf_thresh=0.3); + TKDNN_LIB_EXPORT_API void preprocess(cv::Mat &frame, const int bi=0); + TKDNN_LIB_EXPORT_API void postprocess(const int bi=0,const bool mAP=false); }; diff --git a/include/tkDNN/demo_utils.h b/include/tkDNN/demo_utils.h index c39e704..6794c95 100644 --- a/include/tkDNN/demo_utils.h +++ b/include/tkDNN/demo_utils.h @@ -6,6 +6,7 @@ #include #include #include +#include "utils.h" #ifdef __linux__ #include @@ -18,6 +19,6 @@ #include -void readCalibrationMatrix(const std::string& path, cv::Mat& calib_mat); +TKDNN_LIB_EXPORT_API void readCalibrationMatrix(const std::string& path, cv::Mat& calib_mat); #endif //DEMO_UTILS_H \ No newline at end of file diff --git a/include/tkDNN/evaluation.h b/include/tkDNN/evaluation.h index 4b4cea7..dca4b7d 100644 --- a/include/tkDNN/evaluation.h +++ b/include/tkDNN/evaluation.h @@ -33,7 +33,7 @@ struct PR void print(); }; -void readmAPParams( const char* config_filename, int& classes, int& map_points, +TKDNN_LIB_EXPORT_API void readmAPParams( const char* config_filename, int& classes, int& map_points, int& map_levels, float& map_step, float& IoU_thresh, float& conf_thresh, bool& verbose); @@ -85,7 +85,7 @@ double computeMap( std::vector &images,const int classes, * @return mAP IoU_tresh:IoU_tresh+map_step*map_levels (e.g. mAP 0.5:0.95 when * map_step=0.05 and map_levels=10) */ -double computeMapNIoULevels(std::vector &images,const int classes, +TKDNN_LIB_EXPORT_API double computeMapNIoULevels(std::vector &images,const int classes, const float i_IoU_thresh=0.5, const float conf_thresh=0.3, const int map_points=101, const float map_step=0.05, const int map_levels=10, const bool verbose=false, @@ -105,7 +105,7 @@ double computeMapNIoULevels(std::vector &images,const int classes, * are written on file * @param net name of the considered neural network */ -void computeTPFPFN( std::vector &images,const int classes, +TKDNN_LIB_EXPORT_API void computeTPFPFN( std::vector &images,const int classes, const float IoU_thresh=0.5, const float conf_thresh=0.3, bool verbose=false, const bool write_on_file=false, std::string net=""); diff --git a/include/tkDNN/kernels.h b/include/tkDNN/kernels.h index 4d5474b..998eeb9 100644 --- a/include/tkDNN/kernels.h +++ b/include/tkDNN/kernels.h @@ -3,37 +3,37 @@ #include "utils.h" -void activationELUForward(dnnType *srcData, dnnType *dstData, int size, cudaStream_t stream = cudaStream_t(0)); -void activationLEAKYForward(dnnType *srcData, dnnType *dstData, int size, float slope, cudaStream_t stream = cudaStream_t(0)); -void activationReLUCeilingForward(dnnType *srcData, dnnType *dstData, int size, const float ceiling, cudaStream_t stream = cudaStream_t(0)); -void activationLOGISTICForward(dnnType *srcData, dnnType *dstData, int size, cudaStream_t stream = cudaStream_t(0)); -void activationSIGMOIDForward(dnnType *srcData, dnnType *dstData, int size, cudaStream_t stream = cudaStream_t(0)); -void activationMishForward(dnnType* srcData, dnnType* dstData, int size, cudaStream_t stream= cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void activationELUForward(dnnType *srcData, dnnType *dstData, int size, cudaStream_t stream = cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void activationLEAKYForward(dnnType *srcData, dnnType *dstData, int size, float slope, cudaStream_t stream = cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void activationReLUCeilingForward(dnnType *srcData, dnnType *dstData, int size, const float ceiling, cudaStream_t stream = cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void activationLOGISTICForward(dnnType *srcData, dnnType *dstData, int size, cudaStream_t stream = cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void activationSIGMOIDForward(dnnType *srcData, dnnType *dstData, int size, cudaStream_t stream = cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void activationMishForward(dnnType* srcData, dnnType* dstData, int size, cudaStream_t stream= cudaStream_t(0)); -void fill(dnnType *data, int size, dnnType val, cudaStream_t stream = cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void fill(dnnType *data, int size, dnnType val, cudaStream_t stream = cudaStream_t(0)); -void resizeForward(dnnType *srcData, dnnType *dstData, int n, int i_c, int i_h, int i_w, +TKDNN_LIB_EXPORT_API void resizeForward(dnnType *srcData, dnnType *dstData, int n, int i_c, int i_h, int i_w, int o_c, int o_h, int o_w, cudaStream_t stream = cudaStream_t(0)); -void reorgForward(dnnType *srcData, dnnType *dstData, +TKDNN_LIB_EXPORT_API void reorgForward(dnnType *srcData, dnnType *dstData, int n, int c, int h, int w, int stride, cudaStream_t stream = cudaStream_t(0)); -void MaxPoolingForward(dnnType *srcData, dnnType *dstData, int n, int c, int h, int w, int stride_x, int stride_y, int size, int padding, cudaStream_t stream = cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void MaxPoolingForward(dnnType *srcData, dnnType *dstData, int n, int c, int h, int w, int stride_x, int stride_y, int size, int padding, cudaStream_t stream = cudaStream_t(0)); -void softmaxForward(float *input, int n, int batch, int batch_offset, +TKDNN_LIB_EXPORT_API void softmaxForward(float *input, int n, int batch, int batch_offset, int groups, int group_offset, int stride, float temp, float *output, cudaStream_t stream = cudaStream_t(0)); -void shortcutForward(dnnType *srcData, dnnType *dstData, int n1, int c1, int h1, int w1, int s1, +TKDNN_LIB_EXPORT_API void shortcutForward(dnnType *srcData, dnnType *dstData, int n1, int c1, int h1, int w1, int s1, int n2, int c2, int h2, int w2, int s2, bool mul, cudaStream_t stream = cudaStream_t(0)); -void upsampleForward(dnnType *srcData, dnnType *dstData, +TKDNN_LIB_EXPORT_API void upsampleForward(dnnType *srcData, dnnType *dstData, int n, int c, int h, int w, int s, int forward, float scale, cudaStream_t stream = cudaStream_t(0)); -void float2half(float *srcData, __half *dstData, int size, const cudaStream_t stream = cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void float2half(float *srcData, __half *dstData, int size, const cudaStream_t stream = cudaStream_t(0)); -void dcnV2CudaForward(cublasStatus_t stat, cublasHandle_t handle, +TKDNN_LIB_EXPORT_API void dcnV2CudaForward(cublasStatus_t stat, cublasHandle_t handle, float *input, float *weight, float *bias, float *ones, float *offset, float *mask, @@ -47,11 +47,11 @@ void dcnV2CudaForward(cublasStatus_t stat, cublasHandle_t handle, const int out_n, const int out_c, const int out_h, const int out_w, const int dst_dim, cudaStream_t stream = cudaStream_t(0)); -void scalAdd(dnnType* dstData, int size, float alpha, float beta, int inc, cudaStream_t stream = cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void scalAdd(dnnType* dstData, int size, float alpha, float beta, int inc, cudaStream_t stream = cudaStream_t(0)); -void reflection_pad2d_out_forward(int32_t pad_h,int32_t pad_w,float *srcData,float *dstData,int32_t input_h,int32_t input_w,int32_t plane_dim,int32_t n_batch,cudaStream_t cudaStream = cudaStream_t(0)); +TKDNN_LIB_EXPORT_API void reflection_pad2d_out_forward(int32_t pad_h,int32_t pad_w,float *srcData,float *dstData,int32_t input_h,int32_t input_w,int32_t plane_dim,int32_t n_batch,cudaStream_t cudaStream = cudaStream_t(0)); -void constant_pad2d_forward(dnnType *srcData,dnnType *dstData,int32_t input_h,int32_t input_w,int32_t output_h, +TKDNN_LIB_EXPORT_API void constant_pad2d_forward(dnnType *srcData,dnnType *dstData,int32_t input_h,int32_t input_w,int32_t output_h, int32_t output_w,int32_t c,int32_t n,int32_t padT,int32_t padL,dnnType constant,cudaStream_t cudaStream = cudaStream_t(0)); diff --git a/include/tkDNN/kernelsThrust.h b/include/tkDNN/kernelsThrust.h index ab2fd90..74200b9 100644 --- a/include/tkDNN/kernelsThrust.h +++ b/include/tkDNN/kernelsThrust.h @@ -27,20 +27,20 @@ struct threshold : public thrust::binary_function } }; -void sort(dnnType *src_begin, dnnType *src_end, int *idsrc); -void topk(dnnType *src_begin, int *idsrc, int K, float *topk_scores, +TKDNN_LIB_EXPORT_API void sort(dnnType *src_begin, dnnType *src_end, int *idsrc); +TKDNN_LIB_EXPORT_API void topk(dnnType *src_begin, int *idsrc, int K, float *topk_scores, int *topk_inds, float *topk_ys, float *topk_xs); // void sortAndTopKonDevice(dnnType *src_begin, int *idsrc, float *topk_scores, int *topk_inds, float *topk_ys, float *topk_xs, const int size, const int K, const int n_classes); -void normalize(float *bgr, const int ch, const int h, const int w, const float *mean, const float *stddev); -void transformDep(float *src_begin, float *src_end, float *dst_begin, float *dst_end); -void subtractWithThreshold(dnnType *src_begin, dnnType *src_end, dnnType *src2_begin, dnnType *src_out, struct threshold op); -void topKxyclasses(int *ids_begin, int *ids_end, const int K, const int size, const int wh, int *clses, int *xs, int *ys); -void topKxyAddOffset(int * ids_begin, const int K, const int size, int *intxs_begin, int *intys_begin, +TKDNN_LIB_EXPORT_API void normalize(float *bgr, const int ch, const int h, const int w, const float *mean, const float *stddev); +TKDNN_LIB_EXPORT_API void transformDep(float *src_begin, float *src_end, float *dst_begin, float *dst_end); +TKDNN_LIB_EXPORT_API void subtractWithThreshold(dnnType *src_begin, dnnType *src_end, dnnType *src2_begin, dnnType *src_out, struct threshold op); +TKDNN_LIB_EXPORT_API void topKxyclasses(int *ids_begin, int *ids_end, const int K, const int size, const int wh, int *clses, int *xs, int *ys); +TKDNN_LIB_EXPORT_API void topKxyAddOffset(int * ids_begin, const int K, const int size, int *intxs_begin, int *intys_begin, float *xs_begin, float *ys_begin, dnnType *src_begin, float *src_out, int *ids_out); -void bboxes(int * ids_begin, const int K, const int size, float *xs_begin, float *ys_begin, +TKDNN_LIB_EXPORT_API void bboxes(int * ids_begin, const int K, const int size, float *xs_begin, float *ys_begin, dnnType *src_begin, float *bbx0, float *bbx1, float *bby0, float *bby1, float *src_out, int *ids_out); -void getRecordsFromTopKId(int * ids_begin, const int K, const int ch, const int size, dnnType *src_begin, float *src_out, int *ids_out); +TKDNN_LIB_EXPORT_API void getRecordsFromTopKId(int * ids_begin, const int K, const int ch, const int size, dnnType *src_begin, float *src_out, int *ids_out); -void maxElem(dnnType *src_begin, dnnType *dst_begin, const int c, const int h, const int w); +TKDNN_LIB_EXPORT_API void maxElem(dnnType *src_begin, dnnType *dst_begin, const int c, const int h, const int w); #endif //KERNELSTHRUST_H \ No newline at end of file diff --git a/include/tkDNN/pluginsRT/ActivationLeakyRT.h b/include/tkDNN/pluginsRT/ActivationLeakyRT.h index 1d98a59..d5589ae 100644 --- a/include/tkDNN/pluginsRT/ActivationLeakyRT.h +++ b/include/tkDNN/pluginsRT/ActivationLeakyRT.h @@ -61,7 +61,7 @@ namespace nvinfer1 { class ActivationLeakyRTPluginCreator : public IPluginCreator { public: - ActivationLeakyRTPluginCreator(); + TKDNN_LIB_EXPORT_API ActivationLeakyRTPluginCreator(); void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override; diff --git a/include/tkDNN/pluginsRT/ActivationLogisticRT.h b/include/tkDNN/pluginsRT/ActivationLogisticRT.h index d972752..da2f853 100644 --- a/include/tkDNN/pluginsRT/ActivationLogisticRT.h +++ b/include/tkDNN/pluginsRT/ActivationLogisticRT.h @@ -62,7 +62,7 @@ namespace nvinfer1 { class ActivationLogisticRTPluginCreator : public IPluginCreator { public: - ActivationLogisticRTPluginCreator() ; + TKDNN_LIB_EXPORT_API ActivationLogisticRTPluginCreator() ; void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/ActivationMishRT.h b/include/tkDNN/pluginsRT/ActivationMishRT.h index 5b966cd..14f10fa 100644 --- a/include/tkDNN/pluginsRT/ActivationMishRT.h +++ b/include/tkDNN/pluginsRT/ActivationMishRT.h @@ -57,7 +57,7 @@ namespace nvinfer1 { class ActivationMishRTPluginCreator : public IPluginCreator { public: - ActivationMishRTPluginCreator() ; + TKDNN_LIB_EXPORT_API ActivationMishRTPluginCreator() ; void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; const char *getPluginNamespace() const NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/ActivationReLUCeilingRT.h b/include/tkDNN/pluginsRT/ActivationReLUCeilingRT.h index 1830945..a71944f 100644 --- a/include/tkDNN/pluginsRT/ActivationReLUCeilingRT.h +++ b/include/tkDNN/pluginsRT/ActivationReLUCeilingRT.h @@ -56,7 +56,7 @@ namespace nvinfer1 { class ActivationReLUCeilingPluginCreator : public IPluginCreator { public: - ActivationReLUCeilingPluginCreator() ; + TKDNN_LIB_EXPORT_API ActivationReLUCeilingPluginCreator() ; void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/ConstantPaddingRT.h b/include/tkDNN/pluginsRT/ConstantPaddingRT.h index 15f4c0d..3926141 100644 --- a/include/tkDNN/pluginsRT/ConstantPaddingRT.h +++ b/include/tkDNN/pluginsRT/ConstantPaddingRT.h @@ -79,7 +79,7 @@ namespace nvinfer1{ class ConstantPaddingRTPluginCreator : public IPluginCreator { public: - ConstantPaddingRTPluginCreator(); + TKDNN_LIB_EXPORT_API ConstantPaddingRTPluginCreator(); void setPluginNamespace(const char* pluginNamespace) NOEXCEPT override; diff --git a/include/tkDNN/pluginsRT/DeformableConvRT.h b/include/tkDNN/pluginsRT/DeformableConvRT.h index 9170e15..2949af2 100644 --- a/include/tkDNN/pluginsRT/DeformableConvRT.h +++ b/include/tkDNN/pluginsRT/DeformableConvRT.h @@ -112,7 +112,7 @@ namespace nvinfer1 { class DeformableConvRTPluginCreator : public IPluginCreator { public: - DeformableConvRTPluginCreator(); + TKDNN_LIB_EXPORT_API DeformableConvRTPluginCreator(); void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/FlattenConcatRT.h b/include/tkDNN/pluginsRT/FlattenConcatRT.h index f7ec495..ecb8215 100644 --- a/include/tkDNN/pluginsRT/FlattenConcatRT.h +++ b/include/tkDNN/pluginsRT/FlattenConcatRT.h @@ -73,7 +73,7 @@ namespace nvinfer1 { class FlattenConcatRTPluginCreator : public IPluginCreator { public: - FlattenConcatRTPluginCreator() ; + TKDNN_LIB_EXPORT_API FlattenConcatRTPluginCreator() ; void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/MaxPoolingFixedSizeRT.h b/include/tkDNN/pluginsRT/MaxPoolingFixedSizeRT.h index 95e15f4..0c88f77 100644 --- a/include/tkDNN/pluginsRT/MaxPoolingFixedSizeRT.h +++ b/include/tkDNN/pluginsRT/MaxPoolingFixedSizeRT.h @@ -78,7 +78,7 @@ namespace nvinfer1 { class MaxPoolFixedSizeRTPluginCreator : public IPluginCreator { public: - MaxPoolFixedSizeRTPluginCreator() ; + TKDNN_LIB_EXPORT_API MaxPoolFixedSizeRTPluginCreator() ; void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/ReflectionPadding.h b/include/tkDNN/pluginsRT/ReflectionPadding.h index 7b13710..0ff0e0c 100644 --- a/include/tkDNN/pluginsRT/ReflectionPadding.h +++ b/include/tkDNN/pluginsRT/ReflectionPadding.h @@ -73,7 +73,7 @@ namespace nvinfer1{ class ReflectionPaddingRTPluginCreator : public IPluginCreator { public: - ReflectionPaddingRTPluginCreator(); + TKDNN_LIB_EXPORT_API ReflectionPaddingRTPluginCreator(); void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/RegionRT.h b/include/tkDNN/pluginsRT/RegionRT.h index 7f7157c..4b7e68a 100644 --- a/include/tkDNN/pluginsRT/RegionRT.h +++ b/include/tkDNN/pluginsRT/RegionRT.h @@ -82,7 +82,7 @@ namespace nvinfer1 { class RegionRTPluginCreator : public IPluginCreator { public: - RegionRTPluginCreator(); + TKDNN_LIB_EXPORT_API RegionRTPluginCreator(); void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/ReorgRT.h b/include/tkDNN/pluginsRT/ReorgRT.h index be163a5..df52922 100644 --- a/include/tkDNN/pluginsRT/ReorgRT.h +++ b/include/tkDNN/pluginsRT/ReorgRT.h @@ -71,7 +71,7 @@ namespace nvinfer1 { class ReorgRTPluginCreator : public IPluginCreator { public: - ReorgRTPluginCreator(); + TKDNN_LIB_EXPORT_API ReorgRTPluginCreator(); void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override; diff --git a/include/tkDNN/pluginsRT/ReshapeRT.h b/include/tkDNN/pluginsRT/ReshapeRT.h index 65d577d..b473567 100644 --- a/include/tkDNN/pluginsRT/ReshapeRT.h +++ b/include/tkDNN/pluginsRT/ReshapeRT.h @@ -74,7 +74,7 @@ namespace nvinfer1 { class ReshapeRTPluginCreator : public IPluginCreator { public: - ReshapeRTPluginCreator() ; + TKDNN_LIB_EXPORT_API ReshapeRTPluginCreator() ; void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/ResizeLayerRT.h b/include/tkDNN/pluginsRT/ResizeLayerRT.h index 750057e..1cdccef 100644 --- a/include/tkDNN/pluginsRT/ResizeLayerRT.h +++ b/include/tkDNN/pluginsRT/ResizeLayerRT.h @@ -73,7 +73,7 @@ namespace nvinfer1 { class ResizeLayerRTPluginCreator : public IPluginCreator { public: - ResizeLayerRTPluginCreator() ; + TKDNN_LIB_EXPORT_API ResizeLayerRTPluginCreator() ; void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/RouteRT.h b/include/tkDNN/pluginsRT/RouteRT.h index 499b9da..e15390d 100644 --- a/include/tkDNN/pluginsRT/RouteRT.h +++ b/include/tkDNN/pluginsRT/RouteRT.h @@ -11,7 +11,7 @@ namespace nvinfer1 { */ public: - RouteRT(int groups, int group_id) ; + TKDNN_LIB_EXPORT_API RouteRT(int groups, int group_id) ; ~RouteRT() ; @@ -64,7 +64,7 @@ namespace nvinfer1 { class RouteRTPluginCreator : public IPluginCreator { public: - RouteRTPluginCreator() ; + TKDNN_LIB_EXPORT_API RouteRTPluginCreator() ; void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override ; diff --git a/include/tkDNN/pluginsRT/ShortcutRT.h b/include/tkDNN/pluginsRT/ShortcutRT.h index 0c01b9d..2f1242d 100644 --- a/include/tkDNN/pluginsRT/ShortcutRT.h +++ b/include/tkDNN/pluginsRT/ShortcutRT.h @@ -80,7 +80,7 @@ namespace nvinfer1 { class ShortcutRTPluginCreator : public IPluginCreator { public: - ShortcutRTPluginCreator(); + TKDNN_LIB_EXPORT_API ShortcutRTPluginCreator(); void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override; diff --git a/include/tkDNN/pluginsRT/UpsampleRT.h b/include/tkDNN/pluginsRT/UpsampleRT.h index 4379ee7..3fca1d0 100644 --- a/include/tkDNN/pluginsRT/UpsampleRT.h +++ b/include/tkDNN/pluginsRT/UpsampleRT.h @@ -75,7 +75,7 @@ namespace nvinfer1 { class UpsampleRTPluginCreator : public IPluginCreator { public: - UpsampleRTPluginCreator(); + TKDNN_LIB_EXPORT_API UpsampleRTPluginCreator(); void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override; diff --git a/include/tkDNN/pluginsRT/YoloRT.h b/include/tkDNN/pluginsRT/YoloRT.h index f0e5733..f2cf826 100644 --- a/include/tkDNN/pluginsRT/YoloRT.h +++ b/include/tkDNN/pluginsRT/YoloRT.h @@ -98,7 +98,7 @@ namespace nvinfer1 { class YoloRTPluginCreator : public IPluginCreator { public: - YoloRTPluginCreator(); + TKDNN_LIB_EXPORT_API YoloRTPluginCreator(); void setPluginNamespace(const char *pluginNamespace) NOEXCEPT override; diff --git a/include/tkDNN/utils.h b/include/tkDNN/utils.h index 607697a..58a0bc6 100644 --- a/include/tkDNN/utils.h +++ b/include/tkDNN/utils.h @@ -35,6 +35,15 @@ #endif #endif +#ifdef _WIN32 +#define TKDNN_LIB_EXPORT_API __declspec(dllexport) +#define TKDNN_LIB_IMPORT_API __declspec(dllimport) +#elif __linux__ +#define TKDNN_LIB_EXPORT_API __attribute__((visibility("default"))) +#define TKDNN_LIB_IMPORT_API +#endif + + #define dnnType float @@ -143,23 +152,23 @@ typedef enum { 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); -void readBinaryFile(std::string fname, int size, dnnType** data_h, dnnType** data_d, int seek = 0); -int checkResult(int size, dnnType *data_d, dnnType *correct_d, bool device = true, int limit = 10, bool verbose=true); -void printDeviceVector(int size, dnnType* vec_d, bool device = true); +TKDNN_LIB_EXPORT_API void printCenteredTitle(const char *title, char fill, int dim = 30); +TKDNN_LIB_EXPORT_API bool fileExist(const char *fname); +TKDNN_LIB_EXPORT_API void downloadWeightsifDoNotExist(const std::string& input_bin, const std::string& test_folder, const std::string& weights_url); +TKDNN_LIB_EXPORT_API void readBinaryFile(std::string fname, int size, dnnType** data_h, dnnType** data_d, int seek = 0); +TKDNN_LIB_EXPORT_API int checkResult(int size, dnnType *data_d, dnnType *correct_d, bool device = true, int limit = 10, bool verbose=true); +TKDNN_LIB_EXPORT_API void printDeviceVector(int size, dnnType* vec_d, bool device = true); float getColor(const int c, const int x, const int max); void resize(int size, dnnType **data); -void matrixTranspose(cublasHandle_t handle, dnnType* srcData, dnnType* dstData, int rows, int cols); +TKDNN_LIB_EXPORT_API void matrixTranspose(cublasHandle_t handle, dnnType* srcData, dnnType* dstData, int rows, int cols); void matrixMulAdd( cublasHandle_t handle, dnnType* srcData, dnnType* dstData, dnnType* add_vector, int dim, dnnType mul); -void getMemUsage(double& vm_usage_kb, double& resident_set_kb); +TKDNN_LIB_EXPORT_API void getMemUsage(double& vm_usage_kb, double& resident_set_kb); void printCudaMemUsage(); -void removePathAndExtension(const std::string &full_string, std::string &name); +TKDNN_LIB_EXPORT_API void removePathAndExtension(const std::string &full_string, std::string &name); static inline bool isCudaPointer(void *data) { cudaPointerAttributes attr; return cudaPointerGetAttributes(&attr, data) == 0; diff --git a/src/NetworkRT.cpp b/src/NetworkRT.cpp index 26489bf..2f01626 100644 --- a/src/NetworkRT.cpp +++ b/src/NetworkRT.cpp @@ -15,8 +15,8 @@ using namespace nvinfer1; -extern std::mutex gYoloPlugins_mutex; -extern std::vector gYoloPlugins; +TKDNN_LIB_IMPORT_API extern std::mutex gYoloPlugins_mutex; +TKDNN_LIB_IMPORT_API extern std::vector gYoloPlugins; // Logger for info/warning/errors class Logger : public ILogger { diff --git a/src/pluginsRT/YoloRT.cpp b/src/pluginsRT/YoloRT.cpp index 590acb3..0c36827 100644 --- a/src/pluginsRT/YoloRT.cpp +++ b/src/pluginsRT/YoloRT.cpp @@ -5,8 +5,8 @@ using namespace nvinfer1; // used to retrive Yolo plugin during network deserialization -std::mutex gYoloPlugins_mutex; -std::vector gYoloPlugins; +TKDNN_LIB_EXPORT_API std::mutex gYoloPlugins_mutex; +TKDNN_LIB_EXPORT_API std::vector gYoloPlugins; std::vector YoloRTPluginCreator::mPluginAttributes; PluginFieldCollection YoloRTPluginCreator::mFC{};