Blender V5.0
device/hip/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_HIP
8
9# include "device/memory.h"
10# include "device/queue.h"
11
12# include "device/hip/util.h"
13
15
16class HIPDevice;
17class device_memory;
18
19/* Base class for HIP queues. */
20class HIPDeviceQueue : public DeviceQueue {
21 public:
22 HIPDeviceQueue(HIPDevice *device);
23 ~HIPDeviceQueue() override;
24
25 int num_concurrent_states(const size_t state_size) const override;
26 int num_concurrent_busy_states(const size_t state_size) const override;
27
28 void init_execution() override;
29
30 bool enqueue(DeviceKernel kernel,
31 const int work_size,
32 const DeviceKernelArguments &args) override;
33
34 bool synchronize() override;
35
36 void zero_to_device(device_memory &mem) override;
37 void copy_to_device(device_memory &mem) override;
38 void copy_from_device(device_memory &mem) override;
39
40 virtual hipStream_t stream()
41 {
42 return hip_stream_;
43 }
44
45 unique_ptr<DeviceGraphicsInterop> graphics_interop_create() override;
46
47 protected:
48 HIPDevice *hip_device_;
49 hipStream_t hip_stream_;
50
51 void assert_success(hipError_t result, const char *operation);
52};
53
55
56#endif /* WITH_HIP */
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 bool enqueue(DeviceKernel kernel, const int work_size, const DeviceKernelArguments &args)=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 void zero_to_device(device_memory &mem)=0
#define CCL_NAMESPACE_END
ccl_gpu_kernel_postfix const ccl_global int ccl_global float const int work_size
DeviceKernel