CUTLASS 3.3.0 (#1167)
* Release 3.3.0 Adds support for mixed precision GEMMs On Hopper and Ampere Adds support for < 16B aligned GEMMs on Hopper Enhancements to EVT Enhancements to Python interface Enhancements to Sub-byte type handling in CuTe Several other bug-fixes and performance improvements. * minor doc update
This commit is contained in:
@@ -730,6 +730,24 @@ struct multiplies<Array<T, N>> {
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T, int N, bool PropogateNaN>
|
||||
struct maximum_absolute_value_reduction<Array<T, N>, PropogateNaN> {
|
||||
|
||||
CUTLASS_HOST_DEVICE
|
||||
T operator() (T const& scalar, Array<T, N> const& rhs) const {
|
||||
|
||||
T result = scalar;
|
||||
maximum_absolute_value_reduction<T, PropogateNaN> scalar_op;
|
||||
|
||||
CUTLASS_PRAGMA_UNROLL
|
||||
for (int i = 0; i < N; ++i) {
|
||||
result = scalar_op(result, rhs[i]);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T, int N>
|
||||
struct scale<Array<T, N>> {
|
||||
T const scaling_factor_;
|
||||
@@ -797,6 +815,24 @@ struct divides<Array<T, N>> {
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T, int N>
|
||||
struct reciprocal_approximate<Array<T, N>> {
|
||||
|
||||
CUTLASS_HOST_DEVICE
|
||||
Array<T, N> operator()(Array<T, N> const &lhs) const {
|
||||
|
||||
Array<T, N> result;
|
||||
reciprocal_approximate<T> scalar_op;
|
||||
|
||||
CUTLASS_PRAGMA_UNROLL
|
||||
for (int i = 0; i < N; ++i) {
|
||||
result[i] = scalar_op(lhs[i]);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T, int N>
|
||||
struct maximum<Array<T, N>, false> {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user