#include #include "cuda_kernels.h" #include "define.hpp" #include "utiltools.hpp" using namespace std; class GpuRgbMemory{ public: GpuRgbMemory(int _channel, int _width, int _height, string _id, string _gpuid, bool _isused){ channel = _channel; width = _width; height = _height; size = channel * width * height; isused = _isused; id = _id; gpuid = _gpuid; timestamp = UtilTools::get_cur_time_ms(); cudaSetDevice(atoi(gpuid.c_str())); CHECK_CUDA(cudaMalloc((void **)&pHwRgb, size * sizeof(unsigned char))); } ~GpuRgbMemory(){ if (pHwRgb) { cudaSetDevice(atoi(gpuid.c_str())); CHECK_CUDA(cudaFree(pHwRgb)); pHwRgb = nullptr; } } int getSize() { return size; } bool isIsused() { return isused; } void setIsused(bool _isused) { isused = _isused; // 更新时间戳 timestamp = UtilTools::get_cur_time_ms(); } string getId() { return id; } string getGpuId() { return gpuid; } unsigned char* getMem(){ return pHwRgb; } long long getTimesstamp(){ return timestamp; } int getWidth(){ return width; } int getHeight(){ return height; } int getChannel(){ return channel; } private: int size; bool isused; string id; string gpuid; unsigned char * pHwRgb{nullptr}; long long timestamp; int width{0}; int height{0}; int channel{3}; };