14 #ifndef DS3D_COMMON_HELPER_CUDA_UTILS_H
15 #define DS3D_COMMON_HELPER_CUDA_UTILS_H
21 #include <cuda_runtime_api.h>
31 explicit CudaStream(uint flag = cudaStreamDefault,
int gpuId = 0,
int priority = 0)
33 cudaSetDevice(_gpuId);
35 cudaStreamCreateWithPriority(&_stream, flag, priority), ,
"cudaStreamCreate failed");
39 if (_stream !=
nullptr) {
41 cudaSetDevice(_gpuId), ,
"cudaStreamDestroy failed to set gpu-id:%d", _gpuId);
52 "cudaStreamSynchronize failed to set gpu-id:%d", _gpuId);
54 cudaStreamSynchronize(_stream),
return ErrCode::kCuda,
"cudaStreamSynchronize failed");
57 int gpuId()
const {
return _gpuId; }
64 static std::unique_ptr<GpuCudaMemBuf>
CreateBuf(
size_t size,
int gpuId)
66 auto mem = std::make_unique<GpuCudaMemBuf>();
69 cudaSetDevice(gpuId),
return nullptr,
70 "cudaSetDevice: %d failed when allocate cuda memory", gpuId);
74 cudaMalloc(&
data, size),
return nullptr,
"cudaMalloc size: %d failed", (
int)size);