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:
Pradeep Ramani
2023-11-02 08:09:05 -07:00
committed by GitHub
parent 922fb5108b
commit c008b4aea8
263 changed files with 16214 additions and 5008 deletions

View File

@@ -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> {