CUTLASS 3.2.1 (#1113)
* Updates for 3.2.1 release. * Minor fix in gemm op profiler for raster order. * Add scheduler mapping for raster order in the kernels.
This commit is contained in:
@@ -177,7 +177,7 @@ to_CUtensorMapSwizzle(SmemSwizzleBits const& t) {
|
||||
#if (__CUDACC_VER_MAJOR__ >= 12) && !defined(__CUDACC_RTC__)
|
||||
using TmaDescriptor = CUtensorMap;
|
||||
#else
|
||||
using TmaDescriptor = struct { char bytes[128]; };
|
||||
using TmaDescriptor = struct alignas(64) { char bytes[128]; };
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// Initiates a TensorMap Prefetch
|
||||
|
||||
@@ -37,8 +37,19 @@
|
||||
// Config
|
||||
#if (defined(__CUDA_ARCH__) && (__CUDA_ARCH__ >= 800))
|
||||
# define CUTE_ARCH_MMA_SM80_ENABLED
|
||||
|
||||
#if (__CUDA_ARCH__ <= 900)
|
||||
#define CUTE_ARCH_MMA_B1_AND_SM80_ENABLED
|
||||
#endif
|
||||
|
||||
#if (__CUDA_ARCH__ <= 890)
|
||||
#define CUTE_ARCH_MMA_B1_XOR_SM80_ENABLED
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
namespace cute {
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -2044,7 +2055,7 @@ struct SM80_8x8x128_S32U1U1S32_TN_XORPOPC
|
||||
uint32_t const& b0,
|
||||
uint32_t const& c0, uint32_t const& c1)
|
||||
{
|
||||
#if defined(CUTE_ARCH_MMA_SM80_ENABLED)
|
||||
#if defined(CUTE_ARCH_MMA_B1_XOR_SM80_ENABLED)
|
||||
asm volatile(
|
||||
"mma.sync.aligned.m8n8k128.row.col.s32.b1.b1.s32.xor.popc "
|
||||
"{%0, %1},"
|
||||
@@ -2077,7 +2088,7 @@ struct SM80_16x8x128_S32U1U1S32_TN_XORPOPC
|
||||
uint32_t const& b0,
|
||||
uint32_t const& c0, uint32_t const& c1, uint32_t const& c2, uint32_t const& c3)
|
||||
{
|
||||
#if defined(CUTE_ARCH_MMA_SM80_ENABLED)
|
||||
#if defined(CUTE_ARCH_MMA_B1_XOR_SM80_ENABLED)
|
||||
asm volatile(
|
||||
"mma.sync.aligned.m16n8k128.row.col.s32.b1.b1.s32.xor.popc "
|
||||
"{%0, %1, %2, %3},"
|
||||
@@ -2110,7 +2121,7 @@ struct SM80_16x8x256_S32U1U1S32_TN_XORPOPC
|
||||
uint32_t const& b0, uint32_t const& b1,
|
||||
uint32_t const& c0, uint32_t const& c1, uint32_t const& c2, uint32_t const& c3)
|
||||
{
|
||||
#if defined(CUTE_ARCH_MMA_SM80_ENABLED)
|
||||
#if defined(CUTE_ARCH_MMA_B1_XOR_SM80_ENABLED)
|
||||
asm volatile(
|
||||
"mma.sync.aligned.m16n8k256.row.col.s32.b1.b1.s32.xor.popc "
|
||||
"{%0, %1, %2, %3},"
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
// Config
|
||||
#if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ >= 900)
|
||||
# define CUTE_ARCH_MMA_SM90_ENABLED
|
||||
# define CUTE_ARCH_MMA_F64_SM90_ENABLED
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -60,7 +61,7 @@ struct SM90_16x8x4_F64F64F64F64_TN
|
||||
double const& b0,
|
||||
double const& c0, double const& c1, double const& c2, double const& c3)
|
||||
{
|
||||
#if defined(CUTE_ARCH_MMA_SM90_ENABLED)
|
||||
#if defined(CUTE_ARCH_MMA_F64_SM90_ENABLED)
|
||||
asm volatile(
|
||||
"mma.sync.aligned.m16n8k4.row.col.f64.f64.f64.f64"
|
||||
"{%0, %1, %2, %3},"
|
||||
@@ -93,7 +94,7 @@ struct SM90_16x8x8_F64F64F64F64_TN
|
||||
double const& b0, double const& b1,
|
||||
double const& c0, double const& c1, double const& c2, double const& c3)
|
||||
{
|
||||
#if defined(CUTE_ARCH_MMA_SM90_ENABLED)
|
||||
#if defined(CUTE_ARCH_MMA_F64_SM90_ENABLED)
|
||||
asm volatile(
|
||||
"mma.sync.aligned.m16n8k8.row.col.f64.f64.f64.f64"
|
||||
"{%0, %1, %2, %3},"
|
||||
@@ -127,7 +128,7 @@ struct SM90_16x8x16_F64F64F64F64_TN
|
||||
double const& b0, double const& b1, double const& b2, double const& b3,
|
||||
double const& c0, double const& c1, double const& c2, double const& c3)
|
||||
{
|
||||
#if defined(CUTE_ARCH_MMA_SM90_ENABLED)
|
||||
#if defined(CUTE_ARCH_MMA_F64_SM90_ENABLED)
|
||||
asm volatile(
|
||||
"mma.sync.aligned.m16n8k16.row.col.f64.f64.f64.f64"
|
||||
"{%0, %1, %2, %3},"
|
||||
|
||||
@@ -86,22 +86,22 @@ CUTE_HOST std::ostream& operator<<(std::ostream& os, LayoutType const& t) {
|
||||
union GmmaDescriptor
|
||||
{
|
||||
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
GmmaDescriptor() noexcept : desc_(0) {}
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
GmmaDescriptor(uint64_t desc) noexcept : desc_(desc) {}
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
GmmaDescriptor(GmmaDescriptor const& t) noexcept : desc_(t.desc_) {}
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
GmmaDescriptor(GmmaDescriptor && t) noexcept : desc_(t.desc_) {}
|
||||
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
GmmaDescriptor& operator=(GmmaDescriptor const& t) noexcept {
|
||||
desc_ = t.desc_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
CUTE_HOST_DEVICE constexpr
|
||||
GmmaDescriptor& operator=(GmmaDescriptor && t) noexcept {
|
||||
desc_ = t.desc_;
|
||||
return *this;
|
||||
|
||||
Reference in New Issue
Block a user