subgroupExclusiveMul
subgroupExclusiveMul
对“子组(subgroup)”内的活动调用做排他前缀乘积:返回所有 subgroup_invocation_id 小于当前调用的 e 值之乘积;首个调用返回乘法单位元 1。
核心优势
一行代码获得硬件级并行的前缀扫描(乘法),适合在子组内构建累乘权重/遮罩等运算;TSL 封装为节点且参数个数固定为 1。
常见用途
在同一子组内构建累乘权重/遮罩(如级联透明度或衰减链)。
对分段/分桶后的数据做前缀积以生成累积尺度或亮度。
配合 subgroupBroadcast / 其它 subgroup 扫描/归约函数构建并行流水线。
如何调整
该函数只有一个输入参数 e(通常为 float)。它要求运行平台支持 GPU 子组特性;首个调用返回 1。若需包含当前值,请改用相应的“包含式(inclusive)”扫描。
代码示例
1/* 计算同一子组内的排他前缀乘积(不含当前线程的 w) */
2const w = saturate( weight );
3const prefixMul = subgroupExclusiveMul( w );
4// 可将 prefixMul 用作级联透明度、能量衰减等的累乘基数
5