You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CUDA动态共享内存:核属性与核调用参数的设置优先级疑问

CUDA动态共享内存设置的优先级问题
  • 核心结论:cuLaunchKernel里的sharedMemBytes参数优先级更高,它直接决定核函数调用时每个线程块实际使用的动态共享内存大小,而cuFuncSetAttribute设置的CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES只是限定了允许使用的最大值。
  • 两者的作用差异:
    • cuFuncSetAttribute的作用是给核函数定一个“使用上限”——后续所有调用该核函数时,sharedMemBytes的值不能超过这个上限,否则会触发调用错误。
    • cuLaunchKernel的sharedMemBytes是实际分配的大小,只要这个值不超过之前设定的上限,就会按该值分配,完全不受属性里最大值的约束(属性仅限制用量不能超标,而非强制使用最大值)。
  • 实际场景示例:
    1. 先调用cuFuncSetAttribute把核函数的动态共享内存上限设为16KB。
    2. 第一次启动核时,sharedMemBytes设为8KB,此时每个线程块会分配8KB动态共享内存,正常运行。
    3. 如果某次启动核时把sharedMemBytes设为20KB,超过了16KB的上限,这次调用就会失败并返回错误码。

内容的提问来源于stack exchange,提问作者msedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 20:43:13