A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 15, 22:15 UTC
[Kernel][Build/CI] Bump CUTLASS to 3.8 and add initializers for cutlass epilogues (#13797)
Henry Tsang committed
Feb 25, 2025 at 18:52 UTC
094b7d9496ccbdcb15bafbdab0083e54734da2d6
3 files changed
+33
-29
CMakeLists.txt
+4
-4
@@ -266,7 +266,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
266
cutlass
267
GIT_REPOSITORY https://github.com/nvidia/cutlass.git
268
# Please keep this in sync with CUTLASS_REVISION line above.
269
- GIT_TAG v3.7.0
269
+ GIT_TAG v3.8.0
270
GIT_PROGRESS TRUE
271
272
# Speed up CUTLASS download by retrieving only the specified GIT_TAG instead of the history.
@@ -321,7 +321,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
321
# CUDA 12.0 or later (and only work on Hopper, 9.0a for now).
322
cuda_archs_loose_intersection(SCALED_MM_3X_ARCHS "9.0a" "${CUDA_ARCHS}")
323
if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER 12.0 AND SCALED_MM_3X_ARCHS)
324
- set(SRCS
324
+ set(SRCS
325
"csrc/quantization/cutlass_w8a8/scaled_mm_c3x.cu"
326
"csrc/quantization/cutlass_w8a8/c3x/scaled_mm_sm90_fp8.cu"
327
"csrc/quantization/cutlass_w8a8/c3x/scaled_mm_sm90_int8.cu"
@@ -401,7 +401,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
401
# FP4 Archs and flags
402
cuda_archs_loose_intersection(FP4_ARCHS "10.0a" "${CUDA_ARCHS}")
403
if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER 12.8 AND FP4_ARCHS)
404
- set(SRCS
404
+ set(SRCS
405
"csrc/quantization/fp4/nvfp4_quant_kernels.cu"
406
"csrc/quantization/fp4/nvfp4_scaled_mm_kernels.cu"
407
)
@@ -612,7 +612,7 @@ endif()
612
613
if(VLLM_FLASH_ATTN_SRC_DIR)
614
FetchContent_Declare(
615
- vllm-flash-attn SOURCE_DIR
615
+ vllm-flash-attn SOURCE_DIR
616
${VLLM_FLASH_ATTN_SRC_DIR}
617
BINARY_DIR ${CMAKE_BINARY_DIR}/vllm-flash-attn
618
)
csrc/cutlass_extensions/epilogue/scaled_mm_epilogues_c2x.hpp
+14
-12
@@ -122,8 +122,8 @@ struct ScaledEpilogue
122
auto a_args = SUPER::template args_from_tensor<ScaleA, float>(a_scales);
123
auto b_args = SUPER::template args_from_tensor<ScaleB, float>(b_scales);
124
125
- typename EVTCompute0::Arguments evt0_args{b_args};
126
- return ArgumentType{a_args, evt0_args};
125
+ typename EVTCompute0::Arguments evt0_args{b_args, {}, {}};
126
+ return ArgumentType{a_args, evt0_args, {}};
127
}
128
};
129
@@ -167,8 +167,8 @@ struct ScaledEpilogueBias
167
auto b_args = SUPER::template args_from_tensor<ScaleB, float>(b_scales);
168
auto bias_args = SUPER::template args_from_tensor<Bias, ElementD>(bias);
169
170
- typename EVTCompute0::Arguments evt0_args{b_args};
171
- return ArgumentType{a_args, evt0_args, bias_args};
170
+ typename EVTCompute0::Arguments evt0_args{b_args, {}, {}};
171
+ return ArgumentType{a_args, evt0_args, bias_args, {}};
172
}
173
};
174
@@ -230,9 +230,10 @@ struct ScaledEpilogueBiasAzp
230
auto azp_adj_args =
231
SUPER::template args_from_tensor<AzpWithAdj, int32_t>(azp_adj);
232
233
- typename EVTComputeAzp::Arguments evt_azp_args{{}, azp_adj_args};
234
- typename EVTComputeScaleB::Arguments evt_scale_b_args{b_args, evt_azp_args};
235
- return ArgumentType{a_args, evt_scale_b_args, bias_args};
233
+ typename EVTComputeAzp::Arguments evt_azp_args{{}, azp_adj_args, {}};
234
+ typename EVTComputeScaleB::Arguments evt_scale_b_args{
235
+ b_args, evt_azp_args, {}};
236
+ return ArgumentType{a_args, evt_scale_b_args, bias_args, {}};
237
}
238
};
239
@@ -309,11 +310,12 @@ struct ScaledEpilogueBiasAzpToken
310
auto azp_adj_args =
311
SUPER::template args_from_tensor<AzpAdj, int32_t>(azp_adj);
312
312
- typename EVTComputeAzp::Arguments evt_azp_args{azp_args, azp_adj_args};
313
- typename EVTComputeAcc::Arguments evt_acc_args{{}, evt_azp_args};
314
- typename EVTComputeScaleB::Arguments evt_scale_b_args{b_args, evt_acc_args};
315
- return ArgumentType{a_args, evt_scale_b_args, bias_args};
313
+ typename EVTComputeAzp::Arguments evt_azp_args{azp_args, azp_adj_args, {}};
314
+ typename EVTComputeAcc::Arguments evt_acc_args{{}, evt_azp_args, {}};
315
+ typename EVTComputeScaleB::Arguments evt_scale_b_args{
316
+ b_args, evt_acc_args, {}};
317
+ return ArgumentType{a_args, evt_scale_b_args, bias_args, {}};
318
}
319
};
320
319
-}; // namespace vllm::c2x
\ No newline at end of file
321
+}; // namespace vllm::c2x
csrc/cutlass_extensions/epilogue/scaled_mm_epilogues_c3x.hpp
+15
-13
@@ -146,8 +146,8 @@ struct ScaledEpilogue
146
auto a_args = SUPER::template args_from_tensor<ScaleA, float>(a_scales);
147
auto b_args = SUPER::template args_from_tensor<ScaleB, float>(b_scales);
148
149
- typename EVTCompute0::Arguments evt0_args{b_args};
150
- return ArgumentType{a_args, evt0_args};
149
+ typename EVTCompute0::Arguments evt0_args{b_args, {}, {}};
150
+ return ArgumentType{a_args, evt0_args, {}};
151
}
152
};
153
@@ -193,8 +193,8 @@ struct ScaledEpilogueBias
193
auto b_args = SUPER::template args_from_tensor<ScaleB, float>(b_scales);
194
auto bias_args = SUPER::template args_from_tensor<Bias, ElementD>(bias);
195
196
- typename EVTCompute0::Arguments evt0_args{b_args};
197
- return ArgumentType{a_args, evt0_args, bias_args};
196
+ typename EVTCompute0::Arguments evt0_args{b_args, {}, {}};
197
+ return ArgumentType{a_args, evt0_args, bias_args, {}};
198
}
199
};
200
@@ -236,8 +236,8 @@ struct ScaledEpilogueColumnBias
236
auto b_args = SUPER::template args_from_tensor<ScaleB, float>(b_scales);
237
auto bias_args = SUPER::template args_from_tensor<Bias, ElementD>(bias);
238
239
- typename EVTCompute0::Arguments evt0_args{b_args};
240
- return ArgumentType{a_args, evt0_args, bias_args};
239
+ typename EVTCompute0::Arguments evt0_args{b_args, {}, {}};
240
+ return ArgumentType{a_args, evt0_args, bias_args, {}};
241
}
242
};
243
@@ -297,9 +297,10 @@ struct ScaledEpilogueBiasAzp
297
auto azp_adj_args =
298
SUPER::template args_from_tensor<AzpWithAdj, int32_t>(azp_adj);
299
300
- typename EVTComputeAzp::Arguments evt_azp_args{{}, azp_adj_args};
301
- typename EVTComputeScaleB::Arguments evt_scale_b_args{b_args, evt_azp_args};
302
- return ArgumentType{a_args, evt_scale_b_args, bias_args};
300
+ typename EVTComputeAzp::Arguments evt_azp_args{{}, azp_adj_args, {}};
301
+ typename EVTComputeScaleB::Arguments evt_scale_b_args{
302
+ b_args, evt_azp_args, {}};
303
+ return ArgumentType{a_args, evt_scale_b_args, bias_args, {}};
304
}
305
};
306
@@ -374,10 +375,11 @@ struct ScaledEpilogueBiasAzpToken
375
auto azp_adj_args =
376
SUPER::template args_from_tensor<AzpAdj, int32_t>(azp_adj);
377
377
- typename EVTComputeAzp::Arguments evt_azp_args{azp_args, azp_adj_args};
378
- typename EVTComputeAcc::Arguments evt_acc_args{{}, evt_azp_args};
379
- typename EVTComputeScaleB::Arguments evt_scale_b_args{b_args, evt_acc_args};
380
- return ArgumentType{a_args, evt_scale_b_args, bias_args};
378
+ typename EVTComputeAzp::Arguments evt_azp_args{azp_args, azp_adj_args, {}};
379
+ typename EVTComputeAcc::Arguments evt_acc_args{{}, evt_azp_args, {}};
380
+ typename EVTComputeScaleB::Arguments evt_scale_b_args{
381
+ b_args, evt_acc_args, {}};
382
+ return ArgumentType{a_args, evt_scale_b_args, bias_args, {}};
383
}
384
};
385