#pragma once #include "config.h" #include "utils.h" #include "../../helpers.h" namespace sm90::fwd { using namespace cute; template __device__ void KernelTemplate::devfunc(const SparseAttnFwdParams ¶ms) { } template __global__ void __launch_bounds__(Kernel::NUM_THREADS, 1) sparse_attn_fwd_kernel(const SparseAttnFwdParams params) { Kernel::devfunc(params); } template void KernelTemplate::run(const SparseAttnFwdParams ¶ms) { KU_ASSERT(params.h_kv == 1); KU_ASSERT(params.topk % (2*B_TOPK) == 0); // To save some boundry checkings KU_ASSERT(params.topk > 0); KU_ASSERT(params.h_q % B_H == 0); auto shape_Q = make_shape(params.h_q, params.d_qk, params.s_q); } template void run_fwd_phase1_kernel(const SparseAttnFwdParams& params) { KernelTemplate::run(params); } }