muDNN C++ API 参考
| 成员 | 说明 |
|---|---|
namespace musa::dnn | |
struct musa::dnn::Convolution::FusedActivationDesc | 融合激活描述:模式(IDENTITY/RELU 等)与系数 (activAlpha, activBeta, activGamma) |
namespace musa::dnn
概览
| 成员 | 说明 |
|---|---|
enum Status | 库调用返回状态枚举。 |
public MUDNN_EXPORT Status SetCallBack(DebugInfo::Severity min, void * udata, CallBack f) | 设置全局调试回调。 |
public MUDNN_EXPORT void PrintVersionInfo(::std::ostream & os) | 将库版本信息(如版本号、构建信息等)输出到指定流。 |
public MUDNN_EXPORT size_t GetVersion() | 获取库版本号(通常为单一数值,如编码后的 major.minor.patch)。 |
class musa::dnn::BatchMatMul | 批量矩阵乘:每批独立计算 d = alpha * a * b + beta * c + gamma * bias,支持 stride、RunLt 低精度与 MatMulLtParam。 |
class musa::dnn::BatchNorm | 批归一化算子:out = (in - mean) / sqrt(var + epsilon) * scale + bias。 |
class musa::dnn::Binary | 二元算子描述符:对两个张量逐元素运算,遵循 NumPy 广播规则。 |
class musa::dnn::Concat | 沿 指定轴拼接多张量的算子。 |
class musa::dnn::Convolution | 卷积算子:前向、融合(bias+add+激活)、反向数据、反向权值,支持 group、pad/stride/dilation、算法选择与 FusedActivationDesc。 |
class musa::dnn::CrossEntropyLoss | 交叉熵损失:结合 log_softmax 与 NLL,支持 label_smoothing、ignore_index、weight 与归约模式。 |
class musa::dnn::CTCLoss | CTC 损失(Connectionist Temporal Classification):用于序列标注,支持前向与反向、blank、loss 归一化等选项。 |
class musa::dnn::Cum | 累积运算(CumSum/CumProd 等):沿指定维度做前缀和/积,支持初始值。 |
class musa::dnn::DebugInfo | 调试/日志信息结构,在回调中传递给用户,包含时间、设备、句柄等。 |
class musa::dnn::DeformableConv | 可变形卷积:Deformable Conv2d(无 mask)与 Modulate Deformable Conv2d(含 mask),支持 offset、mask、groups、deformable_groups。 |
class musa::dnn::Dot | 张量点积/批量矩阵乘(Dot):沿指定轴对 a、b 做矩阵乘,支持 bias 加项与确定性模式。 |
class musa::dnn::Dropout | Dropout:训练时按概率 p 将元素置零并缩放,支持 mask 输出、种子与偏移。 |
class musa::dnn::Fill | 用常量填充张量的算子,可选 mask 指定填充区域。 |
class musa::dnn::GatherX | Gather 算子:根据 index 张量从 in 中沿 axis Gather 到 out,支持 batch_dims 与多种模式。 |
class musa::dnn::Glu | GLU(Gated Linear Unit):沿 axis 将输入切半,做 sigmoid 门控后逐元素乘。 |
class musa::dnn::GroupedMatMul | 分组矩阵乘:每组独立计算 d[i] = alpha * a[i] * b[i] + beta * c[i] + gamma * bias[i],支持每组不同 m/n/k/ld,以及 RunLt 与 GroupGemmParam。 |
class musa::dnn::GroupGemmParam | 分组 GEMM 参数:Mask 模式或按专家 token 计数/起始的连续模式(MoE 等)。 |
class musa::dnn::GroupNorm | 组归一化:在指定轴上分组,组内做归一化,out = (in - mean) / sqrt(var + eps) * gamma + beta。 |
class musa::dnn::Handle | muDNN 设备句柄,绑定到 MUSA 设备与流,所有算子执行均需通过 Handle。 |
class musa::dnn::ImplBase | 实现对象基类,持有底层 C 实现指针,供子类与 C API 交互。 |
class musa::dnn::Interpolate | 插值算子:NEAREST/NEAREST_EXACT/LINEAR/BICUBIC 等,支持 scale、align_corners、antialias。 |
class musa::dnn::KLDivLoss | KL 散度损失:输入与目标之间的 KL 散度,支持 log_target、归约模式与反向。 |
class musa::dnn::L2Loss | L2 损失:out = sum(in^2) / 2(或按元素),需工作区。 |
class musa::dnn::LayerNorm | 层归一化:在指定轴上计算均值和方差,out = (in - mean) / sqrt(var + eps) * gamma + beta。 |
class musa::dnn::LocalResponseNorm | 局部响应归一化(LRN):在通道/空间邻域上做归一化,常用 n, alpha, beta, k 四个参数。 |
class musa::dnn::MaskedScatter | 按 mask 将 source 中的值散布到 out 中(mask 为真的位置从 source 取)。 |
class musa::dnn::MaskedSelect | 按 mask 从 input 中选择元素写入 out(压缩为一维或保持结构由实现决定)。 |
class musa::dnn::MatMul | 矩阵乘(MatMul):d = alpha * a * b + beta * c + gamma * bias,支持转置、alpha/beta/gamma、工作区与显式维度/leading dimension。 |
class musa::dnn::MatMulLtParam | 低精度/量化 MatMul 的尾处理与缩放参数:epilogue 模式、scale_a/b/c/d、aux、amax_d、atomic_sync 等。 |
class musa::dnn::MatrixBase | 矩阵运算计算模式基类(如默认精度、TF32 等),仅用于继承。 |
class musa::dnn::MultiHeadAttention | 多头注意力:Q/K/V 线性变换 + 缩放点积注意力 + 输出线性,支持 mask 模式、key 格式、训练/推理、前向与反向及工作区查询。 |
class musa::dnn::NLLLoss | 负对数似然损失(NLL):与 log_softmax 配合用于分类,支持 ignore_index、weight、归约模式。 |
class musa::dnn::Nonzero | 返回 in 中非零元素的索引(坐标),输出形状为 (ndim, num_nonzero)。 |
class musa::dnn::Pad | 填充算子:在边界按 pad 与 mode 填充,支持常量填充值。 |
class musa::dnn::Permute | 张量维置换与切片算子:通过 ConfigDimStride 配置置换,通过 ConfigDimStrideForSlice 配置切片。 |
class musa::dnn::Pooling | 池化算子:Max/Avg 等,支持 kernel/pad/stride/dilation、divisor、indices 输出与反向。 |
class musa::dnn::Reduce | 归约算子:沿指定维度做 sum/max/min/mean 等,支持 argmax/argmin、带索引输出等。 |
class musa::dnn::RMSNorm | RMS 归一化:out = in / sqrt(mean(in^2) + eps) * gamma,无 beta,无均值输出。 |
class musa::dnn::RNN | RNN/LSTM/GRU 等循环网络:支持 SEQ_FIRST 格式、BiasMode、Direction、PackPadded/PadPacked 与反向。 |
class musa::dnn::Rope | |
class musa::dnn::ScaledDotProductAttention | 缩放点积注意力:Flash / FlashVarlen / Math 三种实现,支持 mask、causal、dropout、logsumexp、变长序列 cu_seqlens。 |
class musa::dnn::Scan | |
class musa::dnn::Scatter | Scatter:根据 idx 与 dim 将 update 散布到 self 或 out(inplace 与 outplace 两种 Run)。 |
class musa::dnn::ScatterND | 多维 Scatter:根据多维索引 idx 将 update 散布到 self(索引为多维坐标)。 |
class musa::dnn::Softmax | Softmax 算子:沿指定维度做 softmax,支持多种算法与模式、前向/反向及工作区查询。 |
class musa::dnn::Sort | 排序算子:沿 dim 对 in 排序,输出排序后的 out 与索引 indices;支持稳定排序与升/降序。 |
class musa::dnn::SortByKey | 按 key 排序:根据 key_in 对 key_in/value_in 一起排序,输出 key_out/value_out;当前仅支持升序、全量排序。 |
class musa::dnn::SwiGlu | SwiGLU:Swish 门控线性单元,前向与反向。 |
class musa::dnn::Tensor | 多维张量描述符,描述数据地址、类型、格式、维度与步长,用于所有算子的输入输出。 |
class musa::dnn::TensorBase | 张量数据类型与格式的基类,仅用于继承,不直接实例化。 |
class musa::dnn::Ternary | 三元算子描述符:对三个张量逐元素运算,支持 alpha/beta/gamma 缩放。 |
class musa::dnn::TopK | TopK:沿 dim 取最大或最小的 k 个元素及索引,支持 sorted、largest。 |
class musa::dnn::Unary | 一元算子描述符:对单张量逐元素运算(如激活、取反等),支持 alpha/beta 缩放。 |
class musa::dnn::Unfold | Unfold(滑动窗口展开):沿 axis 以 size 为窗口、step 为步长展开为多块。 |
class musa::dnn::Unique | Unique:去重,输出唯一值、逆索引与计数;支持多种 Mode。 |
class musa::dnn::WeightNorm | 权重归一化:沿指定轴对 weight 做归一化,weightV/weightG 为分解后的向量与标量。 |
成员
enum Status
库调用返回状态枚举。
枚举值含义:
-
SUCCESS: 调用成功
-
INVALID_PARAMETER: 无效参数
-
NOT_INITIALIZED: 未初始化
-
ALLOC_FAILED: 内存分配失败
-
NOT_SUPPORTED: 不支持的操作或配置
-
INTERNAL_ERROR: 内部错误
-
ARCH_MISMATCH: 架构不匹配
-
EXECUTION_FAILED: 执行失败
public MUDNN_EXPORT Status SetCallBack(DebugInfo::Severity min, void * udata, CallBack f)
设置全局调试回调。
参数
-
min仅触发严重级别 >= min 的消息 -
udata传递给回调的 user_data 指针 -
f回调函数;传空函数则恢复默认(输出到 cerr)
返回值
设置结果状态
public MUDNN_EXPORT void PrintVersionInfo(::std::ostream & os)
将库版本信息(如版本号、构建信息等)输出到指定流。
参数
os输出流,如 std::cout 或 std::cerr
public MUDNN_EXPORT size_t GetVersion()
获取库版本号(通常为单一数值,如编码后的 major.minor.patch)。
返回值
版本号
class musa::dnn::BatchMatMul
class musa::dnn::BatchMatMul
: public musa::dnn::ImplBase
: protected musa::dnn::MatrixBase
批量矩阵乘:每批独立计算 d = alpha * a * b + beta * c + gamma * bias,支持 stride、RunLt 低精度与 MatMulLtParam。
概览
成员
public BatchMatMul()
public ~BatchMatMul()
public Status SetComputeMode(ComputeMode mode)
参数
mode计算精度模式
public Status SetTranspose(bool trans_a,bool trans_b)
参数
-
trans_a是否转置 a; -
trans_b是否转置 b
public Status SetDeterministic(bool is_deterministic)
参数
is_deterministic是否确定性计算
public Status SetAlpha(double alpha)
参数
alpha乘子
public Status SetBeta(double beta)
参数
beta乘子
public Status SetGamma(double gamma)
参数
gamma乘子
public Status GetWorkspaceSize(Handle & h,size_t & size_in_bytes,const Tensor & d,const Tensor & a,const Tensor & b,const Tensor & c,const MatMulLtParam & param)
查询 Run/RunLt 工作区大小(含 RunLt 时需 param)
public Status SetMpCountTarget(int mp_count_target)
参数
mp_count_target多处理器数量目标(用于算法选择)
public Status Run(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const MemoryMaintainer & maintainer) const
公式:c = alpha * a * b + beta * c
参数
-
h执行句柄。 -
c输入/输出批矩阵张量。每个批次结果矩阵的逻辑形状为(m, n);leading dimension 与 batch stride 由张量描述符中的 real dimensions 和 stride 指定。 -
a左输入批矩阵张量。若trans_a == false,逻辑形状为(batch_a, m, k);若trans_a == true,逻辑形状为(batch_a, k, m)。batch_a支持广播到目标批大小。 -
b右输入批矩阵张量。若trans_b == false,逻辑形状为(batch_b, k, n);若trans_b == true,逻辑形状为(batch_b, n, k)。batch_b支持广播到目标批大小。 -
maintainer为所选算法预先分配的工作区管理器。
返回值
Status::SUCCESS 表示操作成功完成。
public Status RunWithBiasAdd(Handle & h,Tensor & d,const Tensor & a,const Tensor & b,const Tensor & c,const Tensor & bias,const MemoryMaintainer & maintainer) const
public Status RunWithBiasAdd(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const Tensor & bias,const MemoryMaintainer & maintainer) const
public Status Run(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const int64_t batch,const int64_t m,const int64_t n,const int64_t k,const int64_t lda,const int64_t ldb,const int64_t ldc,const int64_t stride_a,const int64_t stride_b,const int64_t stride_c,const MemoryMaintainer & maintainer) const
public Status RunWithBiasAdd(Handle & h,Tensor & d,const Tensor & a,const Tensor & b,const Tensor & c,const Tensor & bias,const int64_t batch,const int64_t m,const int64_t n,const int64_t k,const int64_t lda,const int64_t ldb,const int64_t ldc,const int64_t ldd,const int64_t stride_a,const int64_t stride_b,const int64_t stride_c,const int64_t stride_d,const MemoryMaintainer & maintainer) const
public Status RunWithBiasAdd(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const Tensor & bias,const int64_t batch,const int64_t m,const int64_t n,const int64_t k,const int64_t lda,const int64_t ldb,const int64_t ldc,const int64_t stride_a,const int64_t stride_b,const int64_t stride_c,const MemoryMaintainer & maintainer) const
public Status RunLt(Handle & h,Tensor & d,const Tensor & a,const Tensor & b,const Tensor & c,const Tensor & bias,const MatMulLtParam & param,const MemoryMaintainer & maintainer) const
低精度批量乘:d_temp/aux_temp = Epilogue(α * scale_a * scale_b * a * b + β * scale_c * c + γ * bias),amax_d/amax_aux 输出,d/aux 再乘 scale_d/scale_aux
enum ComputeMode
计算模式枚举。
枚举值含义:TENSOR(张量/默认精度), SCALAR(标量模式)。
class musa::dnn::BatchNorm
class musa::dnn::BatchNorm
: public musa::dnn::ImplBase
批归一化算子:out = (in - mean) / sqrt(var + epsilon) * scale + bias。
支持纯推理(RunPure,使用固定 mean/var)与训练/融合(RunComposite,更新 running 统计量)。 根据 mean/variance/scale/bias 的 shape 与 format 自动选择 PER_ACTIVATION/PER_CHANNEL 等模式。
概览
成员
public BatchNorm()
public ~BatchNorm()
public Status SetMode(Mode m)
参数
m批归一化模式
public Status GetMode(Mode & m) const
参数
m输出:当前模式
public Status SetEpsilon(double epsilon)
方差稳定项,默认 0.0
public Status GetEpsilon(double & epsilon) const
参数
epsilon输出:当前 epsilon
public Status SetTraining(bool is_training)
是否为训练模式(影响是否更新 running 统计量),默认 true
public Status GetTraining(bool & is_training) const
参数
is_training输出:当前是否训练 模式
public Status RunPure(Handle & h,Tensor & out,const Tensor & in,const Tensor & finalMean,const Tensor & finalVariance,const Tensor & scale,const Tensor & bias) const
public Status RunComposite(Handle & h,Tensor & out,const Tensor & in,Tensor & accMean,Tensor & accVariance,Tensor & freshMean,Tensor & freshVariance,const Tensor & scale,const Tensor & bias,double momentum,const MemoryMaintainer & maintainer) const
public Status RunBwd(Handle & h,Tensor & dx,Tensor & dm,Tensor & dv,Tensor & dg,Tensor & db,const Tensor & x,const Tensor & dy,const Tensor & m,const Tensor & v,const Tensor & g,const MemoryMaintainer & maintainer) const
批归一化反向:计算 dx, d(mean), d(var), d(gamma), d(beta)
public Status GetWorkspaceSizeComposite(Handle & h,size_t & size_in_byte,Tensor & out,const Tensor & in,Tensor & accMean,Tensor & accVariance,Tensor & freshMean,Tensor & freshVariance,const Tensor & scale,const Tensor & bias) const
查询 RunComposite 所需工作区大小
public Status GetWorkspaceSizeBwd(Handle & h,size_t & size_in_byte,Tensor & dx,Tensor & dm,Tensor & dv,Tensor & dg,Tensor & db,const Tensor & x,const Tensor & dy,const Tensor & m,const Tensor & v,const Tensor & g) const
查询 RunBwd 所需工作区大小
enum Mode
批归一化模式枚举。枚举值包括 PER_CHANNEL(按通道)和 PER_ACTIVATION(按激活/逐元素)。
class musa::dnn::Binary
class musa::dnn::Binary
: public musa::dnn::ImplBase
二元算子描述符:对两个张量逐元素运算,遵循 NumPy 广播规则。
See also: https://numpy.org/doc/stable/user/basics.broadcasting.html
概览
成员
public Binary()
public ~Binary()
public Status SetMode(Mode m)
参数
m二元运算模式
public Status SetAlpha(double alpha)
参数
alpha标量 alpha(double)
public Status SetAlpha(int64_t alpha)
参数
alpha标量 alpha(int64_t)
public Status SetAlpha(const void * alpha)
参数
alpha指向 alpha 的指针
public Status SetBeta(double beta)
参数
beta标量 beta(double)
public Status SetBeta(int64_t beta)
参数
beta标量 beta(int64_t)
public Status SetBeta(const void * beta)
参数
beta指向 beta 的指针
public Status Run(Handle & h,Tensor & out,const Tensor & l,const Tensor & r) const
执行二元运算,广播规则同 NumPy。
参数
-
h执行句柄 -
out输出张量 -
l左侧输入张量 -
r右侧输入张量
enum Mode
二元运算模式枚举。
枚举值包含:算术(ADD,SUB,MUL,DIV,POW,ADD_ALPHA,SUB_ALPHA) 、逻辑(LOGICAL_AND,LOGICAL_OR,LOGICAL_XOR)、 比较(LT,LE,GT,GE,EQ,NE)、最值(MAX,MIN)、激活反向(PRELU,LEAKY_RELU_BW,RELU6_BW,THRESHOLD_BW,SIGMOID_BW,SILU_BW,TANH_BW,GELU_NONE_BW,GELU_TANH_BW,RSQRT_BW)、 除取模(TRUEDIV,FLOORDIV,TRUNCATEDIV,FLOORMOD,TRUNCATEMOD,DIVNONAN)、SQUARED_DIFF。
class musa::dnn::Concat
class musa::dnn::Concat
: public musa::dnn::ImplBase
沿指定轴拼接多张量的算子。
概览
| 成员 | 说明 |
|---|---|
public Concat() | |
public ~Concat() | |
public Status SetAxis(int axis) | |
public Status GetAxis(int & axis) const | |
public Status Run(Handle & h,Tensor & out,int num_input,const Tensor * ins) const |
成员
public Concat()
public ~Concat()
public Status SetAxis(int axis)
参数
axis拼接轴索引,可为负(表示从最后一维起算)
public Status GetAxis(int & axis) const
参数
axis输出:当前拼接轴
public Status Run(Handle & h,Tensor & out,int num_input,const Tensor * ins) const
参数
-
h执行句柄 -
out输出张量(沿 axis 拼接后的结果) -
num_input输入张量数量 -
ins输入张量数组
class musa::dnn::Convolution
class musa::dnn::Convolution
: public musa::dnn::ImplBase
: protected musa::dnn::MatrixBase
卷积算子:前向、融合(bias+add+激活)、反向数据、反向权值,支持 group、pad/stride/dilation、算法选择与 FusedActivationDesc。
概览
成员
public Convolution()
public ~Convolution()
public Status SetGroups(int group_num)
参数
group_num分组卷积的组数
public Status SetNdInfo(::std::initializer_list< int > pad,::std::initializer_list< int > stride,::std::initializer_list< int > dilation)
支持最多 3 维;pad/stride/dilation 分别为填充、步长、膨胀
public Status SetNdInfo(int length,const int * pad,const int * stride,const int * dilation)
参数
-
length空间维数; -
pad填充; -
stride步长; -
dilation膨胀
public Status SetComputeMode(ComputeMode mode)
参数
mode计算精度模式
public Status Run(Handle & h,Tensor & out,const Tensor & data,const Tensor & filter,Algorithm algo,const MemoryMaintainer & maintainer) const
前向:out = data * filter(卷积);
参数
-
algo前向算法; -
maintainer工作区
public Status RunFusion(Handle & h,Tensor & out,const Tensor & data,const Tensor & filter,const Tensor & bias,const Tensor & add,const FusedActivationDesc & act,Algorithm algo,const MemoryMaintainer & maintainer) const
融合前向:卷积 + bias + add + 激活;
参数
-
bias偏置; -
add加项; -
act融合激活描述
public Status RunBwdData(Handle & h,Tensor & out,const Tensor & data,const Tensor & filter,AlgorithmBwdData algo,const MemoryMaintainer & maintainer) const
反向数据:求 data 的梯度;
参数
algo反向数据算法
public Status RunBwdFilter(Handle & h,Tensor & out,const Tensor & data,const Tensor & filter,AlgorithmBwdFilter algo,const MemoryMaintainer & maintainer) const
反向权值:求 filter 的梯度;
参数
algo反向权值算法
public Status GetForwardWorkspaceSize(Handle & h,size_t & size_in_bytes,const Tensor & out,const Tensor & data,const Tensor & filter,const Algorithm & algo) const
查询前向工作区大小
public Status GetBackwardDataWorkspaceSize(Handle & h,size_t & size_in_bytes,const Tensor & out,const Tensor & data,const Tensor & filter,const AlgorithmBwdData & algo) const
查询反向数据工作区大小
public Status GetBackwardFilterWorkspaceSize(Handle & h,size_t & size_in_bytes,const Tensor & out,const Tensor & data,const Tensor & filter,const AlgorithmBwdFilter & algo) const
查询反向权值工作区大小
public Status GetRecommendForwardAlgorithm(Handle & h,Algorithm & algo,const Tensor & out,const Tensor & data,const Tensor & filter) const
推荐前向算法;
参数
algo输出推荐算法
public Status GetRecommendBackwardDataAlgorithm(Handle & h,AlgorithmBwdData & algo,const Tensor & out,const Tensor & data,const Tensor & filter) const
推荐反向数据算法
public Status GetRecommendBackwardFilterAlgorithm(Handle & h,AlgorithmBwdFilter & algo,const Tensor & out,const Tensor & data,const Tensor & filter) const
推荐反向权值算法
enum Algorithm
前向算法。IMPLICIT_GEMM, DIRECT, WINOGRAD_NONFUSED, GEMM。
enum AlgorithmBwdData
反向数据算法。IMPLICIT_GEMM, WINOGRAD_NONFUSED, GEMM, DIRECT。
enum AlgorithmBwdFilter
反向权值算法。IMPLICIT_GEMM, WINOGRAD_NONFUSED, GEMM, DIRECT。
enum ComputeMode
计算模式枚举。
枚举值含义:TENSOR(张量/默认精度), SCALAR(标量模式)。
class musa::dnn::CrossEntropyLoss
class musa::dnn::CrossEntropyLoss
: public musa::dnn::ImplBase
交叉熵损失:结合 log_softmax 与 NLL,支持 label_smoothing、ignore_index、weight 与归约模式。
概览
成员
public CrossEntropyLoss()
public ~CrossEntropyLoss()
public Status SetReductionMode(ReductionMode a)
参数
a归约模式(NONE/SUM/MEAN)
public Status GetReductionMode(ReductionMode & a) const
public Status SetIgnoreIndex(int64_t ignore_index)
参数
ignore_index被忽略的目标类别索引(不参与损失与梯度)
public Status GetIgnoreIndex(int64_t & ignore_index) const
public Status SetLabelSmoothing(float label_smoothing)
参数
label_smoothing标签平滑系数
public Status GetLabelSmoothing(float & label_smoothing) const
public Status GetForwardWorkspaceSize(Handle & h,Tensor & output,const Tensor & input,const Tensor & target,const Tensor & weight,size_t & size_in_bytes) const
查询前向工作区大小;
参数
size_in_bytes输出字节数
public Status GetBackwardWorkspaceSize(Handle & h,Tensor & grad_input,const Tensor & sinput,const Tensor & grad_output,const Tensor & target,const Tensor & weight,size_t & size_in_bytes) const
查询反向工作区大小;
参数
sinput前向 softmax 输出(或等价输入)
public Status Run(Handle & h,Tensor & output,const Tensor & input,const Tensor & target,const Tensor & weight,const MemoryMaintainer & maintainer) const
前向:output 为损失;input 为 logits;target 为类别索引;weight 为类别权重(可选)
public Status RunBwd(Handle & h,Tensor & grad_input,const Tensor & sinput,const Tensor & grad_output,const Tensor & target,const Tensor & weight,const MemoryMaintainer & maintainer) const
反向:grad_input 为 input 的梯度;grad_output 为损失对输出的梯度
enum ReductionMode
归约模式。NONE, MEAN, SUM, BATCHMEAN。
class musa::dnn::CTCLoss
class musa::dnn::CTCLoss
: public musa::dnn::ImplBase
CTC 损失(Connectionist Temporal Classification):用于序列标注,支持前向与反向、blank、loss 归一化等选项。
概览
成员
public CTCLoss()
public ~CTCLoss()
public Status SetDataType(Type dtype)
参数
dtype计算数据类型
public Status GetDataType(Type & dtype) const
public Status SetLossNormMode(LossNormMode mode)
参数
mode损失归一化方式(如按 batch、按序列等)
public Status GetLossNormMode(LossNormMode & mode) const
public Status SetPropagateNan(bool propagate_nan)
参数
propagate_nan是否传播 NaN
public Status GetPropagateNan(bool & propagate_nan) const
public Status SetZeroOobGradients(bool zero_oob_gradients)
参数
zero_oob_gradients是否将越界位置的梯度置零
public Status GetZeroOobGradients(bool & zero_oob_gradients) const
public Status SetBlank(int64_t blank)
参数
blankblank 标签的索引
public Status GetBlank(int64_t & blank) const
public Status SetZeroInfinity(bool zeroInfinity)
参数
zeroInfinity是否将无穷损失置零
public Status GetZeroInfinity(bool & zeroInfinity) const
public Status SetMaxTargetLength(int64_t maxTargetLength)
参数
maxTargetLength目标序列最大长度
public Status GetMaxTargetLength(int64_t & maxTargetLength) const
public Status Run(Handle & h,Tensor & out,Tensor & alpha,const Tensor & input,const Tensor & targets,const Tensor & inputLengths,const Tensor & targetLength) const
前向:out 为损失,alpha 为前向动态规划中间结果
public Status GetWorkspaceSize(Handle & h,size_t & size_in_bytes,const Tensor & out,const Tensor & grad,const Tensor & logProbs,const Tensor & targets,const Tensor & inputLengths,const Tensor & targetLength,const Tensor & loss,const Tensor & alpha) const
查询反向工作区大小
public Status RunBwd(Handle & h,Tensor & out,const Tensor & grad,const Tensor & logProbs,const Tensor & targets,const Tensor & inputLengths,const Tensor & targetLength,const Tensor & loss,const Tensor & alpha,const MemoryMaintainer & maintainer) const
反向:out 为 logProbs 的梯度
enum Type
计算/存储数据类型。与 Tensor::Type 取值一致(QINT4/INT8/FLOAT 等)。
enum LossNormMode
损失归一化模式。枚举值:NONE(无), SOFTMAX(按 softmax 归一化)。
class musa::dnn::Cum
class musa::dnn::Cum
: public musa::dnn::ImplBase
累积运算(CumSum/CumProd 等):沿指定维度做前缀和/积,支持初始值。
概览
成员
public Cum()
public ~Cum()
public Status SetDim(int dim)
参数
dim累积维度
public Status GetDim(int & dim) const
参数
dim返回累积维度
public Status SetMode(Mode m)
参数
m累积模式
public Status GetMode(Mode & m) const
参数
m返回累积模式
public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const
参数
-
out输出; -
in输入; -
maintainer工作区
enum Mode
累积模式。枚举值:ADD(累加), MUL(累乘)。
class musa::dnn::DebugInfo
调试/日志信息结构,在回调中传递给用户,包含时间、设备、句柄等。
概览
| 成员 | 说明 |
|---|---|
public uint32_t version | 调试信息结构版本号 |
public Severity severity | 本条信息的严重级别 |
public uint32_t time_sec | 时间戳:自 epoch 起的秒数 |
public uint32_t time_usec | 时间戳:微秒部分 |
public uint32_t time_delta | 自进程/库启动以来的秒数 |
public uint64_t tid | 线程 ID |
public int32_t device_id | 关联的 MUSA 设备 ID |
public const Handle * handle | 关联的 muDNN 句柄指针,可能为空 |
enum Severity | 日志严重级别枚举。 |
成员
public uint32_t version
调试信息结构版本号
public Severity severity
本条信息的严重级别
public uint32_t time_sec
时间戳:自 epoch 起的秒数
public uint32_t time_usec
时间戳:微秒部分
public uint32_t time_delta
自进程/库启动以来的秒数
public uint64_t tid
线程 ID
public int32_t device_id
关联的 MUSA 设备 ID
public const Handle * handle
关联的 muDNN 句柄指针,可能为空
enum Severity
日志严重级别枚举。
枚举值含义:INFO(0 信息), WARNING(1 警告), ERROR(2 错误), FATAL(3 致命)。
class musa::dnn::DeformableConv
class musa::dnn::DeformableConv
: public musa::dnn::ImplBase
: protected musa::dnn::MatrixBase
可变形卷积:Deformable Conv2d(无 mask)与 Modulate Deformable Conv2d(含 mask),支持 offset、mask、groups、deformable_groups。
概览
成员
public DeformableConv()
public ~DeformableConv()
public Status SetComputeMode(ComputeMode mode)
public Status SetGroups(int groups)
参数
groups分组数
public Status SetDeformableGroups(int deformable_groups)
参数
deformable_groups可变形分组数
public Status SetNdInfo(::std::initializer_list< int > pad,::std::initializer_list< int > stride,::std::initializer_list< int > dilation)
支持最多 3 维;pad/stride/dilation
public Status SetNdInfo(int length,const int * pad,const int * stride,const int * dilation)
public Status GetWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out,const Tensor & input,const Tensor & weight) const
查询工作区大小
public Status RunDeformableConv(Handle & h,Tensor & out,const Tensor & input,const Tensor & weight,const Tensor & offset,const MemoryMaintainer & maintainer) const
Deformable Conv2d(无 mask),见 Deformable ConvNets;offset 为偏移张量。
public Status RunModulateDeformableConv(Handle & h,Tensor & out,const Tensor & input,const Tensor & weight,const Tensor & offset,const Tensor & mask,const MemoryMaintainer & maintainer) const
Deformable Conv2d v2(含 mask),见 Deformable ConvNets v2;mask 为调制掩码。
enum Algorithm
卷积算法。IMPLICIT_GEMM, DIRECT, WINOGRAD_NONFUSED, GEMM。
enum ComputeMode
计算模式枚举。
枚举值含义:TENSOR(张量/默认精度), SCALAR(标量模式)。
class musa::dnn::Dot
class musa::dnn::Dot
: public musa::dnn::ImplBase
: protected musa::dnn::MatrixBase
张量点积/批量矩阵乘(Dot):沿指定轴对 a、b 做矩阵乘,支持 bias 加项与确定性模式。
公式:c = a * b 或 d = alpha * a * b + beta * c + gamma * bias(outplace/inplace)。
概览
成员
public Dot()
public ~Dot()
public Status SetComputeMode(ComputeMode mode)
参数
mode计算精度模式(如默认、TF32)
public Status SetAxis(int axis)
参数
axis约简轴(单轴时两侧矩阵在该轴对齐),可为负
public Status SetAxes(int axis_l,int axis_r)
参数
-
axis_l左张量约简轴; -
axis_r右张量约简轴,可为负
public Status SetDeterministic(bool is_deterministic)
参数
is_deterministic是否使用确定性算法
public Status GetWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & c,const Tensor & a,const Tensor & b)
查询 Run 所需工作区大小;
参数
size_in_bytes输出字节数
public Status Run(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const MemoryMaintainer & maintainer) const
执行 c = a * b;
参数
-
c输出; -
a左矩阵; -
b右矩阵; -
maintainer工作区分配器
public Status RunWithBiasAdd(Handle & h,Tensor & d,const Tensor & a,const Tensor & b,const Tensor & c,const Tensor & bias,const MemoryMaintainer & maintainer) const
Outplace:d = alpha * a * b + beta * c + gamma * bias
public Status RunWithBiasAdd(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const Tensor & bias,const MemoryMaintainer & maintainer) const
Inplace:c = alpha * a * b + beta * c + gamma * bias
enum ComputeMode
计算模式枚举。
枚举值含义:TENSOR(张量/默认精度), SCALAR(标量模式)。
class musa::dnn::Dropout
class musa::dnn::Dropout
: public musa::dnn::ImplBase
Dropout:训练时按概率 p 将元素置零并缩放,支持 mask 输出、种子与偏移。
前向:output[i] = input[i] * (1/(1-p)) 当 mask[i]==1,否则 0;mask 可写入 Tensor 或丢弃。
概览
成员
public Dropout()
public ~Dropout()
public Status SetP(double p)
参数
p丢弃概率
public Status GetP(double & p) const
public Status SetScale(double scale)
参数
scale输出缩放因子(如 1/(1-p))
public Status GetScale(double & scale) const
public Status SetSeed(uint64_t host_seed)
参数
host_seed主机端种子
public Status SetSeed(const uint64_t * device_seed)
参数
device_seed设备端种子指针
public Status GetSeed(uint64_t & host_seed) const
public Status SetOffset(uint64_t host_offset)
参数
host_offset主机端偏移
public Status SetOffset(const uint64_t * device_offset_base,uint64_t sub_offset)
参数
-
device_offset_base设备偏移基址; -
sub_offset子偏移
public Status RunDropout(Handle & h,Tensor & out,const Tensor & input,Tensor & mask) const
public Status RunDropoutBwd(Handle & h,Tensor & out,const Tensor & grad,Tensor & mask) const
反向:根据 mask 将梯度写回
class musa::dnn::Fill
class musa::dnn::Fill
: public musa::dnn::ImplBase
用常量填充张量的算子,可选 mask 指定填充区域。
概览
成员
public Fill()
public ~Fill()
public Status SetValue(double value)
参数
value填充值(浮点)
public Status SetValue(int64_t value)
参数
value填充值(整数)
public Status Run(Handle & h,Tensor & out) const
用当前设置的值填充 out
public Status Run(Handle & h,Tensor & out,Tensor & mask) const
按 mask 指示区域填充 out
class musa::dnn::GatherX
class musa::dnn::GatherX
: public musa::dnn::ImplBase
Gather 算子:根据 index 张量从 in 中沿 axis Gather 到 out,支持 batch_dims 与多种模式。
概览
| 成员 | 说明 |
|---|---|
public GatherX() | |
public ~GatherX() | |
public Status SetMode(Mode m) | |
public Status SetAxis(int axis) | |
public Status SetBatchDims(int batch_dims) | |
public Status Run(Handle & h,Tensor & out,const Tensor & index,const Tensor & in) const | |
enum Mode | Gather 模式。枚举值:GATHER(一维索引), GATHER_ND(多维索引), GATHER_ELEMENTS(按元素)。 |
成员
public GatherX()
public ~GatherX()
public Status SetMode(Mode m)
参数
mGather 模式
public Status SetAxis(int axis)
参数
axis沿该维做 Gather
public Status SetBatchDims(int batch_dims)
参数
batch_dimsindex 中作为 batch 的维度数
public Status Run(Handle & h,Tensor & out,const Tensor & index,const Tensor & in) const
参数
-
out输出; -
index索引张量; -
in输入张量
enum Mode
Gather 模式。枚举值:GATHER(一维索引), GATHER_ND(多维索引), GATHER_ELEMENTS(按元素)。
class musa::dnn::Glu
class musa::dnn::Glu
: public musa::dnn::ImplBase
GLU(Gated Linear Unit):沿 axis 将输入切半,做 sigmoid 门控后逐元素乘。
概览
| 成员 | 说明 |
|---|---|
public Glu() | |
public ~Glu() | |
public Status SetAxis(int axis) | |
public Status GetAxis(int & axis) const | |
public Status Run(Handle & h,Tensor & out,const Tensor & in) const |
成员
public Glu()
public ~Glu()
public Status SetAxis(int axis)
参数
axis分割轴,可为负
public Status GetAxis(int & axis) const
public Status Run(Handle & h,Tensor & out,const Tensor & in) const
参数
-
out输出; -
in输入
class musa::dnn::GroupedMatMul
class musa::dnn::GroupedMatMul
: public musa::dnn::ImplBase
: protected musa::dnn::MatrixBase
分组矩阵乘:每组独立计算 d[i] = alpha * a[i] * b[i] + beta * c[i] + gamma * bias[i],支持每组不同 m/n/k/ld,以及 RunLt 与 GroupGemmParam。
概览
成员
public GroupedMatMul()
public ~GroupedMatMul()
public Status SetComputeMode(ComputeMode mode)
public Status SetTranspose(bool trans_a,bool trans_b)
public Status SetDeterministic(bool is_deterministic)
public Status SetAlpha(double alpha)
public Status SetBeta(double beta)
public Status SetGamma(double gamma)
public Status SetMpCountTarget(int mp_count_target)
public Status GetWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor * out,const Tensor * a,const Tensor * b,const int groups)
查询工作区大小;
参数
-
out输出张量数组; -
a、b输入数组; -
groups组数
public Status Run(Handle & h,Tensor * c,const Tensor * a,const Tensor * b,const int groups,const MemoryMaintainer & maintainer) const
公式:c[i] = alpha * a[i] * b[i] + beta * c[i],i 为组下标。
参数
-
h执行句柄。 -
c输入/输出矩阵指针数组;第i个元素保存第i组计算结果。 -
a左输入矩阵指针数组;每组矩阵形状由对应张量描述符给出,必要时可配合显式维度重载使用。 -
b右输入矩阵指针数组;每组矩阵形状由对应张量描述符给出,必要时可配合显式维度重载使用。 -
groups分组数量。 -
maintainer为所选算法预先分配的工作区管理器。
返回值
Status::SUCCESS 表示操作成功完成。
public Status RunWithBiasAdd(Handle & h,Tensor * d,const Tensor * a,const Tensor * b,const Tensor * c,const Tensor * bias,const int groups,const MemoryMaintainer & maintainer) const
public Status RunWithBiasAdd(Handle & h,Tensor * c,const Tensor * a,const Tensor * b,const Tensor * bias,const int groups,const MemoryMaintainer & maintainer) const
public Status Run(Handle & h,Tensor * c,const Tensor * a,const Tensor * b,const int64_t * m,const int64_t * n,const int64_t * k,const int64_t * lda,const int64_t * ldb,const int64_t * ldc,const int groups,const MemoryMaintainer & maintainer) const
public Status RunWithBiasAdd(Handle & h,Tensor * d,const Tensor * a,const Tensor * b,const Tensor * c,const Tensor * bias,const int64_t * m,const int64_t * n,const int64_t * k,const int64_t * lda,const int64_t * ldb,const int64_t * ldc,const int64_t * ldd,const int groups,const MemoryMaintainer & maintainer) const
public Status RunWithBiasAdd(Handle & h,Tensor * c,const Tensor * a,const Tensor * b,const Tensor * bias,const int64_t * m,const int64_t * n,const int64_t * k,const int64_t * lda,const int64_t * ldb,const int64_t * ldc,const int groups,const MemoryMaintainer & maintainer) const
public Status RunLt(Handle & h,Tensor * d,const Tensor * a,const Tensor * b,const Tensor * c,const Tensor * bias,const MatMulLtParam * lt_param,const int groups,const MemoryMaintainer & maintainer) const
public Status RunLtWithParam(Handle & h,Tensor & d,const Tensor & a,const Tensor & b,const Tensor & c,const Tensor & bias,const MatMulLtParam & param,const GroupGemmParam & group_param,const MemoryMaintainer & maintainer) const
使用 GroupGemmParam 的 RunLt:单输出 d,单组 a/b/c/bias,param 与 group_param 指定低精度与分组参数
enum ComputeMode
计算模式枚举。
枚举值含义:TENSOR(张量/默认精度), SCALAR(标量模式)。
class musa::dnn::GroupGemmParam
class musa::dnn::GroupGemmParam
: public musa::dnn::ImplBase
分组 GEMM 参数:Mask 模式或按专家 token 计数/起始的连续模式(MoE 等)。
概览
| 成员 | 说明 |
|---|---|
public GroupGemmParam() | |
public ~GroupGemmParam() | |
public Status MaskMode(const Tensor & mask) | |
public Status ContigWithStartMode(const Tensor & experts_token_count,const Tensor & experts_token_start) |
成员
public GroupGemmParam()
public ~GroupGemmParam()
public Status MaskMode(const Tensor & mask)
参数
mask掩码张量,用于 Mask 模式
public Status ContigWithStartMode(const Tensor & experts_token_count,const Tensor & experts_token_start)
参数
-
experts_token_count各专家 token 数; -
experts_token_start各专家起始位置
class musa::dnn::GroupNorm
class musa::dnn::GroupNorm
: public musa::dnn::ImplBase
组归一化:在指定轴上分组,组内做归一化,out = (in - mean) / sqrt(var + eps) * gamma + beta。
概览
成员
public GroupNorm()
public ~GroupNorm()
public Status SetEpsilon(double eps)
参数
eps方差稳定项
public Status GetEpsilon(double & eps) const
参数
eps输出:当前 epsilon
public Status SetAxis(const int axis)
参数
axis归一化轴(从该轴起划分为组)
public Status GetAxis(int & axis) const
参数
axis输出:当前轴
public Status SetGroup(const int g)
参数
g组数
public Status GetGroup(int & g) const
参数
g输出:当前组数
public Status Run(Handle & h,Tensor & out,Tensor & mean,Tensor & invVar,const Tensor & in,const Tensor & gamma,const Tensor & beta) const
参数
-
out输出张量 -
mean组内均值(输出) -
invVar组内 1/sqrt(var+eps)(输出) -
in输入 -
gamma缩放 -
beta偏移
class musa::dnn::Handle
class musa::dnn::Handle
: public musa::dnn::ImplBase
muDNN 设备句柄,绑定到 MUSA 设备与流,所有算子执行均需通过 Handle。
用于设置/获取当前设备 ID、MUSA 流,以及是否允许使用 TF32 张量核等全局选项。
概览
成员
public Handle()
默认构造,使用当前设备。
public explicit Handle(int device_id)
参 数
device_id目标 MUSA 设备 ID
public ~Handle()
public int GetDeviceId() const
返回值
当前绑定的设备 ID
public Status SetStream(musaStream_t stream)
参数
streamMUSA 流,后续算子将在此流上执行
返回值
设置结果状态
public musaStream_t GetStream() const
返回值
当前绑定的 MUSA 流
public Status SetAllowTF32(bool allow_tf32)
控制是否允许在 MatMul、Conv 等运算中使用 TensorFloat-32 张量核。
参数
allow_tf32true 表示允许使用 TF32
返回值
设置结果状态
public bool GetAllowTF32() const
返回值
当前是否允许 TF32
class musa::dnn::ImplBase
实现对象基类,持有底层 C 实现指针,供子类与 C API 交互。
子类通过 impl_ 访问内部实现,GetImpl() 用于跨 C/C++ 边界传递。
概览
成员
public void * GetImpl()
返回值
可修改的底层实现指针
public const void * GetImpl() const
返回值
只读的底层实现指针
protected void * impl_
底层实现对象指针,由 C 层创建并持有
protected explicit ImplBase(void * impl)
参数
impl底层实现对象指针,由子类构造时传入
protected ImplBase(const ImplBase &) = delete
protected ImplBase(ImplBase &&) = delete
protected ImplBase & operator=(const ImplBase &) = delete
protected ImplBase & operator=(ImplBase &&) = delete
class musa::dnn::Interpolate
class musa::dnn::Interpolate
: public musa::dnn::ImplBase
插值算子:NEAREST/NEAREST_EXACT/LINEAR/BICUBIC 等,支持 scale、align_corners、antialias。
需同时设置 out 的 shape 与 SetScaleInfo;支持 3/4/5 维输入,BICUBIC 仅 4D;antialias 仅 linear-2D 与 bicubic。
概览
成员
public Interpolate()
public ~Interpolate()
public Status SetMode(Mode m)
参数
m插值模式
public Status GetMode(Mode & m) const
public Status SetScaleInfo(::std::initializer_list< float > scale)
参数
scale各维缩放因子列表
public Status SetScaleInfo(int length,float * scale)
参数
-
length缩放维度数; -
scale缩放因子数组
public Status GetScaleInfo(int & length,float *& scale) const
参数
-
length输出:维度数; -
scale输出:缩放数组指针
public Status SetAlignCorners(bool align_corners)
仅对 linear-1/2/3D 与 bicubic 有效;
参数
align_corners是否角点对齐
public Status GetAlignCorners(bool & align_corners) const
public Status SetAntialias(bool antialias)
仅对 linear-2D 与 bicubic 有效;
参数
antialias是否抗锯齿
public Status GetAntialias(bool & antialias) const
public Status Run(Handle & h,Tensor & out,const Tensor & in) const
public Status RunBackward(Handle & h,Tensor & out,const Tensor & in) const
插值反向
enum Mode
插值模式。枚举值:NEAREST(最近邻), NEAREST_EXACT(精确最近邻), LINEAR(线性), BICUBIC(双三次)。
class musa::dnn::KLDivLoss
class musa::dnn::KLDivLoss
: public musa::dnn::ImplBase
KL 散度损失:输入与目标之间的 KL 散度,支持 log_target、归约模式与反向。
概览
成员
public KLDivLoss()
public ~KLDivLoss()
public Status SetReductionMode(Mode mode)
public Status GetReductionMode(Mode & mode) const
public Status SetLogTarget(bool log_target)
public Status GetLogTarget(bool & log_target) const
public Status GetForwardWorkspaceSize(Handle & h,Tensor & output,Tensor & input,Tensor & target,size_t & size_in_bytes) const
public Status Run(Handle & h,Tensor & out,Tensor & input,const Tensor & target,const MemoryMaintainer & maintainer) const
public Status RunBwd(Handle & h,Tensor & out,const Tensor & grad,const Tensor & input,const Tensor & target) const
enum Mode
归约模式。NONE, MEAN, SUM, BATCHMEAN。
class musa::dnn::L2Loss
class musa::dnn::L2Loss
: public musa::dnn::ImplBase
L2 损失:out = sum(in^2) / 2(或按元素),需工作区。
概览
| 成员 | 说明 |
|---|---|
public L2Loss() | |
public ~L2Loss() | |
public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const |
成员
public L2Loss()
public ~L2Loss()
public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const
参数
-
out标量或按归约后的损失; -
in输入; -
maintainer工作区分配器
class musa::dnn::LayerNorm
class musa::dnn::LayerNorm
: public musa::dnn::ImplBase
层归一化:在指定轴上计算均值和方差,out = (in - mean) / sqrt(var + eps) * gamma + beta。
支持 VarMode(方差计算方式)、多轴归一化、前向与反向及工作区查询。
概览
成员
public LayerNorm()
public ~LayerNorm()
public Status SetVarMode(VarMode var_mode)
参数
var_mode方差计算模式