Skip to content

Commit 094b7d9

Browse files
authored
[Kernel][Build/CI] Bump CUTLASS to 3.8 and add initializers for cutlass epilogues (#13797)
1 parent e1fe759 commit 094b7d9

File tree

3 files changed

+33
-29
lines changed

3 files changed

+33
-29
lines changed

CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
266266
cutlass
267267
GIT_REPOSITORY https://github.com/nvidia/cutlass.git
268268
# Please keep this in sync with CUTLASS_REVISION line above.
269-
GIT_TAG v3.7.0
269+
GIT_TAG v3.8.0
270270
GIT_PROGRESS TRUE
271271

272272
# 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")
321321
# CUDA 12.0 or later (and only work on Hopper, 9.0a for now).
322322
cuda_archs_loose_intersection(SCALED_MM_3X_ARCHS "9.0a" "${CUDA_ARCHS}")
323323
if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER 12.0 AND SCALED_MM_3X_ARCHS)
324-
set(SRCS
324+
set(SRCS
325325
"csrc/quantization/cutlass_w8a8/scaled_mm_c3x.cu"
326326
"csrc/quantization/cutlass_w8a8/c3x/scaled_mm_sm90_fp8.cu"
327327
"csrc/quantization/cutlass_w8a8/c3x/scaled_mm_sm90_int8.cu"
@@ -401,7 +401,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
401401
# FP4 Archs and flags
402402
cuda_archs_loose_intersection(FP4_ARCHS "10.0a" "${CUDA_ARCHS}")
403403
if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER 12.8 AND FP4_ARCHS)
404-
set(SRCS
404+
set(SRCS
405405
"csrc/quantization/fp4/nvfp4_quant_kernels.cu"
406406
"csrc/quantization/fp4/nvfp4_scaled_mm_kernels.cu"
407407
)
@@ -612,7 +612,7 @@ endif()
612612

613613
if(VLLM_FLASH_ATTN_SRC_DIR)
614614
FetchContent_Declare(
615-
vllm-flash-attn SOURCE_DIR
615+
vllm-flash-attn SOURCE_DIR
616616
${VLLM_FLASH_ATTN_SRC_DIR}
617617
BINARY_DIR ${CMAKE_BINARY_DIR}/vllm-flash-attn
618618
)

csrc/cutlass_extensions/epilogue/scaled_mm_epilogues_c2x.hpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ struct ScaledEpilogue
122122
auto a_args = SUPER::template args_from_tensor<ScaleA, float>(a_scales);
123123
auto b_args = SUPER::template args_from_tensor<ScaleB, float>(b_scales);
124124

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, {}};
127127
}
128128
};
129129

@@ -167,8 +167,8 @@ struct ScaledEpilogueBias
167167
auto b_args = SUPER::template args_from_tensor<ScaleB, float>(b_scales);
168168
auto bias_args = SUPER::template args_from_tensor<Bias, ElementD>(bias);
169169

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, {}};
172172
}
173173
};
174174

@@ -230,9 +230,10 @@ struct ScaledEpilogueBiasAzp
230230
auto azp_adj_args =
231231
SUPER::template args_from_tensor<AzpWithAdj, int32_t>(azp_adj);
232232

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, {}};
236237
}
237238
};
238239

@@ -309,11 +310,12 @@ struct ScaledEpilogueBiasAzpToken
309310
auto azp_adj_args =
310311
SUPER::template args_from_tensor<AzpAdj, int32_t>(azp_adj);
311312

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, {}};
316318
}
317319
};
318320

319-
}; // namespace vllm::c2x
321+
}; // namespace vllm::c2x

csrc/cutlass_extensions/epilogue/scaled_mm_epilogues_c3x.hpp

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ struct ScaledEpilogue
146146
auto a_args = SUPER::template args_from_tensor<ScaleA, float>(a_scales);
147147
auto b_args = SUPER::template args_from_tensor<ScaleB, float>(b_scales);
148148

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, {}};
151151
}
152152
};
153153

@@ -193,8 +193,8 @@ struct ScaledEpilogueBias
193193
auto b_args = SUPER::template args_from_tensor<ScaleB, float>(b_scales);
194194
auto bias_args = SUPER::template args_from_tensor<Bias, ElementD>(bias);
195195

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, {}};
198198
}
199199
};
200200

@@ -236,8 +236,8 @@ struct ScaledEpilogueColumnBias
236236
auto b_args = SUPER::template args_from_tensor<ScaleB, float>(b_scales);
237237
auto bias_args = SUPER::template args_from_tensor<Bias, ElementD>(bias);
238238

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, {}};
241241
}
242242
};
243243

@@ -297,9 +297,10 @@ struct ScaledEpilogueBiasAzp
297297
auto azp_adj_args =
298298
SUPER::template args_from_tensor<AzpWithAdj, int32_t>(azp_adj);
299299

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, {}};
303304
}
304305
};
305306

@@ -374,10 +375,11 @@ struct ScaledEpilogueBiasAzpToken
374375
auto azp_adj_args =
375376
SUPER::template args_from_tensor<AzpAdj, int32_t>(azp_adj);
376377

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, {}};
381383
}
382384
};
383385

0 commit comments

Comments
 (0)