3.6.0 update (#2005)

* 3.6.0 update

* doc and swap stuff

---------

Co-authored-by: yuzhai <yuzhai@nvidia.com>
Co-authored-by: Haicheng Wu <haichengw@nvidia.com>
This commit is contained in:
Yujia Zhai
2024-12-25 01:34:40 -05:00
committed by GitHub
co-authored by yuzhai Haicheng Wu
parent e1cd8c7866
commit 3d261a5974
258 changed files with 10863 additions and 3883 deletions
@@ -1159,6 +1159,37 @@ std::vector<cutlass::conv::ConvProblemShape<cutlass::conv::Operator::kDgrad, 1>>
get_conv_problem_vector<1, cutlass::conv::Operator::kDgrad, true>() {
using ProblemShape = cutlass::conv::ConvProblemShape<cutlass::conv::Operator::kDgrad, 1>;
std::vector<ProblemShape> problem_shapes;
// Test TMA truncation
problem_shapes.push_back({
cutlass::conv::Mode::kCrossCorrelation,
{1, 512, 64}, // nqk
{64, 1, 64}, // ksc
{0}, // padding lower (pad_w)
{0}, // padding upper (pad_w)
{2}, // stride (stride_w)
{1}, // dilation (dilation_w)
1 // group
});
problem_shapes.push_back({
cutlass::conv::Mode::kCrossCorrelation,
{1, 1024, 64}, // nqk
{64, 1, 64}, // ksc
{0}, // padding lower (pad_w)
{0}, // padding upper (pad_w)
{4}, // stride (stride_w)
{1}, // dilation (dilation_w)
1 // group
});
problem_shapes.push_back({
cutlass::conv::Mode::kCrossCorrelation,
{1, 2048, 64}, // nqk
{64, 1, 64}, // ksc
{0}, // padding lower (pad_w)
{0}, // padding upper (pad_w)
{8}, // stride (stride_w)
{1}, // dilation (dilation_w)
1 // group
});
// non-packed input/output strides.
// stride divides dilation
// asymmetric padding
+10 -2
View File
@@ -336,10 +336,17 @@ struct ConvTestbed {
// Scale
if constexpr (cute::is_same_v<ActivationFunctor, cutlass::epilogue::thread::ScaledGELU_taylor<ElementCompute>> ||
cute::is_same_v<ActivationFunctor, cutlass::epilogue::thread::ScaledGELU<ElementCompute>>) {
cute::is_same_v<ActivationFunctor, cutlass::epilogue::thread::ScaledGELU<ElementCompute>> ||
cute::is_same_v<ActivationFunctor, cutlass::epilogue::thread::ScaledSiLu<ElementCompute>> ||
cute::is_same_v<ActivationFunctor, cutlass::epilogue::thread::ScaledHardSwish<ElementCompute>> ) {
fusion_args.activation.scale = ElementCompute{1};
}
// LeakyRelu
if constexpr (cute::is_same_v<ActivationFunctor, cutlass::epilogue::thread::LeakyReLU<ElementCompute>> ) {
fusion_args.activation.leaky_alpha = ElementCompute{0};
}
cutlass::Status status = cutlass::Status::kInvalid;
status = conv_op.can_implement(args);
@@ -617,8 +624,9 @@ bool TestAllConv(double alpha = 1.0, double beta = 0.0, float epsilon = 0.0f
for (DecompositionMode decomp_mode : decomposition_modes) {
std::vector problem_splits = {Splits{1}};
if constexpr (UsesStreamKScheduler) {
if (decomp_mode == DecompositionMode::Heuristic || decomp_mode == DecompositionMode::SplitK) {
if (decomp_mode == DecompositionMode::SplitK) {
problem_splits.push_back(Splits{2});
problem_splits.push_back(Splits{4});
}
}
for (auto splits : problem_splits) {