50 template <
int N,
int CurrentVal = N,
int Count = 0>
57 template <
int N,
int Count>
65 template <
int N,
int CurrentVal = N,
int Count = 0>
72 template <
int N,
int Count>
74 enum {
value = ((1 << Count) < N) ? Count + 1 : Count };
89 template <
int Div
idend,
int Divisor>
91 enum {
value = Dividend / Divisor };
93 static_assert((Dividend % Divisor == 0),
"Not an even multiple");
103 template <
typename div
idend_t,
typename divisor_t>
105 return ((dividend + divisor - 1) / divisor) * divisor;
111 template <
typename value_t>
114 if (a == 0)
return b;
116 if (b == 0)
return a;
124 template <
typename value_t>
126 value_t temp =
gcd(a, b);
128 return temp ? (a / temp * b) : 0;
136 template <
typename value_t>
138 for (
int i = 31; i >= 0; --i) {
139 if ((1 << i) & x)
return 31 - i;
144 template <
typename value_t>
147 a += (x & (x - 1)) != 0;
155 template <
int A,
int B>
157 static int const kValue = (A < B) ? A : B;
160 template <
int A,
int B>
162 static int const kValue = (A > B) ? A : B;
Definition: cutlass_math.h:91
static int const kValue
Definition: cutlass_math.h:157
CUTLASS_HOST_DEVICE value_t find_log2(value_t x)
Definition: cutlass_math.h:145
Definition: cutlass_math.h:51
Definition: cutlass_math.h:156
Definition: cutlass_math.h:53
CUTLASS_HOST_DEVICE value_t lcm(value_t a, value_t b)
Definition: cutlass_math.h:125
CUTLASS_HOST_DEVICE dividend_t round_nearest(dividend_t dividend, divisor_t divisor)
Definition: cutlass_math.h:104
Definition: cutlass_math.h:68
#define CUTLASS_HOST_DEVICE
Definition: cutlass.h:46
Definition: cutlass_math.h:161
Definition: cutlass_math.h:82
CUTLASS_HOST_DEVICE value_t gcd(value_t a, value_t b)
Definition: cutlass_math.h:112
Definition: cutlass_math.h:90
Definition: cutlass_math.h:66
CUTLASS_HOST_DEVICE value_t clz(value_t x)
Definition: cutlass_math.h:137
Definition: cutlass_math.h:45
static int const kValue
Definition: cutlass_math.h:162
Definition: cutlass_math.h:81