Blender  V3.3
device/cuda/queue.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2011-2022 Blender Foundation */
3 
4 #pragma once
5 
6 #ifdef WITH_CUDA
7 
8 # include "device/kernel.h"
9 # include "device/memory.h"
10 # include "device/queue.h"
11 
12 # include "device/cuda/util.h"
13 
15 
16 class CUDADevice;
17 class device_memory;
18 
19 /* Base class for CUDA queues. */
20 class CUDADeviceQueue : public DeviceQueue {
21  public:
22  CUDADeviceQueue(CUDADevice *device);
23  ~CUDADeviceQueue();
24 
25  virtual int num_concurrent_states(const size_t state_size) const override;
26  virtual int num_concurrent_busy_states() const override;
27 
28  virtual void init_execution() override;
29 
30  virtual bool enqueue(DeviceKernel kernel,
31  const int work_size,
32  DeviceKernelArguments const &args) override;
33 
34  virtual bool synchronize() override;
35 
36  virtual void zero_to_device(device_memory &mem) override;
37  virtual void copy_to_device(device_memory &mem) override;
38  virtual void copy_from_device(device_memory &mem) override;
39 
40  virtual CUstream stream()
41  {
42  return cuda_stream_;
43  }
44 
45  virtual unique_ptr<DeviceGraphicsInterop> graphics_interop_create() override;
46 
47  protected:
48  CUDADevice *cuda_device_;
49  CUstream cuda_stream_;
50 
51  void assert_success(CUresult result, const char *operation);
52 };
53 
55 
56 #endif /* WITH_CUDA */
virtual void copy_from_device(device_memory &mem)=0
virtual int num_concurrent_states(const size_t state_size) const =0
virtual void init_execution()=0
virtual void copy_to_device(device_memory &mem)=0
virtual unique_ptr< DeviceGraphicsInterop > graphics_interop_create()
Definition: device/queue.h:150
virtual int num_concurrent_busy_states() const =0
virtual bool synchronize()=0
virtual bool enqueue(DeviceKernel kernel, const int work_size, DeviceKernelArguments const &args)=0
virtual void zero_to_device(device_memory &mem)=0
#define CCL_NAMESPACE_END
Definition: cuda/compat.h:9
SyclQueue void void size_t num_bytes SyclQueue void const char void *memory_device_pointer KernelContext int kernel
ccl_gpu_kernel_postfix ccl_global const int ccl_global float const int work_size
DeviceKernel