gtsam_points
Loading...
Searching...
No Matches
cuda_stream.hpp
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2021 Kenji Koide (k.koide@aist.go.jp)
3#pragma once
4
5#include <memory>
6#include <vector>
7
8struct CUstream_st;
9
10namespace gtsam_points {
11
12struct CUDAStream {
13public:
14 CUDAStream();
16
17 CUDAStream(const CUDAStream&) = delete;
18 CUDAStream& operator=(const CUDAStream&) = delete;
19
20 operator CUstream_st*() const { return stream; }
21
22 void sync();
23
24 void add_resource(const std::shared_ptr<void>& resource);
25
26 template <typename T, class... Args>
27 void emplace_resource(Args&&... args) {
28 resources.emplace_back(std::make_shared<T>(args...));
29 }
30
31public:
32 CUstream_st* stream;
33 std::vector<std::shared_ptr<void>> resources;
34};
35
37public:
38 RegisteredMemory(void* ptr, size_t size, unsigned int flags = 0x00);
40
41 RegisteredMemory(const RegisteredMemory&) = delete;
42 RegisteredMemory& operator=(const RegisteredMemory&) = delete;
43
44 void* ptr;
45};
46
47} // namespace gtsam_points
Definition cuda_stream.hpp:12
Definition cuda_stream.hpp:36