接口功能:完成因果一维卷积(Causal Conv1d)的前向计算(prefill / chunk-prefill)。算子内部支持 SiLU 激活、缓存索引(cacheIndices)、初始状态模式(initialStateMode)等特性。
支持以下场景:
场景一(prefill场景 — 固定batch):
[object Object]场景二(prefill场景 — 变长序列):
[object Object]其中cuSeqLen为batch内所有变长序列拼接后的总长度。
计算公式:
Causal Conv1d 是一种因果一维卷积算子,常用于序列建模中。在每个时间步 ,根据当前输入 、卷积权重 和历史状态,计算卷积输出 。
其中, 为卷积核宽度(支持2、3、4), 为卷积权重, 为偏置(可选), 为激活函数(可选,SiLU)。当
[object Object]时不使用激活函数,[object Object]时使用 SiLU 激活函数。对于 且无历史状态时,输出为零(因果约束)。
每个算子分为,必须先调用 [object Object] 接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用 [object Object] 接口执行计算。
[object Object]
[object Object]
确定性计算:
- aclnnCausalConv1dFn默认确定性实现。
输入shape限制:
- prefill场景(固定batch):
- x为3维[batch, seqLen, dim],seqLen > 1。
- weight为2维[K, dim],K∈{2,3,4}。
- convStatesRef为3维[numCacheLines, stateLen, dim],stateLen ≥ K-1,numCacheLines ≥ batch。
- dim范围[64, 16384]且满足 (dim * dtypeSize) % 32 == 0,batch范围[1, 1024],seqLen范围[2, 16384]。
- prefill场景(变长序列):
- x为2维[cuSeqLen, dim]。
- queryStartLocOptional为1维[batch+1],必须提供。
- convStatesRef为3维[numCacheLines, stateLen, dim],numCacheLines ≥ batch。
- cuSeqLen范围[batch, 1024×1024]。
- prefill场景(固定batch):
输入值域限制:
- queryStartLocOptional[0]必须为0,queryStartLocOptional[-1]必须等于cuSeqLen,值必须非递减。
- cacheIndicesOptional中的值∈[0, numCacheLines),或等于nullBlockId表示跳过。nullBlockId可重复;除nullBlockId外的值不应重复,否则多个序列读写同一缓存槽位会导致历史状态错误和写入冲突。
- initialStateModeOptional值∈{0,1}。
卷积核宽度K仅支持2、3、4。
K为编译时已知常量,支持FnRolling快速路径优化。
当存在initialStateModeOptional输入时,算子需要额外的workspace用于初始状态快照。
[object Object]