/** * @file epilogue_helpers.h * * This file includes types for the epilogues. The empty structs exist so we can signal to template * code the type of epilogue we want to run, and let the underlying code specify the details such as * element types, accumulator type and elements per vector access. * */ #pragma once #include #include #include #include #include namespace fastertransformer { struct EpilogueOpBiasSilu {}; struct EpilogueOpBiasReLU {}; struct EpilogueOpBiasFtGelu {}; struct EpilogueOpBias {}; struct EpilogueOpNoBias {}; template struct Epilogue { }; template struct Epilogue { using Op = cutlass::epilogue::thread::LinearCombinationSilu; }; template struct Epilogue { using Op = cutlass::epilogue::thread::LinearCombinationRelu; }; template struct Epilogue { using Op = cutlass::epilogue::thread::LinearCombinationGeneric; }; template struct Epilogue { using Op = cutlass::epilogue::thread::LinearCombination; }; template struct Epilogue { using Op = cutlass::epilogue::thread::LinearCombination; }; } // namespace fastertransformer