setup.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """Build vLLM's _flashkda_C from a FlashKDA checkout, outside vLLM's cmake.
  2. Mirrors cmake/external_projects/flashkda.cmake for one arch (12.0f, CUDA 13).
  3. Expects ./flashkda (FlashKDA with its cutlass submodule) and ./vllm-csrc
  4. (vLLM's flashkda_registration.cpp and core/registration.h) beside it.
  5. """
  6. from pathlib import Path
  7. from setuptools import setup
  8. from torch.utils.cpp_extension import BuildExtension, CUDAExtension
  9. # ninja compiles from its own build directory, so includes must be absolute.
  10. HERE = Path(__file__).resolve().parent
  11. K = HERE / "flashkda"
  12. setup(
  13. name="flashkda_c",
  14. ext_modules=[
  15. CUDAExtension(
  16. "_flashkda_C",
  17. sources=[
  18. "vllm-csrc/flashkda_registration.cpp",
  19. f"{K}/csrc/flash_kda.cpp",
  20. f"{K}/csrc/smxx/fwd_launch.cu",
  21. ],
  22. include_dirs=[
  23. f"{HERE}/vllm-csrc",
  24. f"{K}/csrc",
  25. f"{K}/cutlass/include",
  26. f"{K}/cutlass/examples/common",
  27. f"{K}/cutlass/tools/util/include",
  28. ],
  29. define_macros=[
  30. ("USE_CUDA", None),
  31. ("TORCH_TARGET_VERSION", "0x020B000000000000ULL"),
  32. ],
  33. extra_compile_args={
  34. "cxx": ["-O3"],
  35. "nvcc": [
  36. "-O3",
  37. "--use_fast_math",
  38. "--expt-relaxed-constexpr",
  39. "--expt-extended-lambda",
  40. "-gencode=arch=compute_120f,code=sm_120f",
  41. # torch adds these; vLLM's cmake removes them, and so does this.
  42. "-U__CUDA_NO_HALF_OPERATORS__",
  43. "-U__CUDA_NO_HALF_CONVERSIONS__",
  44. "-U__CUDA_NO_BFLOAT16_CONVERSIONS__",
  45. "-U__CUDA_NO_HALF2_OPERATORS__",
  46. ],
  47. },
  48. )
  49. ],
  50. cmdclass={"build_ext": BuildExtension},
  51. )