* Replace license text in headers with SPDX identifiers. * Remove specific license info from outdated readme.txt, instead leave details to the source files. * Add list of SPDX license identifiers used, and corresponding license texts. * Update copyright dates while we're at it. Ref D14069, T95597
44 lines
810 B
C++
44 lines
810 B
C++
/* SPDX-License-Identifier: Apache-2.0
|
|
* Copyright 2011-2022 Blender Foundation */
|
|
|
|
#pragma once
|
|
|
|
#ifdef WITH_CUDA
|
|
|
|
# include "device/kernel.h"
|
|
|
|
# ifdef WITH_CUDA_DYNLOAD
|
|
# include "cuew.h"
|
|
# else
|
|
# include <cuda.h>
|
|
# endif
|
|
|
|
CCL_NAMESPACE_BEGIN
|
|
|
|
class CUDADevice;
|
|
|
|
/* CUDA kernel and associate occupancy information. */
|
|
class CUDADeviceKernel {
|
|
public:
|
|
CUfunction function = nullptr;
|
|
|
|
int num_threads_per_block = 0;
|
|
int min_blocks = 0;
|
|
};
|
|
|
|
/* Cache of CUDA kernels for each DeviceKernel. */
|
|
class CUDADeviceKernels {
|
|
public:
|
|
void load(CUDADevice *device);
|
|
const CUDADeviceKernel &get(DeviceKernel kernel) const;
|
|
bool available(DeviceKernel kernel) const;
|
|
|
|
protected:
|
|
CUDADeviceKernel kernels_[DEVICE_KERNEL_NUM];
|
|
bool loaded = false;
|
|
};
|
|
|
|
CCL_NAMESPACE_END
|
|
|
|
#endif /* WITH_CUDA */
|