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