* [feat] add an example mma atom
* [fix] fix typo naming
* [feat] add a template to enable compilation
* [feat] add print util
* [WIP] pass on single block tile
* [feat] add sm80 metadata layout
* [chore] clean codebase
* [CI] format.sh
* [feat] add sm80 compress utils
* [bugfix] fix C fragment layout
* [refactor] use nvcc version instead of str
* [test] add test cases
* [chore] add a param check
* [chore] format a bit
* [chore] rename func to satisfy PEP 8 and appease gemini
* [chore] add check
* [feat] support sm75 layout && add assertion && chore
* [bug] fix illegal memory access when using two warps over N=32
This could be a missing check related to cutlass 2.x implementation.
Using the cutlass example can't trigger this cause it's bypassed by
padding the input.
For now I think it might be safe to increase the atom size and inve-
sgate in the future.
* [chore] add example
* [chore] format
* [example] update benchmark
* [bugfix] fix namespace and format
* [bugfix] fix incorrect param passing
* [refactor] update variable declaration for clarity in gemm_layouts and gemm_sp
* [Cleanup] Remove unnecessary blank lines in metadata layout functions in gemm_sp.py
* [CI] fix arch
* [example] add torch sparse benchmark
* [misc] polish && add reference && apply review suggestionsi && format
* [CI] format with clang-tidy
* [Cleanup] Format and align template struct definitions in half.hpp, common.h, and gemm_sp_sm80.h
* [Update] Modify CUDA version requirements in test_gemm_sp_sm80 and mark cutlass subproject as dirty
---------
Co-authored-by: LeiWang1999 <leiwang1999@outlook.com>
* [experimental] add a draft gemm_sp
* [3rdparty] bump cutlass to v3.9.3
* [lint] run format.sh
* [chore] rebase
* [chore] use abs path
* [gemm_sp] add metadata layout
* [ci] add more example
* [lint] run format.sh
* [chore] polish
* [chore] move gemm_sp to experimental
* [chore] polish
* [lint] run format.sh
* [Enhancement] Improve bulk copy handling and update GEMM sparse tensor test
* Added a warning log for unsupported non-swizzled global layouts in the bulk copy operation, ensuring fallback to normal copy.
* Refactored the GEMM sparse tensor test by removing unnecessary imports and simplifying the kernel compilation process.
* Updated the test to directly call the `run_gemm_sp` function, enhancing clarity and functionality.
* Implement Test
* [Enhancement] Update GEMM SP and SM89 templates for improved functionality
* Refactored GEMM SP computation to enhance warp partitioning logic, ensuring compatibility with Hopper architecture.
* Updated layout inference to support new WGMMA conditions and improved error messaging for unsupported targets.
* Modified SM89 templates to utilize new MMA atom structures, enhancing performance and compatibility with fp8 types.
* Added conditional inclusion for GEMM SP header based on CUDA architecture version.
* lint fix
* [gemm_sp] support more layout and data types
* Enhancement: sync T.gemm_sp's layout inference with T.gemm
* Enhancement: support more block_k in compress util
* [Enhancement] enable block_k=64
* [Lint] run format.sh
* [Enhancement] compressor support more dtype
* Enhancement: enable block_K=32
* [Lint] format.sh
* [Fixbug] fix shape
* Refactor: sync gemm
* [Enhancement] enable transpose
* [Enhancement] enable fp8_e4m3
* [Enhancement] enable int8
* [Lint] run format.sh
* [Benchmark] add gemm_sp benchmark
* [Example] fix 256 threads hang
* [CI] fix ci
* [Chore] resolve gemini feedback
* [Benchmark] increase search space
* [Lint] format
* [CI] skip sparse tensor core related tests as only sm90 is supported
* [CI] pass local run
* Update gemm_sm89.h
* lint fix
* lint fix
* [Enhancement] Add support for sparse GEMM and initialize CUDA architecture flags
- Introduced a new boolean flag `enable_sparse_gemm_` to control the inclusion of sparse GEMM functionality in CUDA code generation.
- Updated the `Finish` method to conditionally include the sparse GEMM header based on the new flag.
- Implemented logic in `VisitStmt_` to enable sparse GEMM when the corresponding external call is detected.
- Added a function to initialize the `TORCH_CUDA_ARCH_LIST` environment variable based on the target compute version, enhancing compatibility with PyTorch.
- Refactored the initialization function into the appropriate module and ensured it is called in the sparse utilities module.
* Update test_compress_utils.py
---------
Co-authored-by: LeiWang1999 <leiwang1999@outlook.com>
Co-authored-by: Lei Wang <34334180+LeiWang1999@users.noreply.github.com>