18 #ifndef DS3D_COMMON_HELPER_CUDA_UTILS_H
19 #define DS3D_COMMON_HELPER_CUDA_UTILS_H
21 #include "ds3d/common/common.h"
22 #include "ds3d/common/helper/memdata.h"
25 #include <cuda_runtime_api.h>
35 explicit CudaStream(uint flag = cudaStreamDefault,
int gpuId = 0,
int priority = 0)
37 cudaSetDevice(_gpuId);
39 cudaStreamCreateWithPriority(&_stream, flag, priority), ,
"cudaStreamCreate failed");
43 if (_stream !=
nullptr) {
45 cudaSetDevice(_gpuId), ,
"cudaStreamDestroy failed to set gpu-id:%d", _gpuId);
56 "cudaStreamSynchronize failed to set gpu-id:%d", _gpuId);
58 cudaStreamSynchronize(_stream),
return ErrCode::kCuda,
"cudaStreamSynchronize failed");
61 int gpuId()
const {
return _gpuId; }
68 static std::unique_ptr<GpuCudaMemBuf>
CreateBuf(
size_t size,
int gpuId)
70 auto mem = std::make_unique<GpuCudaMemBuf>();
73 cudaSetDevice(gpuId),
return nullptr,
74 "cudaSetDevice: %d failed when allocate cuda memory", gpuId);
78 cudaMalloc(&
data, size),
return nullptr,
"cudaMalloc size: %d failed", (
int)size);