#pragma once


#include <iostream> 
#include <type_traits> 
#include <natten/natten.h> 
#include <natten/cuda/fna/na_utils.cuh> 
#include <natten/cuda/fna/kernel_forward.h> 
#include <natten/cuda/fna/kernel_backward.h> 
namespace natten { 
namespace cuda { 
namespace fna { 


///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm50_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm50_float32_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna1d_32x128x32_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna1d_64x64x32_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna1d_64x128x32_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna1d_32x128x64_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna1d_64x64x64_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna1d_64x128x64_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna1d_32x128x128_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna1d_64x64x128_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna1d_64x128x128_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna1d_32x128x65536_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna1d_64x128x65536_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna1d_64x64x65536_sm50_float32_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm50_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm50_float32_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna1d_32x128x32_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna1d_64x64x32_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna1d_64x128x32_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna1d_32x128x64_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna1d_64x64x64_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna1d_64x128x64_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna1d_32x128x128_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna1d_64x64x128_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna1d_64x128x128_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna1d_32x128x65536_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna1d_64x128x65536_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna1d_64x64x65536_sm50_float32_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm50_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm50_float16_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna1d_32x128x32_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna1d_64x64x32_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna1d_64x128x32_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna1d_32x128x64_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna1d_64x64x64_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna1d_64x128x64_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna1d_32x128x128_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna1d_64x64x128_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna1d_64x128x128_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna1d_32x128x65536_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna1d_64x128x65536_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna1d_64x64x65536_sm50_float16_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm50_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm50_float16_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna1d_32x128x32_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna1d_64x64x32_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna1d_64x128x32_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna1d_32x128x64_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna1d_64x64x64_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna1d_64x128x64_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna1d_32x128x128_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna1d_64x64x128_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna1d_64x128x128_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna1d_32x128x65536_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna1d_64x128x65536_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna1d_64x64x65536_sm50_float16_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm70_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm70_float32_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna1d_32x128x32_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna1d_64x64x32_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna1d_64x128x32_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna1d_32x128x64_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna1d_64x64x64_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna1d_64x128x64_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna1d_32x128x128_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna1d_64x64x128_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna1d_64x128x128_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna1d_32x128x65536_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna1d_64x128x65536_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna1d_64x64x65536_sm70_float32_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm70_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm70_float32_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna1d_32x128x32_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna1d_64x64x32_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna1d_64x128x32_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna1d_32x128x64_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna1d_64x64x64_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna1d_64x128x64_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna1d_32x128x128_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna1d_64x64x128_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna1d_64x128x128_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna1d_32x128x65536_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna1d_64x128x65536_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna1d_64x64x65536_sm70_float32_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm70_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm70_float16_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna1d_32x128x32_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna1d_64x64x32_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna1d_64x128x32_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna1d_32x128x64_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna1d_64x64x64_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna1d_64x128x64_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna1d_32x128x128_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna1d_64x64x128_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna1d_64x128x128_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna1d_32x128x65536_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna1d_64x128x65536_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna1d_64x64x65536_sm70_float16_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm70_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm70_float16_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna1d_32x128x32_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna1d_64x64x32_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna1d_64x128x32_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna1d_32x128x64_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna1d_64x64x64_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna1d_64x128x64_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna1d_32x128x128_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna1d_64x64x128_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna1d_64x128x128_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna1d_32x128x65536_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna1d_64x128x65536_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna1d_64x64x65536_sm70_float16_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm75_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm75_float32_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna1d_32x128x32_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna1d_64x64x32_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna1d_64x128x32_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna1d_32x128x64_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna1d_64x64x64_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna1d_64x128x64_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna1d_32x128x128_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna1d_64x64x128_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna1d_64x128x128_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna1d_32x128x65536_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna1d_64x128x65536_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna1d_64x64x65536_sm75_float32_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm75_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm75_float32_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna1d_32x128x32_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna1d_64x64x32_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna1d_64x128x32_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna1d_32x128x64_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna1d_64x64x64_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna1d_64x128x64_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna1d_32x128x128_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna1d_64x64x128_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna1d_64x128x128_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna1d_32x128x65536_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna1d_64x128x65536_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna1d_64x64x65536_sm75_float32_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm75_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm75_float16_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna1d_32x128x32_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna1d_64x64x32_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna1d_64x128x32_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna1d_32x128x64_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna1d_64x64x64_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna1d_64x128x64_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna1d_32x128x128_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna1d_64x64x128_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna1d_64x128x128_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna1d_32x128x65536_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna1d_64x128x65536_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna1d_64x64x65536_sm75_float16_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm75_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm75_float16_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna1d_32x128x32_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna1d_64x64x32_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna1d_64x128x32_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna1d_32x128x64_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna1d_64x64x64_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna1d_64x128x64_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna1d_32x128x128_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna1d_64x64x128_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna1d_64x128x128_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna1d_32x128x65536_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna1d_64x128x65536_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna1d_64x64x65536_sm75_float16_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm80_float32_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm80_float32_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna1d_32x128x32_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_64x64x32_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna1d_64x128x32_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna1d_32x128x64_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_64x64x64_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna1d_64x128x64_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna1d_32x128x128_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_64x64x128_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna1d_64x128x128_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna1d_32x128x65536_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna1d_64x128x65536_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_64x64x65536_sm80_float32_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm80_float32_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm80_float32_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna1d_32x128x32_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_64x64x32_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna1d_64x128x32_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna1d_32x128x64_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_64x64x64_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna1d_64x128x64_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna1d_32x128x128_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_64x64x128_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna1d_64x128x128_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna1d_32x128x65536_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna1d_64x128x65536_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_64x64x65536_sm80_float32_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm80_float16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm80_float16_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna1d_32x128x32_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_64x64x32_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna1d_64x128x32_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna1d_32x128x64_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_64x64x64_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna1d_64x128x64_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna1d_32x128x128_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_64x64x128_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna1d_64x128x128_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna1d_32x128x65536_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna1d_64x128x65536_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_64x64x65536_sm80_float16_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm80_float16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm80_float16_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna1d_32x128x32_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_64x64x32_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna1d_64x128x32_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna1d_32x128x64_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_64x64x64_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna1d_64x128x64_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna1d_32x128x128_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_64x64x128_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna1d_64x128x128_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna1d_32x128x65536_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna1d_64x128x65536_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_64x64x65536_sm80_float16_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm80_bfloat16_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna1d_32x128x32_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_64x64x32_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna1d_64x128x32_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna1d_32x128x64_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_64x64x64_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna1d_64x128x64_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna1d_32x128x128_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_64x64x128_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna1d_64x128x128_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna1d_32x128x65536_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna1d_64x128x65536_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_64x64x65536_sm80_bfloat16_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna1d_32x128x32_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_64x64x32_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna1d_64x128x32_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna1d_32x128x64_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_64x64x64_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna1d_64x128x64_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna1d_32x128x128_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_64x64x128_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna1d_64x128x128_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna1d_32x128x65536_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna1d_64x128x65536_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_64x64x65536_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_sm80_bfloat16_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna1d_32x128x32_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_64x64x32_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna1d_64x128x32_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna1d_32x128x64_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_64x64x64_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna1d_64x128x64_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna1d_32x128x128_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_64x64x128_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna1d_64x128x128_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna1d_32x128x65536_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna1d_64x128x65536_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_64x64x65536_sm80_bfloat16_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm50_float32_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna2d_32x128x32_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_64x64x32_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna2d_64x128x32_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna2d_32x128x64_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_64x64x64_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna2d_64x128x64_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna2d_32x128x128_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_64x64x128_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna2d_64x128x128_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna2d_32x128x65536_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna2d_64x128x65536_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_64x64x65536_sm50_float32_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm50_float32_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna2d_32x128x32_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_64x64x32_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna2d_64x128x32_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna2d_32x128x64_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_64x64x64_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna2d_64x128x64_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna2d_32x128x128_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_64x64x128_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna2d_64x128x128_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna2d_32x128x65536_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna2d_64x128x65536_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_64x64x65536_sm50_float32_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm50_float32_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna2d_32x128x32_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_64x64x32_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna2d_64x128x32_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna2d_32x128x64_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_64x64x64_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna2d_64x128x64_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna2d_32x128x128_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_64x64x128_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna2d_64x128x128_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna2d_32x128x65536_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna2d_64x128x65536_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_64x64x65536_sm50_float32_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm50_float32_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna2d_32x128x32_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_64x64x32_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna2d_64x128x32_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna2d_32x128x64_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_64x64x64_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna2d_64x128x64_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna2d_32x128x128_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_64x64x128_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna2d_64x128x128_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna2d_32x128x65536_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna2d_64x128x65536_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_64x64x65536_sm50_float32_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm50_float16_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna2d_32x128x32_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_64x64x32_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna2d_64x128x32_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna2d_32x128x64_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_64x64x64_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna2d_64x128x64_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna2d_32x128x128_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_64x64x128_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna2d_64x128x128_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna2d_32x128x65536_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna2d_64x128x65536_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_64x64x65536_sm50_float16_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm50_float16_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna2d_32x128x32_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_64x64x32_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna2d_64x128x32_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna2d_32x128x64_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_64x64x64_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna2d_64x128x64_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna2d_32x128x128_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_64x64x128_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna2d_64x128x128_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna2d_32x128x65536_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna2d_64x128x65536_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_64x64x65536_sm50_float16_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm50_float16_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna2d_32x128x32_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_64x64x32_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna2d_64x128x32_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna2d_32x128x64_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_64x64x64_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna2d_64x128x64_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna2d_32x128x128_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_64x64x128_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna2d_64x128x128_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna2d_32x128x65536_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna2d_64x128x65536_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_64x64x65536_sm50_float16_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm50_float16_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna2d_32x128x32_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_64x64x32_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna2d_64x128x32_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna2d_32x128x64_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_64x64x64_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna2d_64x128x64_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna2d_32x128x128_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_64x64x128_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna2d_64x128x128_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna2d_32x128x65536_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna2d_64x128x65536_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_64x64x65536_sm50_float16_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm70_float32_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna2d_32x128x32_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_64x64x32_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna2d_64x128x32_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna2d_32x128x64_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_64x64x64_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna2d_64x128x64_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna2d_32x128x128_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_64x64x128_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna2d_64x128x128_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna2d_32x128x65536_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna2d_64x128x65536_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_64x64x65536_sm70_float32_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm70_float32_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna2d_32x128x32_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_64x64x32_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna2d_64x128x32_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna2d_32x128x64_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_64x64x64_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna2d_64x128x64_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna2d_32x128x128_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_64x64x128_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna2d_64x128x128_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna2d_32x128x65536_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna2d_64x128x65536_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_64x64x65536_sm70_float32_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm70_float32_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna2d_32x128x32_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_64x64x32_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna2d_64x128x32_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna2d_32x128x64_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_64x64x64_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna2d_64x128x64_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna2d_32x128x128_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_64x64x128_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna2d_64x128x128_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna2d_32x128x65536_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna2d_64x128x65536_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_64x64x65536_sm70_float32_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm70_float32_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna2d_32x128x32_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_64x64x32_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna2d_64x128x32_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna2d_32x128x64_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_64x64x64_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna2d_64x128x64_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna2d_32x128x128_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_64x64x128_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna2d_64x128x128_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna2d_32x128x65536_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna2d_64x128x65536_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_64x64x65536_sm70_float32_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm70_float16_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna2d_32x128x32_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_64x64x32_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna2d_64x128x32_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna2d_32x128x64_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_64x64x64_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna2d_64x128x64_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna2d_32x128x128_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_64x64x128_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna2d_64x128x128_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna2d_32x128x65536_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna2d_64x128x65536_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_64x64x65536_sm70_float16_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm70_float16_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna2d_32x128x32_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_64x64x32_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna2d_64x128x32_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna2d_32x128x64_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_64x64x64_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna2d_64x128x64_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna2d_32x128x128_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_64x64x128_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna2d_64x128x128_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna2d_32x128x65536_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna2d_64x128x65536_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_64x64x65536_sm70_float16_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm70_float16_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna2d_32x128x32_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_64x64x32_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna2d_64x128x32_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna2d_32x128x64_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_64x64x64_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna2d_64x128x64_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna2d_32x128x128_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_64x64x128_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna2d_64x128x128_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna2d_32x128x65536_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna2d_64x128x65536_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_64x64x65536_sm70_float16_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm70_float16_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna2d_32x128x32_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_64x64x32_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna2d_64x128x32_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna2d_32x128x64_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_64x64x64_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna2d_64x128x64_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna2d_32x128x128_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_64x64x128_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna2d_64x128x128_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna2d_32x128x65536_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna2d_64x128x65536_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_64x64x65536_sm70_float16_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm75_float32_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna2d_32x128x32_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_64x64x32_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna2d_64x128x32_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna2d_32x128x64_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_64x64x64_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna2d_64x128x64_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna2d_32x128x128_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_64x64x128_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna2d_64x128x128_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna2d_32x128x65536_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna2d_64x128x65536_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_64x64x65536_sm75_float32_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm75_float32_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna2d_32x128x32_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_64x64x32_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna2d_64x128x32_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna2d_32x128x64_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_64x64x64_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna2d_64x128x64_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna2d_32x128x128_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_64x64x128_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna2d_64x128x128_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna2d_32x128x65536_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna2d_64x128x65536_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_64x64x65536_sm75_float32_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm75_float32_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna2d_32x128x32_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_64x64x32_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna2d_64x128x32_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna2d_32x128x64_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_64x64x64_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna2d_64x128x64_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna2d_32x128x128_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_64x64x128_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna2d_64x128x128_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna2d_32x128x65536_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna2d_64x128x65536_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_64x64x65536_sm75_float32_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm75_float32_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna2d_32x128x32_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_64x64x32_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna2d_64x128x32_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna2d_32x128x64_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_64x64x64_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna2d_64x128x64_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna2d_32x128x128_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_64x64x128_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna2d_64x128x128_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna2d_32x128x65536_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna2d_64x128x65536_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_64x64x65536_sm75_float32_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm75_float16_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna2d_32x128x32_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_64x64x32_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna2d_64x128x32_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna2d_32x128x64_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_64x64x64_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna2d_64x128x64_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna2d_32x128x128_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_64x64x128_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna2d_64x128x128_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna2d_32x128x65536_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna2d_64x128x65536_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_64x64x65536_sm75_float16_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm75_float16_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna2d_32x128x32_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_64x64x32_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna2d_64x128x32_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna2d_32x128x64_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_64x64x64_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna2d_64x128x64_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna2d_32x128x128_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_64x64x128_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna2d_64x128x128_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna2d_32x128x65536_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna2d_64x128x65536_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_64x64x65536_sm75_float16_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm75_float16_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna2d_32x128x32_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_64x64x32_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna2d_64x128x32_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna2d_32x128x64_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_64x64x64_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna2d_64x128x64_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna2d_32x128x128_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_64x64x128_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna2d_64x128x128_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna2d_32x128x65536_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna2d_64x128x65536_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_64x64x65536_sm75_float16_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm75_float16_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna2d_32x128x32_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_64x64x32_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna2d_64x128x32_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna2d_32x128x64_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_64x64x64_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna2d_64x128x64_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna2d_32x128x128_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_64x64x128_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna2d_64x128x128_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna2d_32x128x65536_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna2d_64x128x65536_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_64x64x65536_sm75_float16_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_float32_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_float32_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_float32_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_float32_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_float32_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_float32_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_float32_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_float32_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_float16_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_float16_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_float16_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_float16_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_float16_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_float16_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_float16_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_float16_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_bfloat16_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_bfloat16_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_bfloat16_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_bfloat16_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_bfloat16_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_bfloat16_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna2d_32x128x32_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_64x64x32_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna2d_64x128x32_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna2d_32x128x64_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_64x64x64_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna2d_64x128x64_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna2d_32x128x128_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_64x64x128_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna2d_64x128x128_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna2d_32x128x65536_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna2d_64x128x65536_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_64x64x65536_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_sm80_bfloat16_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna2d_32x128x32_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_64x64x32_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna2d_64x128x32_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna2d_32x128x64_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_64x64x64_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna2d_64x128x64_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna2d_32x128x128_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_64x64x128_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna2d_64x128x128_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna2d_32x128x65536_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna2d_64x128x65536_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_64x64x65536_sm80_bfloat16_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float32_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float32_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float32_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float32_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float32_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float32_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float32_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float32_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float32_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float32_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float32_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float32_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float32_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float32_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float32_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float32_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float16_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float16_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float16_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float16_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float16_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float16_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float16_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float16_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float16_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float16_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float16_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float16_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float16_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float16_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm50_float16_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 32>(), fna3d_32x128x32_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_64x64x32_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 32>(), fna3d_64x128x32_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 64>(), fna3d_32x128x64_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_64x64x64_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 64>(), fna3d_64x128x64_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 128>(), fna3d_32x128x128_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_64x64x128_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 128>(), fna3d_64x128x128_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 32, 128, 65536>(), fna3d_32x128x65536_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 128, 65536>(), fna3d_64x128x65536_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_64x64x65536_sm50_float16_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float32_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float32_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float32_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float32_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float32_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float32_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float32_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float32_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float32_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float32_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float32_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float32_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float32_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float32_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float32_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float32_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float16_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float16_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float16_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float16_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float16_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float16_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float16_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float16_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float16_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float16_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float16_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float16_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float16_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float16_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm70_float16_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 32>(), fna3d_32x128x32_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_64x64x32_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 32>(), fna3d_64x128x32_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 64>(), fna3d_32x128x64_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_64x64x64_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 64>(), fna3d_64x128x64_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 128>(), fna3d_32x128x128_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_64x64x128_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 128>(), fna3d_64x128x128_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 32, 128, 65536>(), fna3d_32x128x65536_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 128, 65536>(), fna3d_64x128x65536_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_64x64x65536_sm70_float16_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float32_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float32_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float32_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float32_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float32_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float32_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float32_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float32_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float32_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float32_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float32_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float32_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float32_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float32_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float32_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float32_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float16_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float16_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float16_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float16_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float16_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float16_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float16_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float16_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float16_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float16_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float16_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float16_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float16_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float16_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm75_float16_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 32>(), fna3d_32x128x32_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_64x64x32_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 32>(), fna3d_64x128x32_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 64>(), fna3d_32x128x64_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_64x64x64_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 64>(), fna3d_64x128x64_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 128>(), fna3d_32x128x128_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_64x64x128_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 128>(), fna3d_64x128x128_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 32, 128, 65536>(), fna3d_32x128x65536_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 128, 65536>(), fna3d_64x128x65536_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_64x64x65536_sm75_float16_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float32_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float32_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float32_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float32_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float32_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float32_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float32_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float32_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float32_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float32_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float32_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float32_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float32_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float32_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float32_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float32_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float16_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float16_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float16_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float16_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float16_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float16_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float16_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float16_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float16_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float16_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float16_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float16_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float16_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float16_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_float16_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_float16_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_bfloat16_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_bfloat16_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_bfloat16_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_bfloat16_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_bfloat16_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_bfloat16_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_bfloat16_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_bfloat16_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_bfloat16_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_bfloat16_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_bfloat16_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_bfloat16_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_bfloat16_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_bfloat16_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::kMinBlocksPerSm)
fna3d_32x128x32_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_64x64x32_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::kMinBlocksPerSm)
fna3d_64x128x32_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::kMinBlocksPerSm)
fna3d_32x128x64_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_64x64x64_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::kMinBlocksPerSm)
fna3d_64x128x64_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::kMinBlocksPerSm)
fna3d_32x128x128_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_64x64x128_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::kMinBlocksPerSm)
fna3d_64x128x128_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::kMinBlocksPerSm)
fna3d_32x128x65536_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::kMinBlocksPerSm)
fna3d_64x128x65536_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_64x64x65536_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_sm80_bfloat16_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 32>(), fna3d_32x128x32_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_64x64x32_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 32>(), fna3d_64x128x32_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 64>(), fna3d_32x128x64_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_64x64x64_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 64>(), fna3d_64x128x64_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 128>(), fna3d_32x128x128_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_64x64x128_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 128>(), fna3d_64x128x128_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 32, 128, 65536>(), fna3d_32x128x65536_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 128, 65536>(), fna3d_64x128x65536_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_64x64x65536_sm80_bfloat16_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm50_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm50_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm50_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm50_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm50_float32_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm50_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm50_float32_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm50_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm50_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm50_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm50_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm50_float32_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm50_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm50_float32_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm50_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm50_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm50_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm50_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm50_float16_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm50_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm50_float16_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm50_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm50_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm50_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm50_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm50_float16_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm50_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm50_float16_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm70_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm70_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm70_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm70_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm70_float32_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm70_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm70_float32_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm70_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm70_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm70_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm70_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm70_float32_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm70_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm70_float32_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm70_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm70_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm70_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna1d_backward_128x64x128_sm70_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm70_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_128x64x65536_sm70_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm70_float16_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna1d_backward_128x64x128_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm70_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna1d_backward_128x64x65536_sm70_float16_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm70_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm70_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm70_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna1d_backward_128x64x128_sm70_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm70_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_128x64x65536_sm70_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm70_float16_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna1d_backward_128x64x128_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm70_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna1d_backward_128x64x65536_sm70_float16_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm75_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm75_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm75_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm75_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm75_float32_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm75_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm75_float32_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm75_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm75_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm75_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm75_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm75_float32_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm75_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm75_float32_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm75_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm75_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm75_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm75_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm75_float16_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm75_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm75_float16_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm75_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm75_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm75_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm75_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm75_float16_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm75_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm75_float16_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm80_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm80_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm80_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna1d_backward_128x64x128_sm80_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm80_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_128x64x65536_sm80_float32_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm80_float32_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna1d_backward_128x64x128_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm80_float32_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna1d_backward_128x64x65536_sm80_float32_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm80_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm80_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm80_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna1d_backward_128x64x128_sm80_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm80_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_128x64x65536_sm80_float32_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm80_float32_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna1d_backward_128x64x128_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm80_float32_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna1d_backward_128x64x65536_sm80_float32_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm80_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm80_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm80_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna1d_backward_128x128x128_sm80_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm80_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_128x64x65536_sm80_float16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm80_float16_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna1d_backward_128x128x128_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm80_float16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna1d_backward_128x64x65536_sm80_float16_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm80_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm80_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm80_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna1d_backward_128x128x128_sm80_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm80_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_128x64x65536_sm80_float16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm80_float16_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna1d_backward_128x128x128_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm80_float16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna1d_backward_128x64x65536_sm80_float16_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna1d_backward_128x128x128_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_128x64x65536_sm80_bfloat16_cm_0(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm80_bfloat16_cm_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna1d_backward_128x128x128_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm80_bfloat16_cm_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna1d_backward_128x64x65536_sm80_bfloat16_cm_0);
}

///////////////////////////////////////////////////////////////////
// FNA-1D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna1d_backward_64x64x32_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna1d_backward_64x64x64_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna1d_backward_64x64x128_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna1d_backward_128x128x128_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_64x64x65536_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna1d_backward_128x64x65536_sm80_bfloat16_cm_1(typename FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna1d_backward_sm80_bfloat16_cm_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna1d_backward_64x64x32_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna1d_backward_64x64x64_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna1d_backward_64x64x128_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna1d_backward_128x128x128_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna1d_backward_64x64x65536_sm80_bfloat16_cm_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<1, CausalMask<true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna1d_backward_128x64x65536_sm80_bfloat16_cm_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm50_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm50_float32_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm50_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm50_float32_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm50_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm50_float32_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm50_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm50_float32_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm50_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm50_float32_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm50_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm50_float32_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm50_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm50_float32_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm50_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm50_float32_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm50_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm50_float16_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm50_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm50_float16_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm50_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm50_float16_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm50_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm50_float16_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm50_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm50_float16_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm50_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm50_float16_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm50_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm50_float16_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm50_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm50_float16_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm70_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm70_float32_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm70_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm70_float32_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm70_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm70_float32_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm70_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm70_float32_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm70_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm70_float32_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm70_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm70_float32_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm70_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm70_float32_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm70_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm70_float32_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna2d_backward_128x64x128_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm70_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm70_float16_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna2d_backward_128x64x128_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm70_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm70_float16_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna2d_backward_128x64x128_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm70_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm70_float16_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna2d_backward_128x64x128_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm70_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm70_float16_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna2d_backward_128x64x128_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm70_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm70_float16_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna2d_backward_128x64x128_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm70_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm70_float16_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna2d_backward_128x64x128_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm70_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm70_float16_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna2d_backward_128x64x128_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm70_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm70_float16_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm75_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm75_float32_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm75_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm75_float32_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm75_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm75_float32_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm75_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm75_float32_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm75_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm75_float32_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm75_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm75_float32_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm75_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm75_float32_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm75_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm75_float32_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm75_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm75_float16_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm75_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm75_float16_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm75_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm75_float16_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm75_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm75_float16_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm75_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm75_float16_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm75_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm75_float16_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm75_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm75_float16_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm75_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm75_float16_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna2d_backward_128x64x128_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_float32_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_float32_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna2d_backward_128x64x128_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_float32_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_float32_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna2d_backward_128x64x128_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_float32_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_float32_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna2d_backward_128x64x128_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_float32_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_float32_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna2d_backward_128x64x128_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_float32_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_float32_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna2d_backward_128x64x128_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_float32_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_float32_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna2d_backward_128x64x128_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_float32_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_float32_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna2d_backward_128x64x128_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_float32_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_float32_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna2d_backward_128x128x128_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_float16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_float16_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna2d_backward_128x128x128_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_float16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_float16_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna2d_backward_128x128x128_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_float16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_float16_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna2d_backward_128x128x128_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_float16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_float16_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna2d_backward_128x128x128_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_float16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_float16_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna2d_backward_128x128x128_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_float16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_float16_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna2d_backward_128x128x128_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_float16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_float16_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna2d_backward_128x128x128_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_float16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_float16_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna2d_backward_128x128x128_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_bfloat16_cm_0_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_bfloat16_cm_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna2d_backward_128x128x128_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_bfloat16_cm_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_bfloat16_cm_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna2d_backward_128x128x128_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_bfloat16_cm_0_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_bfloat16_cm_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna2d_backward_128x128x128_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_bfloat16_cm_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_bfloat16_cm_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna2d_backward_128x128x128_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_bfloat16_cm_1_0(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_bfloat16_cm_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna2d_backward_128x128x128_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_bfloat16_cm_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_bfloat16_cm_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-2D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna2d_backward_64x64x32_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna2d_backward_64x64x64_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna2d_backward_64x64x128_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna2d_backward_128x128x128_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_64x64x65536_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna2d_backward_128x64x65536_sm80_bfloat16_cm_1_1(typename FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna2d_backward_sm80_bfloat16_cm_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna2d_backward_64x64x32_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna2d_backward_64x64x64_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna2d_backward_64x64x128_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna2d_backward_128x128x128_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna2d_backward_64x64x65536_sm80_bfloat16_cm_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<2, CausalMask<true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna2d_backward_128x64x65536_sm80_bfloat16_cm_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float32_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float32_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float32_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float32_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float32_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float32_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float32_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float32_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float32_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float32_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float32_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float32_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float32_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float32_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float32_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float32_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float16_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float16_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float16_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float16_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float16_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float16_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float16_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float16_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float16_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float16_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float16_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float16_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float16_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float16_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM50Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm50_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm50_float16_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm50_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm50, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm50_float16_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float32_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float32_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float32_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float32_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float32_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float32_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float32_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float32_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float32_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float32_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float32_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float32_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float32_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float32_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float32_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float32_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm70_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float16_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm70_float16_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm70_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float16_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm70_float16_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm70_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float16_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm70_float16_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm70_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float16_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm70_float16_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm70_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float16_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm70_float16_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm70_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float16_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm70_float16_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm70_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float16_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm70_float16_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM70Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm70_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm70_float16_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm70_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm70, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm70_float16_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float32_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float32_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float32_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float32_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float32_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float32_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float32_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float32_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float32_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float32_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float32_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float32_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float32_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float32_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float32_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float32_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float16_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float16_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float16_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float16_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float16_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float16_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float16_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float16_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float16_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float16_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float16_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float16_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float16_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float16_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM75Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm75_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm75_float16_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm75_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm75, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm75_float16_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float32_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float32_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float32_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float32_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float32_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float32_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float32_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float32_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float32_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float32_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float32_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float32_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float32_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float32_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float32_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float32_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float32_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float32_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float32_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float32_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float32_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float32_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float32_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float32_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float32_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float32_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float32_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float32_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float32 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::kMinBlocksPerSm)
fna3d_backward_128x64x128_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float32_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float32_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 128>(), fna3d_backward_128x64x128_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float32_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, float, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float32_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float16_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float16_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float16_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float16_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float16_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float16_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float16_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float16_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float16_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float16_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float16_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float16_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float16_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float16_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / float16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_float16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_float16_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_float16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::half_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_float16_cm_1_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_bfloat16_cm_0_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_bfloat16_cm_0_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_bfloat16_cm_0_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_bfloat16_cm_0_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_bfloat16_cm_0_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_bfloat16_cm_0_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_bfloat16_cm_0_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_bfloat16_cm_0_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_bfloat16_cm_0_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_bfloat16_cm_0_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_bfloat16_cm_0_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_bfloat16_cm_0_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_bfloat16_cm_0_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_bfloat16_cm_0_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_bfloat16_cm_0_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<false, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_bfloat16_cm_0_1_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_bfloat16_cm_1_0_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_bfloat16_cm_1_0_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_bfloat16_cm_1_0_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_bfloat16_cm_1_0_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_bfloat16_cm_1_0_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_bfloat16_cm_1_0_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_bfloat16_cm_1_0_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, false, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_bfloat16_cm_1_0_1);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_bfloat16_cm_1_1_0(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_bfloat16_cm_1_1_0(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_bfloat16_cm_1_1_0);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, false>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_bfloat16_cm_1_1_0);
}

///////////////////////////////////////////////////////////////////
// FNA-3D / bfloat16 / SM80Backward Kernel
///////////////////////////////////////////////////////////////////

__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::kMinBlocksPerSm)
fna3d_backward_64x64x32_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::kMinBlocksPerSm)
fna3d_backward_64x64x64_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::kMinBlocksPerSm)
fna3d_backward_64x64x128_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::kMinBlocksPerSm)
fna3d_backward_128x128x128_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_64x64x65536_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>::Params p);


__global__ void __launch_bounds__(
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kNumThreads,
    FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::kMinBlocksPerSm)
fna3d_backward_128x64x65536_sm80_bfloat16_cm_1_1_1(typename FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>::Params p);


template <typename T>
void fna3d_backward_sm80_bfloat16_cm_1_1_1(T cb) {
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 32>(), fna3d_backward_64x64x32_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 64>(), fna3d_backward_64x64x64_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 128>(), fna3d_backward_64x64x128_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 128, 128>(), fna3d_backward_128x128x128_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 64, 64, 65536>(), fna3d_backward_64x64x65536_sm80_bfloat16_cm_1_1_1);
  cb(FusedNeighborhoodAttentionBackwardKernel<3, CausalMask<true, true, true>, cutlass::bfloat16_t, cutlass::arch::Sm80, true, 128, 64, 65536>(), fna3d_backward_128x64x65536_sm80_bfloat16_cm_1_1_1);
}

} // namespace natten 
} // namespace cuda 
} // namespace fna 

