muda
nd_reshaper.h
1 #pragma once
2 #include <cuda.h>
3 
4 namespace muda
5 {
6 template <typename T>
7 class DeviceBuffer;
8 
9 template <typename T>
10 class DeviceBuffer2D;
11 
12 template <typename T>
13 class DeviceBuffer3D;
14 
16 {
17  public:
18  template <typename T, typename FConstruct>
19  static MUDA_HOST void resize(int grid_dim,
20  int block_dim,
21  cudaStream_t stream,
22  DeviceBuffer<T>& buffer,
23  size_t new_size,
24  FConstruct&& fct);
25 
26  template <typename T>
27  static MUDA_HOST void shrink_to_fit(int grid_dim,
28  int block_dim,
29  cudaStream_t stream,
30  DeviceBuffer<T>& buffer);
31 
32  template <typename T>
33  static MUDA_HOST void reserve(int grid_dim,
34  int block_dim,
35  cudaStream_t stream,
36  DeviceBuffer<T>& buffer,
37  size_t new_capacity);
38 
39 
40  //using T = float;
41  //using FConstruct = std::function<void(Buffer2DView<T>)>;
42  template <typename T, typename FConstruct>
43  static MUDA_HOST void resize(int grid_dim,
44  int block_dim,
45  cudaStream_t stream,
46  DeviceBuffer2D<T>& buffer,
47  Extent2D new_extent,
48  FConstruct&& fct);
49 
50  template <typename T>
51  static MUDA_HOST void shrink_to_fit(int grid_dim,
52  int block_dim,
53  cudaStream_t stream,
54  DeviceBuffer2D<T>& buffer);
55 
56  template <typename T>
57  static MUDA_HOST void reserve(int grid_dim,
58  int block_dim,
59  cudaStream_t stream,
60  DeviceBuffer2D<T>& buffer,
61  Extent2D new_capacity);
62 
63  template <typename T, typename FConstruct>
64  static MUDA_HOST void resize(int grid_dim,
65  int block_dim,
66  cudaStream_t stream,
67  DeviceBuffer3D<T>& buffer,
68  Extent3D new_extent,
69  FConstruct&& fct);
70 
71  template <typename T>
72  static MUDA_HOST void shrink_to_fit(int grid_dim,
73  int block_dim,
74  cudaStream_t stream,
75  DeviceBuffer3D<T>& buffer);
76 
77  template <typename T>
78  static MUDA_HOST void reserve(int grid_dim,
79  int block_dim,
80  cudaStream_t stream,
81  DeviceBuffer3D<T>& buffer,
82  Extent3D new_capacity);
83 };
84 } // namespace muda
85 
86 #include "details/nd_reshaper.inl"
Definition: extent.h:39
A std::vector like wrapper of cuda device memory, allows user to:
Definition: buffer_fwd.h:33
Definition: buffer_fwd.h:39
Definition: extent.h:9
Definition: assert.h:13
Definition: nd_reshaper.h:15
Definition: buffer_fwd.h:36