7#if !defined(__KERNEL_METAL__)
13#if !defined(__KERNEL_GPU__)
35using uchar =
unsigned char;
36using uint =
unsigned int;
37using ushort =
unsigned short;
49 return (offset + alignment - 1) & ~(alignment - 1);
54 return (
x +
y - 1) /
y;
59 return ((
x + multiple - 1) / multiple) * multiple;
64 return (
x / multiple) * multiple;
69 return (
x & (
x - 1)) == 0;
75#if !defined(__KERNEL_GPU__) || defined(__KERNEL_CUDA__)
76# define __KERNEL_PRINTF__
79#if defined __METAL_PRINTF__
80# define print_float(label, a) metal::os_log_default.log_debug(label ": %.8f", a)
84# ifdef __KERNEL_PRINTF__
85 printf(
"%s: %.8f\n", label, (
double)a);
92#if defined(__KERNEL_GPU__) && !defined(__KERNEL_ONEAPI__)
93# define __KERNEL_NATIVE_VECTOR_TYPES__
unsigned long long int uint64_t
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_device_inline size_t round_up(const size_t x, const size_t multiple)
ccl_device_inline bool is_power_of_two(const size_t x)
ccl_device_inline void print_float(const ccl_private char *label, const float a)
ccl_device_inline size_t divide_up(const size_t x, const size_t y)
ccl_device_inline size_t round_down(const size_t x, const size_t multiple)
ccl_device_inline size_t align_up(const size_t offset, const size_t alignment)