mirror of
https://github.com/deepseek-ai/DeepEP.git
synced 2026-11-05 00:47:32 +00:00
[GH-ISSUE #526] Question about launch configs of normal kernels #338
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/DeepEP#338
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Strivin0311 on GitHub (Dec 19, 2025).
Original GitHub issue: https://github.com/deepseek-ai/DeepEP/issues/526
Hi~first of all, thank you for the amazing work !
I have some questions about the necessity of the launch configs for normal kernels.
I notice that for both
intranodeandinternodenormal kernels, you uses the same macroSETUP_LAUNCH_CONFIGto set thecudaLaunchAttributewith two attributes that affect computation and communication overlapping:cudaLaunchAttributeCooperative(cooperative = 1), which enforces all the blocks to be launched simultaneously, resulting in the SM margin value left by the computation (persistent) kernels to be at least as large as the number of SMs used by comm kernels (num_sms), with the constraint "one block per SM" mentioned in the previous issue.cudaLaunchAttributeClusterDimension(clusterDim.x = 2), which requires each pair of two SMs to be positioned in the same GPC, resulting in even larger SM margin value thannum_sms, since leaving exactnum_smsSMs still can not guarantee any GPC has left at least two SMs.However, I've walked through the souce code of normal kernels, but found it a block-level kernel without the usage of any cluster features (e.g.
cg::this_grid().syncor distributed shared memory), except for the TMA multicast used intma_load_1d(and if I overlooked something, please point me to it).It is generally admitted that SM margin seems too expensive to be set with a large value, especially quite a waste for the timeline range when the overlapped comm kernel is finished but the computation kernel has not.
And from my experience, NCCL only requires a small value of SM margin (
4~8) to be fully overlapped with the computation kernel (while NCCL has incorporated CGA to leverage cluster capabilities since version 2.16, settingNCCL_CGA_CLUSTER_SIZE=1is acceptable and still delivers excellent performance.).Therefore, I wonder the necessity to attach these two kernels with two aggressive attributes above:
Looking forward to your insights !