GpuRgbMemory.hpp 1.58 KB
#include<string>

#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};
};