Skip to main content

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::CTCLossCTC 损失(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::DropoutDropout:训练时按概率 p 将元素置零并缩放,支持 mask 输出、种子与偏移。
class musa::dnn::Fill用常量填充张量的算子,可选 mask 指定填充区域。
class musa::dnn::GatherXGather 算子:根据 index 张量从 in 中沿 axis Gather 到 out,支持 batch_dims 与多种模式。
class musa::dnn::GluGLU(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::HandlemuDNN 设备句柄,绑定到 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::KLDivLossKL 散度损失:输入与目标之间的 KL 散度,支持 log_target、归约模式与反向。
class musa::dnn::L2LossL2 损失: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::RMSNormRMS 归一化:out = in / sqrt(mean(in^2) + eps) * gamma,无 beta,无均值输出。
class musa::dnn::RNNRNN/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::ScatterScatter:根据 idx 与 dim 将 update 散布到 self 或 out(inplace 与 outplace 两种 Run)。
class musa::dnn::ScatterND多维 Scatter:根据多维索引 idx 将 update 散布到 self(索引为多维坐标)。
class musa::dnn::SoftmaxSoftmax 算子:沿指定维度做 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::SwiGluSwiGLU:Swish 门控线性单元,前向与反向。
class musa::dnn::Tensor多维张量描述符,描述数据地址、类型、格式、维度与步长,用于所有算子的输入输出。
class musa::dnn::TensorBase张量数据类型与格式的基类,仅用于继承,不直接实例化。
class musa::dnn::Ternary三元算子描述符:对三个张量逐元素运算,支持 alpha/beta/gamma 缩放。
class musa::dnn::TopKTopK:沿 dim 取最大或最小的 k 个元素及索引,支持 sorted、largest。
class musa::dnn::Unary一元算子描述符:对单张量逐元素运算(如激活、取反等),支持 alpha/beta 缩放。
class musa::dnn::UnfoldUnfold(滑动窗口展开):沿 axis 以 size 为窗口、step 为步长展开为多块。
class musa::dnn::UniqueUnique:去重,输出唯一值、逆索引与计数;支持多种 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)
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 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)
public Status Run(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const MemoryMaintainer & maintainer) const公式:c = alpha * a * b + beta * c
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计算模式枚举。

成员

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)
public Status GetMode(Mode & m) const
public Status SetEpsilon(double epsilon)方差稳定项,默认 0.0
public Status GetEpsilon(double & epsilon) const
public Status SetTraining(bool is_training)是否为训练模式(影响是否更新 running 统计量),默认 true
public Status GetTraining(bool & is_training) const
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(按激活/逐元素)。

成员

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)
public Status SetAlpha(double alpha)
public Status SetAlpha(int64_t alpha)
public Status SetAlpha(const void * alpha)
public Status SetBeta(double beta)
public Status SetBeta(int64_t beta)
public Status SetBeta(const void * beta)
public Status Run(Handle & h,Tensor & out,const Tensor & l,const Tensor & r) const执行二元运算,广播规则同 NumPy。
enum Mode二元运算模式枚举。

成员

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)
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 SetComputeMode(ComputeMode mode)
public Status Run(Handle & h,Tensor & out,const Tensor & data,const Tensor & filter,Algorithm algo,const MemoryMaintainer & maintainer) const前向:out = data * filter(卷积);
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 + 激活;
public Status RunBwdData(Handle & h,Tensor & out,const Tensor & data,const Tensor & filter,AlgorithmBwdData algo,const MemoryMaintainer & maintainer) const反向数据:求 data 的梯度;
public Status RunBwdFilter(Handle & h,Tensor & out,const Tensor & data,const Tensor & filter,AlgorithmBwdFilter algo,const MemoryMaintainer & maintainer) const反向权值:求 filter 的梯度;
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推荐前向算法;
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计算模式枚举。

成员

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)
public Status GetReductionMode(ReductionMode & a) const
public Status SetIgnoreIndex(int64_t ignore_index)
public Status GetIgnoreIndex(int64_t & ignore_index) const
public Status SetLabelSmoothing(float 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查询前向工作区大小;
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查询反向工作区大小;
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。

成员

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)
public Status GetDataType(Type & dtype) const
public Status SetLossNormMode(LossNormMode mode)
public Status GetLossNormMode(LossNormMode & mode) const
public Status SetPropagateNan(bool propagate_nan)
public Status GetPropagateNan(bool & propagate_nan) const
public Status SetZeroOobGradients(bool zero_oob_gradients)
public Status GetZeroOobGradients(bool & zero_oob_gradients) const
public Status SetBlank(int64_t blank)
public Status GetBlank(int64_t & blank) const
public Status SetZeroInfinity(bool zeroInfinity)
public Status GetZeroInfinity(bool & zeroInfinity) const
public Status SetMaxTargetLength(int64_t 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 归一化)。

成员

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)

参数

  • blank blank 标签的索引

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)
public Status GetDim(int & dim) const
public Status SetMode(Mode m)
public Status GetMode(Mode & m) const
public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const
enum Mode累积模式。枚举值:ADD(累加), MUL(累乘)。

成员

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)
public Status SetDeformableGroups(int 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) constDeformable Conv2d(无 mask),见 Deformable ConvNetsoffset 为偏移张量
public Status RunModulateDeformableConv(Handle & h,Tensor & out,const Tensor & input,const Tensor & weight,const Tensor & offset,const Tensor & mask,const MemoryMaintainer & maintainer) constDeformable Conv2d v2(含 mask),见 Deformable ConvNets v2mask 为调制掩码
enum Algorithm卷积算法。IMPLICIT_GEMM, DIRECT, WINOGRAD_NONFUSED, GEMM。
enum ComputeMode计算模式枚举。

成员

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 ConvNetsoffset 为偏移张量。

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 v2mask 为调制掩码。

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 * bd = alpha * a * b + beta * c + gamma * bias(outplace/inplace)。

概览

成员说明
public Dot()
public ~Dot()
public Status SetComputeMode(ComputeMode mode)
public Status SetAxis(int axis)
public Status SetAxes(int axis_l,int axis_r)
public Status SetDeterministic(bool is_deterministic)
public Status GetWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & c,const Tensor & a,const Tensor & b)查询 Run 所需工作区大小;
public Status Run(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const MemoryMaintainer & maintainer) const执行 c = a * b;
public Status RunWithBiasAdd(Handle & h,Tensor & d,const Tensor & a,const Tensor & b,const Tensor & c,const Tensor & bias,const MemoryMaintainer & maintainer) constOutplace: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) constInplace:c = alpha * a * b + beta * c + gamma * bias
enum ComputeMode计算模式枚举。

成员

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)
public Status GetP(double & p) const
public Status SetScale(double scale)
public Status GetScale(double & scale) const
public Status SetSeed(uint64_t host_seed)
public Status SetSeed(const uint64_t * device_seed)
public Status GetSeed(uint64_t & host_seed) const
public Status SetOffset(uint64_t host_offset)
public Status SetOffset(const uint64_t * device_offset_base,uint64_t 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 将梯度写回

成员

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)
public Status SetValue(int64_t value)
public Status Run(Handle & h,Tensor & out) const用当前设置的值填充 out
public Status Run(Handle & h,Tensor & out,Tensor & mask) const按 mask 指示区域填充 out

成员

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 ModeGather 模式。枚举值:GATHER(一维索引), GATHER_ND(多维索引), GATHER_ELEMENTS(按元素)。

成员

public GatherX()

public ~GatherX()

public Status SetMode(Mode m)

参数

  • m Gather 模式

public Status SetAxis(int axis)

参数

  • axis 沿该维做 Gather

public Status SetBatchDims(int batch_dims)

参数

  • batch_dims index 中作为 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)查询工作区大小;
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 为组下标
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计算模式枚举。

成员

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)
public Status GetEpsilon(double & eps) const
public Status SetAxis(const int axis)
public Status GetAxis(int & axis) const
public Status SetGroup(const int g)
public Status GetGroup(int & g) const
public Status Run(Handle & h,Tensor & out,Tensor & mean,Tensor & invVar,const Tensor & in,const Tensor & gamma,const Tensor & beta) const

成员

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)
public ~Handle()
public int GetDeviceId() const
public Status SetStream(musaStream_t stream)
public musaStream_t GetStream() const
public Status SetAllowTF32(bool allow_tf32)控制是否允许在 MatMul、Conv 等运算中使用 TensorFloat-32 张量核。
public bool GetAllowTF32() const

成员

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)

参数

  • stream MUSA 流,后续算子将在此流上执行

返回值

设置结果状态

public musaStream_t GetStream() const

返回值

当前绑定的 MUSA 流

public Status SetAllowTF32(bool allow_tf32)

控制是否允许在 MatMul、Conv 等运算中使用 TensorFloat-32 张量核。

参数

  • allow_tf32 true 表示允许使用 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)
protected ImplBase(const ImplBase &) = delete
protected ImplBase(ImplBase &&) = delete
protected ImplBase & operator=(const ImplBase &) = delete
protected ImplBase & operator=(ImplBase &&) = delete

成员

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)
public Status GetMode(Mode & m) const
public Status SetScaleInfo(::std::initializer_list< float > scale)
public Status SetScaleInfo(int length,float * scale)
public Status GetScaleInfo(int & length,float *& scale) const
public Status SetAlignCorners(bool align_corners)仅对 linear-1/2/3D 与 bicubic 有效;
public Status GetAlignCorners(bool & align_corners) const
public Status SetAntialias(bool antialias)仅对 linear-2D 与 bicubic 有效;
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(双三次)。

成员

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。

成员

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)
public Status GetVarMode(VarMode & var_mode) const
public Status SetEpsilon(double eps)
public Status GetEpsilon(double & eps) const
public Status SetAxis(::std::initializer_list< int > axes)
public Status SetAxis(size_t length,const int * axes)
public Status GetAxis(size_t & length,int *& axes) const
public Status Run(Handle & h,Tensor & out,Tensor & mean,Tensor & inv_var,const Tensor & in,const Tensor & gamma,const Tensor & beta,const MemoryMaintainer & maintainer) const前向:out, mean, inv_var 为输出
public Status GetForwardWorkspaceSize(Handle & h,size_t & size_in_byte,Tensor & out,Tensor & mean,Tensor & inv_var,const Tensor & in,const Tensor & gamma,const Tensor & beta) const查询前向工作区大小
public Status RunBwd(Handle & h,Tensor & dX,Tensor & dGamma,Tensor & dBeta,const Tensor & dY,const Tensor & in,const Tensor & mean,const Tensor & invVar,const Tensor & gamma,const MemoryMaintainer & maintainer) const反向:dX, dGamma, dBeta 为梯度输出
public Status GetBackwardWorkspaceSize(Handle & h,size_t & size_in_byte,Tensor & dX,Tensor & dGamma,Tensor & dBeta,const Tensor & dY,const Tensor & in,const Tensor & mean,const Tensor & invVar,const Tensor & gamma) const查询反向工作区大小
enum VarMode方差计算模式。DIRECT(直接), WELFORD(在线算法)。

成员

public LayerNorm()

public ~LayerNorm()

public Status SetVarMode(VarMode var_mode)

参数

  • var_mode 方差计算模式

public Status GetVarMode(VarMode & var_mode) const

参数

  • var_mode 输出:当前 VarMode

public Status SetEpsilon(double eps)

参数

  • eps 方差稳定项

public Status GetEpsilon(double & eps) const

参数

  • eps 输出:当前 epsilon

public Status SetAxis(::std::initializer_list< int > axes)

参数

  • axes 归一化轴列表

public Status SetAxis(size_t length,const int * axes)

参数

  • length 轴数量;

  • axes 轴索引数组

public Status GetAxis(size_t & length,int *& axes) const

参数

  • length 输出:轴数量;

  • axes 输出:轴数组指针

public Status Run(Handle & h,Tensor & out,Tensor & mean,Tensor & inv_var,const Tensor & in,const Tensor & gamma,const Tensor & beta,const MemoryMaintainer & maintainer) const

前向:out, mean, inv_var 为输出

public Status GetForwardWorkspaceSize(Handle & h,size_t & size_in_byte,Tensor & out,Tensor & mean,Tensor & inv_var,const Tensor & in,const Tensor & gamma,const Tensor & beta) const

查询前向工作区大小

public Status RunBwd(Handle & h,Tensor & dX,Tensor & dGamma,Tensor & dBeta,const Tensor & dY,const Tensor & in,const Tensor & mean,const Tensor & invVar,const Tensor & gamma,const MemoryMaintainer & maintainer) const

反向:dX, dGamma, dBeta 为梯度输出

public Status GetBackwardWorkspaceSize(Handle & h,size_t & size_in_byte,Tensor & dX,Tensor & dGamma,Tensor & dBeta,const Tensor & dY,const Tensor & in,const Tensor & mean,const Tensor & invVar,const Tensor & gamma) const

查询反向工作区大小

enum VarMode

方差计算模式。DIRECT(直接), WELFORD(在线算法)。

class musa::dnn::LocalResponseNorm

class musa::dnn::LocalResponseNorm
: public musa::dnn::ImplBase

局部响应归一化(LRN):在通道/空间邻域上做归一化,常用 n, alpha, beta, k 四个参数。

概览

成员说明
public LocalResponseNorm()
public ~LocalResponseNorm()
public Status SetMode(Mode mode)
public Status SetParam(unsigned n,double alpha,double beta,double k)
public Status Run(Handle & h,Tensor & y,Tensor & scales,const Tensor & x) const
public Status RunBwd(Handle & h,Tensor & dx,const Tensor & y,const Tensor & dy,const Tensor & x,const Tensor & scales) constLRN 反向
enum ModeLRN 模式枚举

成员

public LocalResponseNorm()

public ~LocalResponseNorm()

public Status SetMode(Mode mode)

参数

  • mode LRN 模式

public Status SetParam(unsigned n,double alpha,double beta,double k)

参数

  • n 邻域窗口大小;

  • alpha 缩放;

  • beta 指数;

  • k 偏移

public Status Run(Handle & h,Tensor & y,Tensor & scales,const Tensor & x) const

参数

  • y 输出;

  • scales 归一化尺度(输出);

  • x 输入

public Status RunBwd(Handle & h,Tensor & dx,const Tensor & y,const Tensor & dy,const Tensor & x,const Tensor & scales) const

LRN 反向

enum Mode

LRN 模式枚举

class musa::dnn::MaskedScatter

class musa::dnn::MaskedScatter
: public musa::dnn::ImplBase

按 mask 将 source 中的值散布到 out 中(mask 为真的位置从 source 取)。

概览

成员说明
public MaskedScatter()
public ~MaskedScatter()
public Status Run(Handle & h,Tensor & out,const Tensor & mask,const Tensor & source,const MemoryMaintainer & maintainer) const

成员

public MaskedScatter()

public ~MaskedScatter()

public Status Run(Handle & h,Tensor & out,const Tensor & mask,const Tensor & source,const MemoryMaintainer & maintainer) const

参数

  • out 输出(被原地更新);

  • mask 掩码;

  • source 源张量;

  • maintainer 工作区

class musa::dnn::MaskedSelect

class musa::dnn::MaskedSelect
: public musa::dnn::ImplBase

按 mask 从 input 中选择元素写入 out(压缩为一维或保持结构由实现决定)。

概览

成员说明
public MaskedSelect()
public ~MaskedSelect()
public Status GetWorkspaceSize(Handle & h,Tensor & out,const Tensor & input,const Tensor & mask,size_t & size_in_bytes) const查询 Run 所需工作区大小;
public Status Run(Handle & h,Tensor & out,const Tensor & input,const Tensor & mask,const MemoryMaintainer & maintainer) const

成员

public MaskedSelect()

public ~MaskedSelect()

public Status GetWorkspaceSize(Handle & h,Tensor & out,const Tensor & input,const Tensor & mask,size_t & size_in_bytes) const

查询 Run 所需工作区大小;

参数

  • size_in_bytes 输出字节数

public Status Run(Handle & h,Tensor & out,const Tensor & input,const Tensor & mask,const MemoryMaintainer & maintainer) const

参数

  • out 输出;

  • input 输入;

  • mask 掩码;

  • maintainer 工作区

class musa::dnn::MatMul

class musa::dnn::MatMul
: public musa::dnn::ImplBase
: protected musa::dnn::MatrixBase

矩阵乘(MatMul):d = alpha * a * b + beta * c + gamma * bias,支持转置、alpha/beta/gamma、工作区与显式维度/leading dimension。

概览

成员说明
public MatMul()
public ~MatMul()
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 GetWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & c,const Tensor & a,const Tensor & b)查询 Run 所需工作区大小;
public Status Run(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const MemoryMaintainer & maintainer) const公式:c = alpha * a * b + beta * c
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 m,const int64_t n,const int64_t k,const int64_t lda,const int64_t ldb,const int64_t ldc,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 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 MemoryMaintainer & maintainer) const
enum ComputeMode计算模式枚举。

成员

public MatMul()

public ~MatMul()

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 乘子:alpha * a * b

public Status SetBeta(double beta)

参数

  • beta 乘子:beta * c

public Status SetGamma(double gamma)

参数

  • gamma 乘子:gamma * bias

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 = alpha * a * b + beta * c

参数

  • h 执行句柄。

  • c 输入/输出矩阵张量,保存 inplace 计算结果。

  • a 左输入矩阵;若 trans_a == false,逻辑形状为 (m, k),否则为 (k, m)

  • b 右输入矩阵;若 trans_b == false,逻辑形状为 (k, n),否则为 (n, k)

  • 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 m,const int64_t n,const int64_t k,const int64_t lda,const int64_t ldb,const int64_t ldc,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 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 MemoryMaintainer & maintainer) const

enum ComputeMode

计算模式枚举。

枚举值含义:TENSOR(张量/默认精度), SCALAR(标量模式)。

class musa::dnn::MatMulLtParam

class musa::dnn::MatMulLtParam
: public musa::dnn::ImplBase

低精度/量化 MatMul 的尾处理与缩放参数:epilogue 模式、scale_a/b/c/d、aux、amax_d、atomic_sync 等。

概览

成员说明
public MatMulLtParam()
public ~MatMulLtParam()
public Status SetEpilogue(const MatMulLtEpilogueMode epilog_mode)
public Status SetScale(const Tensor & scale_a,const Tensor & scale_b,const Tensor & scale_c,const Tensor & scale_d)设置各矩阵的量化 scale:scale_a、scale_b、scale_c、scale_d
public Status SetScale(const Tensor & scale_a,const Tensor & scale_b,const Tensor & scale_c,const Tensor & scale_d,const int quant_tile,const bool fixed_scale_layout)同上,并指定 quant_tile 与 fixed_scale_layout
public Status SetAux(Tensor & aux,const Tensor & scale_aux)
public Status SetAmaxD(Tensor & amax_d)
public Status SetAtomicSync(Tensor & atomic_sync_in,Tensor & atomic_sync_out)
enum MatMulLtEpilogueMode低精度 MatMul 尾处理模式。含 DEFAULT, RELU, RELU_AUX, BIAS, RELU_BIAS, RELU_AUX_BIAS, DRELU, DRELU_BGRAD, GELU, GELU_AUX, GELU_BIAS, GELU_AUX_BIAS, DGELU, DGELU_BGRAD 等。

成员

public MatMulLtParam()

public ~MatMulLtParam()

public Status SetEpilogue(const MatMulLtEpilogueMode epilog_mode)

参数

  • epilog_mode 尾处理模式(如 bias、relu、gelu 等)

public Status SetScale(const Tensor & scale_a,const Tensor & scale_b,const Tensor & scale_c,const Tensor & scale_d)

设置各矩阵的量化 scale:scale_a、scale_b、scale_c、scale_d

public Status SetScale(const Tensor & scale_a,const Tensor & scale_b,const Tensor & scale_c,const Tensor & scale_d,const int quant_tile,const bool fixed_scale_layout)

同上,并指定 quant_tile 与 fixed_scale_layout

public Status SetAux(Tensor & aux,const Tensor & scale_aux)

参数

  • aux 辅助输出张量;

  • scale_aux 辅助输出的 scale

public Status SetAmaxD(Tensor & amax_d)

参数

  • amax_d 输出 d 的绝对值最大值(用于动态量化)

public Status SetAtomicSync(Tensor & atomic_sync_in,Tensor & atomic_sync_out)

参数

  • atomic_sync_in 原子同步输入;

  • atomic_sync_out 原子同步输出

enum MatMulLtEpilogueMode

低精度 MatMul 尾处理模式。含 DEFAULT, RELU, RELU_AUX, BIAS, RELU_BIAS, RELU_AUX_BIAS, DRELU, DRELU_BGRAD, GELU, GELU_AUX, GELU_BIAS, GELU_AUX_BIAS, DGELU, DGELU_BGRAD 等。

class musa::dnn::MatrixBase

矩阵运算计算模式基类(如默认精度、TF32 等),仅用于继承。

概览

成员说明
protected MatrixBase() = default

成员

protected MatrixBase() = default

class musa::dnn::MultiHeadAttention

class musa::dnn::MultiHeadAttention
: public musa::dnn::ImplBase
: protected musa::dnn::MatrixBase

多头注意力:Q/K/V 线性变换 + 缩放点积注意力 + 输出线性,支持 mask 模式、key 格式、训练/推理、前向与反向及工作区查询。

概览

成员说明
public MultiHeadAttention()
public ~MultiHeadAttention()
public Status SetComputeMode(ComputeMode mode)
public Status SetEmbedDim(int embed_dim)
public Status SetKDim(int k_dim)
public Status SetVDim(int v_dim)
public Status SetHeadsNum(int num_heads)
public Status SetBatchFirst(bool batch_first)
public Status SetDropoutP(double p)
public Status SetScale(double scale)softmax 前缩放因子
public Status SetTraining(bool is_training)
public Status SetMaskMode(bool use_pad_mask)True:key_padding_mask,形状 [batch_size, seq_len];False:attn_mask,2D [seq_len, seq_len] 或 3D [batch * heads, seq_len, seq_len]
public Status SetTransLinearWeigth(bool trans_weight)True:PyTorch 风格 y=xA^T+b;False:TensorFlow 风格 y=xA+b
public Status SetKeyFormat(bool key_format_bhds)True:K 为 [batch, num_heads, sub_dim, seq_len],scores=gemm_nn(Q,K);False:K 为 [batch, num_heads, seq_len, sub_dim],scores=gemm_nt(Q,K)
public Status GetFwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,size_t & bwd_reserve_size_in_bytes,const Tensor & q,const Tensor & k,const Tensor & v) const
public Status GetFwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,size_t & bwd_reserve_size_in_bytes,const Tensor & in) const
public Status GetBwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,const Tensor & q,const Tensor & k,const Tensor & v) const
public Status GetBwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,const Tensor & in) const
public Status Run(Handle & h,Tensor & out,Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & weight_q,const Tensor & weight_k,const Tensor & weight_v,const Tensor & weight_o,const Tensor & bias_q,const Tensor & bias_k,const Tensor & bias_v,const Tensor & bias_o,const Tensor & mask,Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const
public Status Run(Handle & h,Tensor & out,Tensor & attn_probs,const Tensor & in,const Tensor & weight,const Tensor & weight_o,const Tensor & bias,const Tensor & bias_o,const Tensor & mask,Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const
public Status RunBwd(Handle & h,Tensor & in_grad,Tensor & weight_grad,Tensor & weight_o_grad,Tensor & bias_grad,Tensor & bias_o_grad,const Tensor & out_grad,const Tensor & attn_probs,const Tensor & in,const Tensor & weight,const Tensor & weight_o,const Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const
public Status RunBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,Tensor & v_grad,Tensor & weight_q_grad,Tensor & weight_k_grad,Tensor & weight_v_grad,Tensor & weight_o_grad,Tensor & bias_q_grad,Tensor & bias_k_grad,Tensor & bias_v_grad,Tensor & bias_o_grad,const Tensor & out_grad,const Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & weight_q,const Tensor & weight_k,const Tensor & weight_v,const Tensor & weight_o,const Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const
enum ComputeMode计算模式枚举。

成员

public MultiHeadAttention()

public ~MultiHeadAttention()

public Status SetComputeMode(ComputeMode mode)

参数

  • mode 计算精度模式

public Status SetEmbedDim(int embed_dim)

参数

  • embed_dim 嵌入维度(Q 的最后一维)

public Status SetKDim(int k_dim)

参数

  • k_dim K 的最后一维(可与 embed_dim 不同)

public Status SetVDim(int v_dim)

参数

  • v_dim V 的最后一维

public Status SetHeadsNum(int num_heads)

参数

  • num_heads 头数

public Status SetBatchFirst(bool batch_first)

参数

  • batch_first 输入是否为 (batch, seq, ...)

public Status SetDropoutP(double p)

参数

public Status SetScale(double scale)

softmax 前缩放因子

public Status SetTraining(bool is_training)

参数

  • is_training 是否训练模式

public Status SetMaskMode(bool use_pad_mask)

True:key_padding_mask,形状 [batch_size, seq_len];False:attn_mask,2D [seq_len, seq_len] 或 3D [batch * heads, seq_len, seq_len]

public Status SetTransLinearWeigth(bool trans_weight)

True:PyTorch 风格 y=xA^T+b;False:TensorFlow 风格 y=xA+b

public Status SetKeyFormat(bool key_format_bhds)

True:K 为 [batch, num_heads, sub_dim, seq_len],scores=gemm_nn(Q,K);False:K 为 [batch, num_heads, seq_len, sub_dim],scores=gemm_nt(Q,K)

public Status GetFwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,size_t & bwd_reserve_size_in_bytes,const Tensor & q,const Tensor & k,const Tensor & v) const

public Status GetFwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,size_t & bwd_reserve_size_in_bytes,const Tensor & in) const

public Status GetBwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,const Tensor & q,const Tensor & k,const Tensor & v) const

public Status GetBwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,const Tensor & in) const

public Status Run(Handle & h,Tensor & out,Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & weight_q,const Tensor & weight_k,const Tensor & weight_v,const Tensor & weight_o,const Tensor & bias_q,const Tensor & bias_k,const Tensor & bias_v,const Tensor & bias_o,const Tensor & mask,Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const

public Status Run(Handle & h,Tensor & out,Tensor & attn_probs,const Tensor & in,const Tensor & weight,const Tensor & weight_o,const Tensor & bias,const Tensor & bias_o,const Tensor & mask,Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const

public Status RunBwd(Handle & h,Tensor & in_grad,Tensor & weight_grad,Tensor & weight_o_grad,Tensor & bias_grad,Tensor & bias_o_grad,const Tensor & out_grad,const Tensor & attn_probs,const Tensor & in,const Tensor & weight,const Tensor & weight_o,const Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const

public Status RunBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,Tensor & v_grad,Tensor & weight_q_grad,Tensor & weight_k_grad,Tensor & weight_v_grad,Tensor & weight_o_grad,Tensor & bias_q_grad,Tensor & bias_k_grad,Tensor & bias_v_grad,Tensor & bias_o_grad,const Tensor & out_grad,const Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & weight_q,const Tensor & weight_k,const Tensor & weight_v,const Tensor & weight_o,const Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const

enum ComputeMode

计算模式枚举。

枚举值含义:TENSOR(张量/默认精度), SCALAR(标量模式)。

class musa::dnn::NLLLoss

class musa::dnn::NLLLoss
: public musa::dnn::ImplBase

负对数似然损失(NLL):与 log_softmax 配合用于分类,支持 ignore_index、weight、归约模式。

概览

成员说明
public NLLLoss()
public ~NLLLoss()
public Status SetReductionMode(Mode mode)
public Status GetReductionMode(Mode & mode) const
public Status SetIgnoreIndex(int index)
public Status GetIgnoreIndex(int & index) const
public Status GetForwardWorkspaceSize(Handle & h,Tensor & output,Tensor & totalWeight,const Tensor & input,const Tensor & target,const Tensor & weight,size_t & size_in_bytes) const
public Status Run(Handle & h,Tensor & out,Tensor & totalWeight,const Tensor & input,const Tensor & target,const Tensor & weight,const MemoryMaintainer & maintainer) const
public Status RunBwd(Handle & h,Tensor & out,const Tensor & grad,const Tensor & target,const Tensor & weight,const Tensor & totalWeight,const MemoryMaintainer & maintainer) const
enum Mode归约模式。NONE, MEAN, SUM, BATCHMEAN。

成员

public NLLLoss()

public ~NLLLoss()

public Status SetReductionMode(Mode mode)

public Status GetReductionMode(Mode & mode) const

public Status SetIgnoreIndex(int index)

public Status GetIgnoreIndex(int & index) const

public Status GetForwardWorkspaceSize(Handle & h,Tensor & output,Tensor & totalWeight,const Tensor & input,const Tensor & target,const Tensor & weight,size_t & size_in_bytes) const

public Status Run(Handle & h,Tensor & out,Tensor & totalWeight,const Tensor & input,const Tensor & target,const Tensor & weight,const MemoryMaintainer & maintainer) const

public Status RunBwd(Handle & h,Tensor & out,const Tensor & grad,const Tensor & target,const Tensor & weight,const Tensor & totalWeight,const MemoryMaintainer & maintainer) const

enum Mode

归约模式。NONE, MEAN, SUM, BATCHMEAN。

class musa::dnn::Nonzero

class musa::dnn::Nonzero
: public musa::dnn::ImplBase

返回 in 中非零元素的索引(坐标),输出形状为 (ndim, num_nonzero)。

概览

成员说明
public Nonzero()
public ~Nonzero()
public Status GetWorkspaceSize(Handle & h,Tensor & out,const Tensor & in,size_t & size_in_bytes) const查询工作区大小
public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const

成员

public Nonzero()

public ~Nonzero()

public Status GetWorkspaceSize(Handle & h,Tensor & out,const Tensor & in,size_t & size_in_bytes) const

查询工作区大小

public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const

参数

  • out 非零索引张量;

  • in 输入;

  • maintainer 工作区

class musa::dnn::Pad

class musa::dnn::Pad
: public musa::dnn::ImplBase

填充算子:在边界按 pad 与 mode 填充,支持常量填充值。

概览

成员说明
public Pad()
public ~Pad()
public Status SetMode(Mode mode)
public Status GetMode(Mode & mode) const
public Status SetValue(double value)常量填充时的浮点填充值
public Status SetValue(int64_t value)常量填充时的整型填充值
public Status SetPaddingInfo(::std::initializer_list< int > pad)
public Status SetPaddingInfo(int length,const int * pad)
public Status GetPaddingInfo(int & length,int *& pad) const
public Status Run(Handle & h,Tensor & out,const Tensor & input) const
enum Mode填充模式。CONSTANT(常量), REFLECT(反射), REPLICATE(复制), CIRCULAR(循环)。

成员

public Pad()

public ~Pad()

public Status SetMode(Mode mode)

参数

  • mode 填充模式(CONSTANT/REFLECT 等)

public Status GetMode(Mode & mode) const

public Status SetValue(double value)

常量填充时的浮点填充值

public Status SetValue(int64_t value)

常量填充时的整型填充值

public Status SetPaddingInfo(::std::initializer_list< int > pad)

参数

  • pad 各维两端填充量 [start_0,end_0, start_1,end_1, ...]

public Status SetPaddingInfo(int length,const int * pad)

参数

  • length 维数;

  • pad 填充数组

public Status GetPaddingInfo(int & length,int *& pad) const

参数

  • length 输出:维数;

  • pad 输出:填充数组指针

public Status Run(Handle & h,Tensor & out,const Tensor & input) const

参数

  • out 输出;

  • input 输入

enum Mode

填充模式。CONSTANT(常量), REFLECT(反射), REPLICATE(复制), CIRCULAR(循环)。

class musa::dnn::Permute

class musa::dnn::Permute
: public musa::dnn::ImplBase

张量维置换与切片算子:通过 ConfigDimStride 配置置换,通过 ConfigDimStrideForSlice 配置切片。

要求 out 与 in 的维度数(shape 长度)一致;步长由配置函数根据置换/切片参数写入 out、in。

概览

成员说明
public Permute()
public ~Permute()
public Status Run(Handle & h,Tensor & out,const Tensor & in) const执行置换/拷贝:根据 out、in 已配置的步长将 in 按置换顺序写入 out
public Status SetSrcOffset(int64_t s_offset)
public Status SetDstOffset(int64_t d_offset)
public Status ConfigDimStride(Tensor & out,Tensor & in,::std::initializer_list< int64_t > permute_dims)根据置换维度配置 out、in 的步长,使 Run 执行 permute_dims 指定的置换
public Status ConfigDimStride(Tensor & out,Tensor & in,int len,const int64_t * array_dims)同上,置换维度由数组 array_dims 指定,长度为 len
public Status ConfigDimStrideForSlice(Tensor & out,Tensor & in,const int64_t * start)配置切片:各维起始为 start,步长默认为 1
public Status ConfigDimStrideForSlice(Tensor & out,Tensor & in,const int64_t * start,const int64_t * stride)配置切片:各维起始 start,各维步长 stride

成员

public Permute()

public ~Permute()

public Status Run(Handle & h,Tensor & out,const Tensor & in) const

执行置换/拷贝:根据 out、in 已配置的步长将 in 按置换顺序写入 out

public Status SetSrcOffset(int64_t s_offset)

参数

  • s_offset 源张量起始偏移(元素单位)

public Status SetDstOffset(int64_t d_offset)

参数

  • d_offset 目标张量起始偏移(元素单位)

public Status ConfigDimStride(Tensor & out,Tensor & in,::std::initializer_list< int64_t > permute_dims)

根据置换维度配置 out、in 的步长,使 Run 执行 permute_dims 指定的置换

public Status ConfigDimStride(Tensor & out,Tensor & in,int len,const int64_t * array_dims)

同上,置换维度由数组 array_dims 指定,长度为 len

public Status ConfigDimStrideForSlice(Tensor & out,Tensor & in,const int64_t * start)

配置切片:各维起始为 start,步长默认为 1

public Status ConfigDimStrideForSlice(Tensor & out,Tensor & in,const int64_t * start,const int64_t * stride)

配置切片:各维起始 start,各维步长 stride

class musa::dnn::Pooling

class musa::dnn::Pooling
: public musa::dnn::ImplBase

池化算子:Max/Avg 等,支持 kernel/pad/stride/dilation、divisor、indices 输出与反向。

概览

成员说明
public Pooling()
public ~Pooling()
public Status SetMode(Mode m)
public Status GetMode(Mode & m) const
public Status SetNdInfo(::std::initializer_list< int > kernel,::std::initializer_list< int > pad,::std::initializer_list< int > stride,::std::initializer_list< int > dilation)支持最多 3 维;kernel/pad/stride/dilation 分别为核大小、填充、步长、膨胀
public Status SetNdInfo(int len,const int * kernel,const int * pad,const int * stride,const int * dilation)
public Status GetNdInfo(int & len,int *& kernel,int *& pad,int *& stride,int *& dilation) const输出当前 kernel/pad/stride/dilation 及长度
public Status SetDivisor(int divisor)
public Status GetDivisor(int & divisor) const
public Status Run(Handle & h,Tensor & out,const Tensor & in,Tensor & indices) const
public Status RunBwd(Handle & h,Tensor & out,const Tensor & in,Tensor & indices) const池化反向:
public Status RunMaxPool2dGradGrad(Handle & h,Tensor & out,const Tensor & in,const Tensor & indices) constMaxPool2d 的二阶梯度
enum Mode池化模式。枚举值:MAXPOOL(最大池化), AVGPOOL_COUNT_PAD(平均池化计填充), AVGPOOL_COUNT_WITHOUT_PAD(平均池化不计填充), GLOBAL_AVGPOOL(全局平均), ADAPTIVE_MAXPOOL(自适应最大), ADAPTIVE_AVGPOOL(自适应平均)。

成员

public Pooling()

public ~Pooling()

public Status SetMode(Mode m)

参数

  • m 池化模式(MAX/AVG 等)

public Status GetMode(Mode & m) const

public Status SetNdInfo(::std::initializer_list< int > kernel,::std::initializer_list< int > pad,::std::initializer_list< int > stride,::std::initializer_list< int > dilation)

支持最多 3 维;kernel/pad/stride/dilation 分别为核大小、填充、步长、膨胀

public Status SetNdInfo(int len,const int * kernel,const int * pad,const int * stride,const int * dilation)

参数

  • len 空间维数;

  • kernel 核大小;

  • pad 填充;

  • stride 步长;

  • dilation 膨胀

public Status GetNdInfo(int & len,int *& kernel,int *& pad,int *& stride,int *& dilation) const

输出当前 kernel/pad/stride/dilation 及长度

public Status SetDivisor(int divisor)

参数

  • divisor 平均池化时的除数(默认由核元素数决定)

public Status GetDivisor(int & divisor) const

public Status Run(Handle & h,Tensor & out,const Tensor & in,Tensor & indices) const

参数

  • out 输出;

  • in 输入;

  • indices 最大池化时的索引(输出)

public Status RunBwd(Handle & h,Tensor & out,const Tensor & in,Tensor & indices) const

池化反向:

参数

  • out 输入的梯度;

  • in 前向输入;

  • indices 前向输出的索引

public Status RunMaxPool2dGradGrad(Handle & h,Tensor & out,const Tensor & in,const Tensor & indices) const

MaxPool2d 的二阶梯度

enum Mode

池化模式。枚举值:MAXPOOL(最大池化), AVGPOOL_COUNT_PAD(平均池化计填充), AVGPOOL_COUNT_WITHOUT_PAD(平均池化不计填充), GLOBAL_AVGPOOL(全局平均), ADAPTIVE_MAXPOOL(自适应最大), ADAPTIVE_AVGPOOL(自适应平均)。

class musa::dnn::Reduce

class musa::dnn::Reduce
: public musa::dnn::ImplBase

归约算子:沿指定维度做 sum/max/min/mean 等,支持 argmax/argmin、带索引输出等。

ndims 为 0 时表示对所有维度归约,输出为单元素。

概览

成员说明
public Reduce()
public ~Reduce()
public Status SetMode(Mode m)
public Status SetDim(::std::initializer_list< int > dim)设置归约维度;ndims=0 表示归约所有维度,输出为单元素
public Status SetDim(int ndim,const int * dim)
public Status SetNormOrd(float ord)
public Status SetCorrection(int correction)
public Status GetWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out,const Tensor & in)查询 Run 所需工作区大小;
public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const执行归约;
public Status GetMeanAndVarWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out_var,Tensor & out_mean,const Tensor & in)查询 RunMeanAndVar 所需工作区大小
public Status RunMeanAndVar(Handle & h,Tensor & out_var,Tensor & out_mean,const Tensor & in,const MemoryMaintainer & maintainer) const同时计算均值和方差并写入 out_mean、out_var
public Status GetIndicesWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out,const Tensor & in)仅支持 mode 为 argmax/argmin 且归约维度数为 1;查询 RunIndices 工作区大小
public Status RunIndices(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const归约并输出索引(argmax/argmin)
public Status GetWithIndicesWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out,Tensor & indices,const Tensor & in)仅支持 mode 为 max/min 且归约维度数为 1;查询 RunWithIndices 工作区大小
public Status RunWithIndices(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,const MemoryMaintainer & maintainer) const归约并同时输出值与索引(max/min)
enum Mode归约模式枚举。

成员

public Reduce()

public ~Reduce()

public Status SetMode(Mode m)

参数

  • m 归约模式(如 sum、max、min、mean、argmax、argmin 等)

public Status SetDim(::std::initializer_list< int > dim)

设置归约维度;ndims=0 表示归约所有维度,输出为单元素

public Status SetDim(int ndim,const int * dim)

参数

  • ndim 归约维度数量;

  • dim 归约维度索引数组

public Status SetNormOrd(float ord)

参数

  • ord 范数阶数(用于 norm 类归约)

public Status SetCorrection(int correction)

参数

  • correction 方差计算的 Bessel 修正(0 为总体方差,1 为样本方差等)

public Status GetWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out,const Tensor & in)

查询 Run 所需工作区大小;

参数

  • size_in_bytes 输出字节数

public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const

执行归约;

参数

  • maintainer 工作区分配器

public Status GetMeanAndVarWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out_var,Tensor & out_mean,const Tensor & in)

查询 RunMeanAndVar 所需工作区大小

public Status RunMeanAndVar(Handle & h,Tensor & out_var,Tensor & out_mean,const Tensor & in,const MemoryMaintainer & maintainer) const

同时计算均值和方差并写入 out_mean、out_var

public Status GetIndicesWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out,const Tensor & in)

仅支持 mode 为 argmax/argmin 且归约维度数为 1;查询 RunIndices 工作区大小

public Status RunIndices(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const

归约并输出索引(argmax/argmin)

public Status GetWithIndicesWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out,Tensor & indices,const Tensor & in)

仅支持 mode 为 max/min 且归约维度数为 1;查询 RunWithIndices 工作区大小

public Status RunWithIndices(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,const MemoryMaintainer & maintainer) const

归约并同时输出值与索引(max/min)

enum Mode

归约模式枚举。

class musa::dnn::RMSNorm

class musa::dnn::RMSNorm
: public musa::dnn::ImplBase

RMS 归一化:out = in / sqrt(mean(in^2) + eps) * gamma,无 beta,无均值输出。

概览

成员说明
public RMSNorm()
public ~RMSNorm()
public Status SetVarMode(VarMode var_mode)
public Status GetVarMode(VarMode & var_mode) const
public Status SetEpsilon(double eps)
public Status GetEpsilon(double & eps) const
public Status SetAxis(::std::initializer_list< int > axes)
public Status SetAxis(size_t length,const int * axes)
public Status GetAxis(size_t & length,int *& axes) const
public Status Run(Handle & h,Tensor & out,Tensor & inv_var,const Tensor & in,const Tensor & gamma) const
public Status RunBwd(Handle & h,Tensor & dX,Tensor & dGamma,const Tensor & dY,const Tensor & in,const Tensor & invVar,const Tensor & gamma,const MemoryMaintainer & maintainer) const
public Status GetBackwardWorkspaceSize(Handle & h,size_t & size_in_byte,Tensor & dX,Tensor & dGamma,const Tensor & dY,const Tensor & in,const Tensor & invVar,const Tensor & gamma) const
enum VarMode方差计算模式。枚举值:DIRECT, WELFORD。

成员

public RMSNorm()

public ~RMSNorm()

public Status SetVarMode(VarMode var_mode)

public Status GetVarMode(VarMode & var_mode) const

public Status SetEpsilon(double eps)

public Status GetEpsilon(double & eps) const

public Status SetAxis(::std::initializer_list< int > axes)

public Status SetAxis(size_t length,const int * axes)

public Status GetAxis(size_t & length,int *& axes) const

public Status Run(Handle & h,Tensor & out,Tensor & inv_var,const Tensor & in,const Tensor & gamma) const

参数

  • inv_var 输出 1/sqrt(var+eps)

public Status RunBwd(Handle & h,Tensor & dX,Tensor & dGamma,const Tensor & dY,const Tensor & in,const Tensor & invVar,const Tensor & gamma,const MemoryMaintainer & maintainer) const

public Status GetBackwardWorkspaceSize(Handle & h,size_t & size_in_byte,Tensor & dX,Tensor & dGamma,const Tensor & dY,const Tensor & in,const Tensor & invVar,const Tensor & gamma) const

enum VarMode

方差计算模式。枚举值:DIRECT, WELFORD。

class musa::dnn::RNN

class musa::dnn::RNN
: public musa::dnn::ImplBase
: protected musa::dnn::MatrixBase

RNN/LSTM/GRU 等循环网络:支持 SEQ_FIRST 格式、BiasMode、Direction、PackPadded/PadPacked 与反向。

权重大小由 BiasMode 决定(BOTH/NEITHER/ONLY_INPUT/ONLY_HIDDEN);LSTM 公式见头内注释。

概览

成员说明
public RNN()
public ~RNN()
public Status SetMode(Mode m)
public Status SetFormat(Format m)
public Status SetBiasMode(BiasMode bm)
public Status SetDirection(Direction d)
public Status SetComputeMode(ComputeMode mode)
public Status RunUnpacked(Handle & h,Tensor & out,Tensor & hout,Tensor & cout,const Tensor & in,const Tensor & hin,const Tensor & cin,const Tensor * weight,Tensor & bwdHint,const MemoryMaintainer & maintainer) const
public Status RunUnpackedBwd(Handle & h,Tensor & in_grad,Tensor & hin_grad,Tensor & cin_grad,const Tensor * weight_grad,const Tensor & in,const Tensor & hin,const Tensor & cin,const Tensor * weight,const Tensor & out,const Tensor & bwdHint,const Tensor & out_grad,const Tensor & hout_grad,const Tensor & cout_grad,const MemoryMaintainer & maintainer) const
public Status RunPackPaddedSequence(Handle & h,Tensor & packed,Tensor & batsize,const Tensor & padded,const Tensor & lengths,bool batch_first,bool enforce_sorted)
public Status RunPadPackedSequence(Handle & h,Tensor & padded,Tensor & lengths,const Tensor & packed,const Tensor & batsize,bool batch_first,float padding_value)
enum ModeRNN 单元类型。LSTM, RNN_RELU, RNN_TANH, GRU。
enum Format序列布局。BATCH_FIRST(批优先), SEQ_FIRST(序列优先)。
enum BiasMode偏置模式。NEITHER(无), ONLY_INPUT(仅输入), ONLY_HIDDEN(仅隐状态), BOTH(均有)。
enum Direction方向。SINGLE(单向), DUAL(双向)。
enum ComputeMode计算模式枚举。

成员

public RNN()

public ~RNN()

public Status SetMode(Mode m)

public Status SetFormat(Format m)

public Status SetBiasMode(BiasMode bm)

public Status SetDirection(Direction d)

public Status SetComputeMode(ComputeMode mode)

public Status RunUnpacked(Handle & h,Tensor & out,Tensor & hout,Tensor & cout,const Tensor & in,const Tensor & hin,const Tensor & cin,const Tensor * weight,Tensor & bwdHint,const MemoryMaintainer & maintainer) const

public Status RunUnpackedBwd(Handle & h,Tensor & in_grad,Tensor & hin_grad,Tensor & cin_grad,const Tensor * weight_grad,const Tensor & in,const Tensor & hin,const Tensor & cin,const Tensor * weight,const Tensor & out,const Tensor & bwdHint,const Tensor & out_grad,const Tensor & hout_grad,const Tensor & cout_grad,const MemoryMaintainer & maintainer) const

public Status RunPackPaddedSequence(Handle & h,Tensor & packed,Tensor & batsize,const Tensor & padded,const Tensor & lengths,bool batch_first,bool enforce_sorted)

public Status RunPadPackedSequence(Handle & h,Tensor & padded,Tensor & lengths,const Tensor & packed,const Tensor & batsize,bool batch_first,float padding_value)

enum Mode

RNN 单元类型。LSTM, RNN_RELU, RNN_TANH, GRU。

enum Format

序列布局。BATCH_FIRST(批优先), SEQ_FIRST(序列优先)。

enum BiasMode

偏置模式。NEITHER(无), ONLY_INPUT(仅输入), ONLY_HIDDEN(仅隐状态), BOTH(均有)。

enum Direction

方向。SINGLE(单向), DUAL(双向)。

enum ComputeMode

计算模式枚举。

枚举值含义:TENSOR(张量/默认精度), SCALAR(标量模式)。

class musa::dnn::Rope

class musa::dnn::Rope
: public musa::dnn::ImplBase

旋转位置编码算子(Rotary Positional Embedding, RoPE),对输入张量按频率张量 freqs_cis 施加旋转位置编码,支持交错布局、batch_first 布局以及 multi-latent attention 配置,并提供前向与反向接口。

概览

成员说明
public Rope()
public ~Rope()
public Status SetRotaryInterleaved(bool rotary_interleaved)
public Status GetRotaryInterleaved(bool & rotary_interleaved) const
public Status SetBatchFirst(bool batch_first)
public Status GetBatchFirst(bool & batch_first) const
public Status SetMultiLatentAttention(bool multi_latent_attention)
public Status GetMultiLatentAttention(bool & multi_latent_attention) const
public Status Run(Handle & h,Tensor & t_out,const Tensor & t_in,const Tensor & freqs_cis) const
public Status RunBwd(Handle & h,Tensor & dt,const Tensor & dout_t,const Tensor & freqs_cis) const

成员

public Rope()

public ~Rope()

public Status SetRotaryInterleaved(bool rotary_interleaved)

public Status GetRotaryInterleaved(bool & rotary_interleaved) const

public Status SetBatchFirst(bool batch_first)

public Status GetBatchFirst(bool & batch_first) const

public Status SetMultiLatentAttention(bool multi_latent_attention)

public Status GetMultiLatentAttention(bool & multi_latent_attention) const

public Status Run(Handle & h,Tensor & t_out,const Tensor & t_in,const Tensor & freqs_cis) const

public Status RunBwd(Handle & h,Tensor & dt,const Tensor & dout_t,const Tensor & freqs_cis) const

class musa::dnn::ScaledDotProductAttention

class musa::dnn::ScaledDotProductAttention
: public musa::dnn::ImplBase
: protected musa::dnn::MatrixBase

缩放点积注意力:Flash / FlashVarlen / Math 三种实现,支持 mask、causal、dropout、logsumexp、变长序列 cu_seqlens。

概览

成员说明
public ScaledDotProductAttention()
public ~ScaledDotProductAttention()
public Status SetComputeMode(ComputeMode mode)
public Status SetEmbedDim(int embed_dim)
public Status SetBatchSize(int batch_size)
public Status SetHeadsNum(int num_heads)
public Status SetDropoutP(double p)
public Status SetSeed(uint64_t seed,uint64_t offset,int dropout_mode,const uint64_t * device_seed,const uint64_t * device_offset,uint64_t graph_offset)
public Status SetScale(double scale)softmax 前缩放因子
public Status SetTraining(bool is_training)
public Status SetMaskMode(bool use_pad_mask)True:key_padding_mask [batch, seq_len];False:attn_mask 2D/3D
public Status SetKeyFormat(bool key_format_bhds)True:K [batch, heads, sub_dim, seq_len];False:K [batch, heads, seq_len, sub_dim]
public Status SetCausal(bool is_causal)
public Status SetIsDeterministic(bool is_deterministic)
public Status SetMaxSeqlenQ(int max_seqlen_q)
public Status SetMaxSeqlenK(int max_seqlen_k)
public Status RunFlash(Handle & h,Tensor & out,Tensor & logsumexp,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,Tensor & dropout_mask,const MemoryMaintainer & maintainer) const
public Status GetFlashBwdWorkspaceSize(Handle & h,const Tensor & q_grad,const Tensor & k_grad,const Tensor & v_grad,const Tensor & dout,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,size_t & size_in_bytes) const
public Status RunFlashBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,Tensor & v_grad,const Tensor & out_grad,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,const MemoryMaintainer & maintainer) const
public Status RunFlashVarlen(Handle & h,Tensor & out,Tensor & logsumexp,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,Tensor & dropout_mask,const Tensor & cu_seqlens_q,const Tensor & cu_seqlens_k,const MemoryMaintainer & maintainer) const
public Status GetFlashVarlenBwdWorkspaceSize(Handle & h,const Tensor & q_grad,const Tensor & k_grad,const Tensor & v_grad,const Tensor & dout,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,const Tensor & cu_seqlens_q,const Tensor & cu_seqlens_k,size_t & size_in_bytes) const
public Status RunFlashVarlenBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,Tensor & v_grad,const Tensor & out_grad,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,const Tensor & cu_seqlens_q,const Tensor & cu_seqlens_k,const MemoryMaintainer & maintainer) const
public Status GetMathForwardWorkspaceSize(Handle & h,const Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & dropout_mask,const Tensor & out,size_t & size_in_bytes) const
public Status RunMath(Handle & h,Tensor & out,Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,Tensor & dropout_mask,const MemoryMaintainer & maintainer) const
public Status GetMathBackwardWorkspaceSize(Handle & h,const Tensor & dout,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & dropout_mask,size_t & size_in_bytes) const
public Status RunMathBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,const Tensor & v_grad,const Tensor & attn_probs_grad,const Tensor & out_grad,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & attn_probs,const Tensor & dropout_mask,const MemoryMaintainer & maintainer) const
enum ComputeMode计算模式枚举。

成员

public ScaledDotProductAttention()

public ~ScaledDotProductAttention()

public Status SetComputeMode(ComputeMode mode)

参数

  • mode 计算精度模式

public Status SetEmbedDim(int embed_dim)

参数

  • embed_dim 嵌入/头维度

public Status SetBatchSize(int batch_size)

参数

  • batch_size 批大小

public Status SetHeadsNum(int num_heads)

参数

  • num_heads 头数

public Status SetDropoutP(double p)

参数

public Status SetSeed(uint64_t seed,uint64_t offset,int dropout_mode,const uint64_t * device_seed,const uint64_t * device_offset,uint64_t graph_offset)

参数

  • seed 主机种子;

  • offset 主机偏移;

  • dropout_mode 模式;

  • device_seed 设备种子;

  • device_offset 设备偏移;

  • graph_offset 图偏移

public Status SetScale(double scale)

softmax 前缩放因子

public Status SetTraining(bool is_training)

参数

  • is_training 是否训练

public Status SetMaskMode(bool use_pad_mask)

True:key_padding_mask [batch, seq_len];False:attn_mask 2D/3D

public Status SetKeyFormat(bool key_format_bhds)

True:K [batch, heads, sub_dim, seq_len];False:K [batch, heads, seq_len, sub_dim]

public Status SetCausal(bool is_causal)

参数

  • is_causal 是否因果 mask

public Status SetIsDeterministic(bool is_deterministic)

参数

  • is_deterministic 是否确定性

public Status SetMaxSeqlenQ(int max_seqlen_q)

参数

  • max_seqlen_q Q 最大序列长度(变长/Flash 用)

public Status SetMaxSeqlenK(int max_seqlen_k)

参数

  • max_seqlen_k K 最大序列长度

public Status RunFlash(Handle & h,Tensor & out,Tensor & logsumexp,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,Tensor & dropout_mask,const MemoryMaintainer & maintainer) const

public Status GetFlashBwdWorkspaceSize(Handle & h,const Tensor & q_grad,const Tensor & k_grad,const Tensor & v_grad,const Tensor & dout,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,size_t & size_in_bytes) const

public Status RunFlashBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,Tensor & v_grad,const Tensor & out_grad,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,const MemoryMaintainer & maintainer) const

public Status RunFlashVarlen(Handle & h,Tensor & out,Tensor & logsumexp,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,Tensor & dropout_mask,const Tensor & cu_seqlens_q,const Tensor & cu_seqlens_k,const MemoryMaintainer & maintainer) const

public Status GetFlashVarlenBwdWorkspaceSize(Handle & h,const Tensor & q_grad,const Tensor & k_grad,const Tensor & v_grad,const Tensor & dout,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,const Tensor & cu_seqlens_q,const Tensor & cu_seqlens_k,size_t & size_in_bytes) const

public Status RunFlashVarlenBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,Tensor & v_grad,const Tensor & out_grad,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,const Tensor & cu_seqlens_q,const Tensor & cu_seqlens_k,const MemoryMaintainer & maintainer) const

public Status GetMathForwardWorkspaceSize(Handle & h,const Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & dropout_mask,const Tensor & out,size_t & size_in_bytes) const

public Status RunMath(Handle & h,Tensor & out,Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,Tensor & dropout_mask,const MemoryMaintainer & maintainer) const

public Status GetMathBackwardWorkspaceSize(Handle & h,const Tensor & dout,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & dropout_mask,size_t & size_in_bytes) const

public Status RunMathBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,const Tensor & v_grad,const Tensor & attn_probs_grad,const Tensor & out_grad,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & attn_probs,const Tensor & dropout_mask,const MemoryMaintainer & maintainer) const

enum ComputeMode

计算模式枚举。

枚举值含义:TENSOR(张量/默认精度), SCALAR(标量模式)。

class musa::dnn::Scan

class musa::dnn::Scan
: public musa::dnn::ImplBase

扫描算子(前缀运算)。沿指定维度执行 inclusive 或 exclusive 前缀计算,支持加法与乘法两种扫描类型,并可配置初始值。

概览

成员说明
public Scan()
public ~Scan()
public Status SetMode(Mode m)
public Status SetOpType(ScanOpType op_type)
public Status SetInitVal(double value)
public Status SetInitVal(int64_t value)
public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const
enum Mode扫描模式。INCLUSIVE(含当前), EXCLUSIVE(不含当前)。
enum ScanOpType扫描运算类型。ADD(累加), MUL(累乘)。

成员

public Scan()

public ~Scan()

public Status SetMode(Mode m)

public Status SetOpType(ScanOpType op_type)

public Status SetInitVal(double value)

public Status SetInitVal(int64_t value)

public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const

参数

  • out 输出;

  • in 输入;

  • maintainer 工作区

enum Mode

扫描模式。INCLUSIVE(含当前), EXCLUSIVE(不含当前)。

enum ScanOpType

扫描运算类型。ADD(累加), MUL(累乘)。

class musa::dnn::Scatter

class musa::dnn::Scatter
: public musa::dnn::ImplBase

Scatter:根据 idx 与 dim 将 update 散布到 self 或 out(inplace 与 outplace 两种 Run)。

概览

成员说明
public Scatter()
public ~Scatter()
public Status SetMode(Mode mode)
public Status GetMode(Mode & mode) const
public Status Run(Handle & h,Tensor & self,const Tensor & idx,const Tensor & update,int dim,const MemoryMaintainer & maintainer) const
public Status Run(Handle & h,Tensor & out,const Tensor & self,const Tensor & idx,const Tensor & update,int dim,const MemoryMaintainer & maintainer) constOutplace:out 为输出,self/idx/update 为输入,dim 为散布维度
enum Mode散布模式。UPDATE_ONLY(仅覆盖), ADD(加), SUB(减), MUL(乘)。

成员

public Scatter()

public ~Scatter()

public Status SetMode(Mode mode)

public Status GetMode(Mode & mode) const

public Status Run(Handle & h,Tensor & self,const Tensor & idx,const Tensor & update,int dim,const MemoryMaintainer & maintainer) const

public Status Run(Handle & h,Tensor & out,const Tensor & self,const Tensor & idx,const Tensor & update,int dim,const MemoryMaintainer & maintainer) const

Outplace:out 为输出,self/idx/update 为输入,dim 为散布维度

enum Mode

散布模式。UPDATE_ONLY(仅覆盖), ADD(加), SUB(减), MUL(乘)。

class musa::dnn::ScatterND

class musa::dnn::ScatterND
: public musa::dnn::ImplBase

多维 Scatter:根据多维索引 idx 将 update 散布到 self(索引为多维坐标)。

概览

成员说明
public ScatterND()
public ~ScatterND()
public Status SetMode(Mode mode)
public Status GetMode(Mode & mode) const
public Status Run(Handle & h,Tensor & self,const Tensor & idx,const Tensor & update,const MemoryMaintainer & maintainer) const
enum Mode散布模式。UPDATE_ONLY, ADD, SUB, MUL。

成员

public ScatterND()

public ~ScatterND()

public Status SetMode(Mode mode)

public Status GetMode(Mode & mode) const

public Status Run(Handle & h,Tensor & self,const Tensor & idx,const Tensor & update,const MemoryMaintainer & maintainer) const

参数

  • self 被原地更新;

  • idx 索引;

  • update 更新值;

  • maintainer 工作区

enum Mode

散布模式。UPDATE_ONLY, ADD, SUB, MUL。

class musa::dnn::Softmax

class musa::dnn::Softmax
: public musa::dnn::ImplBase

Softmax 算子:沿指定维度做 softmax,支持多种算法与模式、前向/反向及工作区查询。

概览

成员说明
public Softmax()
public ~Softmax()
public Status SetDim(int d)
public Status GetDim(int & d) const
public Status SetAlgorithm(Algorithm a)
public Status GetAlgorithm(Algorithm & a) const
public Status SetMode(Mode m)
public Status GetMode(Mode & m) const
public Status GetForwardWorkspaceSize(Handle & h,Tensor & out,Tensor & input,size_t & size_in_bytes) const
public Status Run(Handle & h,Tensor & out,const Tensor & input,const MemoryMaintainer & maintainer) const
public Status GetBackwardWorkspaceSize(Handle & h,Tensor & gradInput,const Tensor & output,const Tensor & gradOutput,size_t & size_in_bytes) const
public Status RunBwd(Handle & h,Tensor & gradInput,const Tensor & output,const Tensor & gradOutput,const MemoryMaintainer & maintainer) const
enum Algorithm计算算法。DIRECT(直接), ACCURATE(高精度)。
enum ModeSoftmax 模式。SOFTMAX, LOGSOFTMAX, LOGSUMEXP。

成员

public Softmax()

public ~Softmax()

public Status SetDim(int d)

public Status GetDim(int & d) const

public Status SetAlgorithm(Algorithm a)

public Status GetAlgorithm(Algorithm & a) const

public Status SetMode(Mode m)

public Status GetMode(Mode & m) const

public Status GetForwardWorkspaceSize(Handle & h,Tensor & out,Tensor & input,size_t & size_in_bytes) const

public Status Run(Handle & h,Tensor & out,const Tensor & input,const MemoryMaintainer & maintainer) const

public Status GetBackwardWorkspaceSize(Handle & h,Tensor & gradInput,const Tensor & output,const Tensor & gradOutput,size_t & size_in_bytes) const

public Status RunBwd(Handle & h,Tensor & gradInput,const Tensor & output,const Tensor & gradOutput,const MemoryMaintainer & maintainer) const

enum Algorithm

计算算法。DIRECT(直接), ACCURATE(高精度)。

enum Mode

Softmax 模式。SOFTMAX, LOGSOFTMAX, LOGSUMEXP。

class musa::dnn::Sort

class musa::dnn::Sort
: public musa::dnn::ImplBase

排序算子:沿 dim 对 in 排序,输出排序后的 out 与索引 indices;支持稳定排序与升/降序。

概览

成员说明
public Sort()
public ~Sort()
public Status SetDim(int dim)
public Status GetDim(int & dim) const
public Status SetStable(bool stable)
public Status GetStable(bool & stable) const
public Status SetDescending(bool descending)
public Status GetDescending(bool & descending) const
public Status GetWorkspaceSize(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,size_t & size_in_bytes) const查询工作区大小
public Status Run(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,const MemoryMaintainer & maintainer) const

成员

public Sort()

public ~Sort()

public Status SetDim(int dim)

参数

  • dim 排序维度,可为负

public Status GetDim(int & dim) const

public Status SetStable(bool stable)

参数

  • stable 是否稳定排序

public Status GetStable(bool & stable) const

public Status SetDescending(bool descending)

参数

  • descending 是否降序

public Status GetDescending(bool & descending) const

public Status GetWorkspaceSize(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,size_t & size_in_bytes) const

查询工作区大小

public Status Run(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,const MemoryMaintainer & maintainer) const

参数

  • out 排序后的值;

  • indices 排序索引;

  • in 输入;

  • maintainer 工作区

class musa::dnn::SortByKey

class musa::dnn::SortByKey
: public musa::dnn::ImplBase

按 key 排序:根据 key_in 对 key_in/value_in 一起排序,输出 key_out/value_out;当前仅支持升序、全量排序。

概览

成员说明
public SortByKey()
public ~SortByKey()
public Status SetDim(int dim)
public Status GetDim(int & dim) const
public Status SetStable(bool stable)
public Status GetStable(bool & stable) const
public Status SetDescending(bool descending)
public Status GetDescending(bool & descending) const
public Status GetWorkspaceSize(Handle & h,Tensor & key_out,Tensor & value_out,const Tensor & key_in,const Tensor & value_in,size_t & size_in_bytes) const查询工作区大小
public Status Run(Handle & h,Tensor & key_out,Tensor & value_out,const Tensor & key_in,const Tensor & value_in,const MemoryMaintainer & maintainer) const

成员

public SortByKey()

public ~SortByKey()

public Status SetDim(int dim)

public Status GetDim(int & dim) const

public Status SetStable(bool stable)

public Status GetStable(bool & stable) const

public Status SetDescending(bool descending)

public Status GetDescending(bool & descending) const

public Status GetWorkspaceSize(Handle & h,Tensor & key_out,Tensor & value_out,const Tensor & key_in,const Tensor & value_in,size_t & size_in_bytes) const

查询工作区大小

public Status Run(Handle & h,Tensor & key_out,Tensor & value_out,const Tensor & key_in,const Tensor & value_in,const MemoryMaintainer & maintainer) const

参数

  • key_out 排序后的 key;

  • value_out 排序后的 value;

  • key_in/value_in 输入

class musa::dnn::SwiGlu

class musa::dnn::SwiGlu
: public musa::dnn::ImplBase

SwiGLU:Swish 门控线性单元,前向与反向。

概览

成员说明
public SwiGlu()
public ~SwiGlu()
public Status Run(Handle & h,Tensor & out,const Tensor & in) const
public Status RunBwd(Handle & h,Tensor & out,const Tensor & in,const Tensor & grad) const

成员

public SwiGlu()

public ~SwiGlu()

public Status Run(Handle & h,Tensor & out,const Tensor & in) const

参数

  • out 输出;

  • in 输入

public Status RunBwd(Handle & h,Tensor & out,const Tensor & in,const Tensor & grad) const

参数

  • out 输入梯度;

  • in 前向输入;

  • grad 输出梯度

class musa::dnn::Tensor

class musa::dnn::Tensor
: protected musa::dnn::TensorBase
: public musa::dnn::ImplBase

多维张量描述符,描述数据地址、类型、格式、维度与步长,用于所有算子的输入输出。

支持设置/获取:地址(SetAddr/GetAddr)、类型(Type)、格式(Format)、维度与步长(SetNdInfo/GetNdInfo)、 量化信息(SetQuantizationInfo/GetQuantizationInfo),以及与主机/设备的拷贝(CopyFrom/CopyTo)。

概览

成员说明
public Tensor()
public Tensor(const Tensor &)
public Tensor(Tensor &&)
public ~Tensor()
public Tensor & operator=(const Tensor &)
public Tensor & operator=(Tensor &&)
public Status SetAddr(const void * addr)
public Status SetType(Type t)
public Status SetFormat(Format f)
public Status SetNdInfo(::std::initializer_list< int64_t > dim)
public Status SetNdInfo(int ndims,const int64_t * dim)
public Status SetNdInfo(int64_t ndims,const int64_t * dim)
public Status SetNdInfo(::std::initializer_list< int64_t > dim,::std::initializer_list< int64_t > stride)
public Status SetNdInfo(int ndims,const int64_t * dim,const int64_t * stride)
public Status SetNdInfo(int64_t ndims,const int64_t * dim,const int64_t * stride)
public Status GetNdInfo(::std::vector< int64_t > & dim) const
public Status GetNdInfo(::std::vector< int64_t > & dim,::std::vector< int64_t > & stride) const
public Status GetAddr(void *& a) const
public Status GetAddr(const void *& a) const
public Status GetType(Type & t) const
public Status GetFormat(Format & f) const
public Status SetQuantizationInfo(const float scale)
public Status GetQuantizationInfo(float & scale) const
public Status CopyFrom(void * ptr,size_t bytes,int kind,Handle & h,bool sync)从 ptr 拷贝数据到本张量。
public Status CopyTo(void * ptr,size_t bytes,int kind,Handle & h,bool sync) const从本张量拷贝数据到 ptr。
enum Format张量内存布局格式枚举。
enum Type张量元素数据类型枚举。

成员

public Tensor()

public Tensor(const Tensor &)

public Tensor(Tensor &&)

public ~Tensor()

public Tensor & operator=(const Tensor &)

public Tensor & operator=(Tensor &&)

public Status SetAddr(const void * addr)

参数

  • addr 张量数据所在内存地址(设备或主机,由调用方保证与 kind 一致)

public Status SetType(Type t)

参数

  • t 张量元素数据类型 (Type 枚举)

public Status SetFormat(Format f)

参数

  • f 张量内存布局格式 (Format 枚举)

public Status SetNdInfo(::std::initializer_list< int64_t > dim)

参数

  • dim 各维度大小列表

public Status SetNdInfo(int ndims,const int64_t * dim)

参数

  • ndims 维度数量;

  • dim 各维度大小数组

public Status SetNdInfo(int64_t ndims,const int64_t * dim)

参数

  • ndims 维度数量;

  • dim 各维度大小数组

public Status SetNdInfo(::std::initializer_list< int64_t > dim,::std::initializer_list< int64_t > stride)

参数

  • dim 各维度大小;

  • stride 各维度步长

public Status SetNdInfo(int ndims,const int64_t * dim,const int64_t * stride)

参数

  • ndims 维度数量;

  • dim 维度数组;

  • stride 步长数组

public Status SetNdInfo(int64_t ndims,const int64_t * dim,const int64_t * stride)

参数

  • ndims 维度数量;

  • dim 维度数组;

  • stride 步长数组

public Status GetNdInfo(::std::vector< int64_t > & dim) const

参数

  • dim 输出:各维度大小

public Status GetNdInfo(::std::vector< int64_t > & dim,::std::vector< int64_t > & stride) const

参数

  • dim 输出:各维度大小;

  • stride 输出:各维度步长

public Status GetAddr(void *& a) const

参数

  • a 输出:可写数据地址

public Status GetAddr(const void *& a) const

参数

  • a 输出:只读数据地址

public Status GetType(Type & t) const

参数

  • t 输出:当前数据类型

public Status GetFormat(Format & f) const

参数

  • f 输出:当前格式

public Status SetQuantizationInfo(const float scale)

参数

  • scale 量化缩放因子(用于 scale 量化)

public Status GetQuantizationInfo(float & scale) const

参数

  • scale 输出:当前量化 scale

public Status CopyFrom(void * ptr,size_t bytes,int kind,Handle & h,bool sync)

从 ptr 拷贝数据到本张量。

参数

  • ptr 源地址

  • bytes 拷贝字节数

  • kind 拷贝类型(如 host-to-device、device-to-device 等)

  • h 执行拷贝所用的句柄

  • sync 是否同步等待拷贝完成,默认 false

public Status CopyTo(void * ptr,size_t bytes,int kind,Handle & h,bool sync) const

从本张量拷贝数据到 ptr。

参数

  • ptr 目标地址

  • bytes 拷贝字节数

  • kind 拷贝类型

  • h 执行拷贝所用的句柄

  • sync 是否同步等待,默认 false

enum Format

张量内存布局格式枚举。

枚举值含义:UNKNOWN(未知), NCW(1D 批通道优先), NWC(1D 批宽通道), NCHW(2D 批通道高宽), NHWC(2D 批高宽通道), HWCN(2D 高宽通道批), NCDHW(3D 批通道深高宽), NDHWC(3D 批深高宽通道), DHWCN(3D 深高宽通道批)。

enum Type

张量元素数据类型枚举。

枚举值含义:QINT4(4 位量化整型), QINT8, INT8, INT16, INT32, INT64, UINT8, UINT16, UINT32, UINT64, HALF(FP16), BFLOAT16, FLOAT(FP32), DOUBLE(FP64), BOOL, FP8_E4M3, FP8_E5M2。

class musa::dnn::TensorBase

张量数据类型与格式的基类,仅用于继承,不直接实例化。

概览

成员说明
protected TensorBase() = default

成员

protected TensorBase() = default

class musa::dnn::Ternary

class musa::dnn::Ternary
: public musa::dnn::ImplBase

三元算子描述符:对三个张量逐元素运算,支持 alpha/beta/gamma 缩放。

概览

成员说明
public Ternary()
public ~Ternary()
public Status SetMode(Mode m)
public Status SetAlpha(double alpha)
public Status SetAlpha(int64_t alpha)
public Status SetAlpha(const void * alpha)
public Status SetBeta(double beta)
public Status SetBeta(int64_t beta)
public Status SetBeta(const void * beta)
public Status SetGamma(double gamma)
public Status SetGamma(int64_t gamma)
public Status SetGamma(const void * gamma)
public Status Run(Handle & h,Tensor & out,const Tensor & in0,const Tensor & in1,const Tensor & in2) const执行三元运算。
enum Mode三元运算模式枚举。

成员

public Ternary()

public ~Ternary()

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 SetGamma(double gamma)

参数

  • gamma 标量 gamma(double)

public Status SetGamma(int64_t gamma)

参数

  • gamma 标量 gamma(int64_t)

public Status SetGamma(const void * gamma)

参数

  • gamma 指向 gamma 的指针

public Status Run(Handle & h,Tensor & out,const Tensor & in0,const Tensor & in1,const Tensor & in2) const

执行三元运算。

参数

  • h 执行句柄

  • out 输出张量

  • in0 第一个输入张量

  • in1 第二个输入张量

  • in2 第三个输入张量

enum Mode

三元运算模式枚举。

枚举值含义:SELECT(条件选择), SELECTV2, ADDCMUL(乘加), ADDCMUL_ALPHA, ADDCDIV(除加), ADDCDIV_ALPHA, CLAMP(裁剪)。

class musa::dnn::TopK

class musa::dnn::TopK
: public musa::dnn::ImplBase

TopK:沿 dim 取最大或最小的 k 个元素及索引,支持 sorted、largest。

概览

成员说明
public TopK()
public ~TopK()
public Status SetK(int k)
public Status GetK(int & k) const
public Status SetDim(int dim)
public Status GetDim(int & dim) const
public Status SetLargest(bool largest)
public Status GetLargest(bool & largest) const
public Status SetSorted(bool sorted)
public Status GetSorted(bool & sorted) const
public Status GetWorkspaceSize(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,size_t & size_in_bytes) const查询工作区大小
public Status Run(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,const MemoryMaintainer & maintainer) const

成员

public TopK()

public ~TopK()

public Status SetK(int k)

参数

  • k 取前 k 个

public Status GetK(int & k) const

public Status SetDim(int dim)

参数

  • dim 操作维度

public Status GetDim(int & dim) const

public Status SetLargest(bool largest)

参数

  • largest true 为最大 k 个,false 为最小 k 个

public Status GetLargest(bool & largest) const

public Status SetSorted(bool sorted)

参数

  • sorted 输出是否按值排序

public Status GetSorted(bool & sorted) const

public Status GetWorkspaceSize(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,size_t & size_in_bytes) const

查询工作区大小

public Status Run(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,const MemoryMaintainer & maintainer) const

参数

  • out TopK 值;

  • indices 索引;

  • in 输入;

  • maintainer 工作区

class musa::dnn::Unary

class musa::dnn::Unary
: public musa::dnn::ImplBase

一元算子描述符:对单张量逐元素运算(如激活、取反等),支持 alpha/beta 缩放。

概览

成员说明
public Unary()
public ~Unary()
public Status SetMode(Mode m)
public Status SetAlpha(double alpha)
public Status SetAlpha(int64_t alpha)
public Status SetAlpha(const void * alpha)
public Status SetBeta(double beta)
public Status SetBeta(int64_t beta)
public Status SetBeta(const void * beta)
public Status Run(Handle & h,Tensor & out,const Tensor & in) const执行一元运算。
enum Mode一元运算模式枚举。含算术、舍入、判断、逻辑、指数对数、三角、比较、最值、激活等。

成员

public Unary()

public ~Unary()

public Status SetMode(Mode m)

参数

  • m 一元运算模式

public Status SetAlpha(double alpha)

参数

  • alpha 标量 alpha(double),参与运算 out = alpha * op(in) + beta * out 等

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 & in) const

执行一元运算。

参数

  • h 执行句柄

  • out 输出张量

  • in 输入张量

enum Mode

一元运算模式枚举。含算术、舍入、判断、逻辑、指数对数、三角、比较、最值、激活等。

class musa::dnn::Unfold

class musa::dnn::Unfold
: public musa::dnn::ImplBase

Unfold(滑动窗口展开):沿 axis 以 size 为窗口、step 为步长展开为多块。

概览

成员说明
public Unfold()
public ~Unfold()
public Status SetAxis(int axis)
public Status SetSize(int size)
public Status SetStep(int step)
public Status Run(Handle & h,Tensor & out,const Tensor & input) const

成员

public Unfold()

public ~Unfold()

public Status SetAxis(int axis)

参数

  • axis 展开维度

public Status SetSize(int size)

参数

  • size 窗口大小

public Status SetStep(int step)

参数

  • step 步长

public Status Run(Handle & h,Tensor & out,const Tensor & input) const

参数

  • out 输出;

  • input 输入

class musa::dnn::Unique

class musa::dnn::Unique
: public musa::dnn::ImplBase

Unique:去重,输出唯一值、逆索引与计数;支持多种 Mode。

概览

成员说明
public Unique()
public ~Unique()
public Status SetMode(Mode m)
public Status Run(Handle & h,Tensor & out,Tensor & inverse_indices,Tensor & counts,const Tensor & in,const MemoryMaintainer & maintainer) const
enum Mode去重/排序模式。GENERAL(通用), CONSECUTIVE(连续), UNSORTED(未排序)。

成员

public Unique()

public ~Unique()

public Status SetMode(Mode m)

public Status Run(Handle & h,Tensor & out,Tensor & inverse_indices,Tensor & counts,const Tensor & in,const MemoryMaintainer & maintainer) const

参数

  • out 唯一值;

  • inverse_indices 原张量每个元素在 out 中的索引;

  • counts 各唯一值出现次数;

  • in 输入

enum Mode

去重/排序模式。GENERAL(通用), CONSECUTIVE(连续), UNSORTED(未排序)。

class musa::dnn::WeightNorm

class musa::dnn::WeightNorm
: public musa::dnn::ImplBase

权重归一化:沿指定轴对 weight 做归一化,weightV/weightG 为分解后的向量与标量。

概览

成员说明
public WeightNorm()
public ~WeightNorm()
public Status SetEpsilon(double epsilon)数值稳定项,默认 0.0
public Status SetAxis(::std::initializer_list< int > axes)
public Status SetAxis(size_t length,const int * axes)
public Status Run(Handle & h,Tensor & out,const Tensor & weightV,const Tensor & weightG) const

成员

public WeightNorm()

public ~WeightNorm()

public Status SetEpsilon(double epsilon)

数值稳定项,默认 0.0

public Status SetAxis(::std::initializer_list< int > axes)

参数

  • axes 归一化轴列表

public Status SetAxis(size_t length,const int * axes)

参数

  • length 轴数量;

  • axes 轴数组

public Status Run(Handle & h,Tensor & out,const Tensor & weightV,const Tensor & weightG) const

参数

  • out 输出;

  • weightV 向量部分;

  • weightG 标量部分

struct musa::dnn::Convolution::FusedActivationDesc

融合激活描述:模式(IDENTITY/RELU 等)与系数 (activAlpha, activBeta, activGamma)

概览

成员说明
public Mode mode当前激活模式
public ::std::array< double, 3 > params激活系数 [activAlpha, activBeta, activGamma]
public Status SetMode(Mode m)
public Status SetCoef(double activAlpha,double activBeta,double activGamma)
enum Mode融合激活模式。IDENTITY(恒等), SIGMOID, RELU, TANH, CLIPPED_RELU, ELU, HARD_SWISH, SILU。

成员

public Mode mode

当前激活模式

public ::std::array< double, 3 > params

激活系数 [activAlpha, activBeta, activGamma]

public Status SetMode(Mode m)

参数

  • m 激活模式

public Status SetCoef(double activAlpha,double activBeta,double activGamma)

参数

  • activAlpha 激活参数 0;

  • activBeta 激活参数 1;

  • activGamma 激活参数 2

enum Mode

融合激活模式。IDENTITY(恒等), SIGMOID, RELU, TANH, CLIPPED_RELU, ELU, HARD_SWISH, SILU。

  • namespace musa::dnn
  • class musa::dnn::BatchMatMul
    • 概览
    • 成员
      • public BatchMatMul()
      • public ~BatchMatMul()
      • 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 GetWorkspaceSize(Handle & h,size_t & size_in_bytes,const Tensor & d,const Tensor & a,const Tensor & b,const Tensor & c,const MatMulLtParam & param)
      • public Status SetMpCountTarget(int mp_count_target)
      • 参数
      • public Status Run(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const MemoryMaintainer & maintainer) const
      • 参数
      • 返回值
      • 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
      • enum ComputeMode
  • class musa::dnn::BatchNorm
    • 概览
    • 成员
      • public BatchNorm()
      • public ~BatchNorm()
      • public Status SetMode(Mode m)
      • 参数
      • public Status GetMode(Mode & m) const
      • 参数
      • public Status SetEpsilon(double epsilon)
      • public Status GetEpsilon(double & epsilon) const
      • 参数
      • public Status SetTraining(bool is_training)
      • public Status GetTraining(bool & is_training) const
      • 参数
      • 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
      • 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
      • 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
      • enum Mode
  • class musa::dnn::Binary
    • 概览
    • 成员
      • public Binary()
      • public ~Binary()
      • public Status SetMode(Mode m)
      • 参数
      • public Status SetAlpha(double alpha)
      • 参数
      • public Status SetAlpha(int64_t alpha)
      • 参数
      • public Status SetAlpha(const void * alpha)
      • 参数
      • public Status SetBeta(double beta)
      • 参数
      • public Status SetBeta(int64_t beta)
      • 参数
      • public Status SetBeta(const void * beta)
      • 参数
      • public Status Run(Handle & h,Tensor & out,const Tensor & l,const Tensor & r) const
      • 参数
      • enum Mode
  • class musa::dnn::Concat
    • 概览
    • 成员
      • 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
      • 参数
  • class musa::dnn::Convolution
    • 概览
    • 成员
      • public Convolution()
      • public ~Convolution()
      • public Status SetGroups(int group_num)
      • 参数
      • public Status SetNdInfo(::std::initializer_list< int > pad,::std::initializer_list< int > stride,::std::initializer_list< int > dilation)
      • public Status SetNdInfo(int length,const int * pad,const int * stride,const int * dilation)
      • 参数
      • public Status SetComputeMode(ComputeMode mode)
      • 参数
      • public Status Run(Handle & h,Tensor & out,const Tensor & data,const Tensor & filter,Algorithm algo,const MemoryMaintainer & maintainer) const
      • 参数
      • 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
      • 参数
      • public Status RunBwdData(Handle & h,Tensor & out,const Tensor & data,const Tensor & filter,AlgorithmBwdData algo,const MemoryMaintainer & maintainer) const
      • 参数
      • public Status RunBwdFilter(Handle & h,Tensor & out,const Tensor & data,const Tensor & filter,AlgorithmBwdFilter algo,const MemoryMaintainer & maintainer) const
      • 参数
      • 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
      • 参数
      • 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
      • enum AlgorithmBwdData
      • enum AlgorithmBwdFilter
      • enum ComputeMode
  • class musa::dnn::CrossEntropyLoss
    • 概览
    • 成员
      • public CrossEntropyLoss()
      • public ~CrossEntropyLoss()
      • public Status SetReductionMode(ReductionMode a)
      • 参数
      • public Status GetReductionMode(ReductionMode & a) const
      • public Status SetIgnoreIndex(int64_t ignore_index)
      • 参数
      • public Status GetIgnoreIndex(int64_t & ignore_index) const
      • public Status SetLabelSmoothing(float 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
      • 参数
      • 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
      • 参数
      • public Status Run(Handle & h,Tensor & output,const Tensor & input,const Tensor & target,const Tensor & weight,const MemoryMaintainer & maintainer) const
      • 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
      • enum ReductionMode
  • class musa::dnn::CTCLoss
    • 概览
    • 成员
      • public CTCLoss()
      • public ~CTCLoss()
      • public Status SetDataType(Type dtype)
      • 参数
      • public Status GetDataType(Type & dtype) const
      • public Status SetLossNormMode(LossNormMode mode)
      • 参数
      • public Status GetLossNormMode(LossNormMode & mode) const
      • public Status SetPropagateNan(bool propagate_nan)
      • 参数
      • public Status GetPropagateNan(bool & propagate_nan) const
      • public Status SetZeroOobGradients(bool zero_oob_gradients)
      • 参数
      • public Status GetZeroOobGradients(bool & zero_oob_gradients) const
      • public Status SetBlank(int64_t blank)
      • 参数
      • public Status GetBlank(int64_t & blank) const
      • public Status SetZeroInfinity(bool zeroInfinity)
      • 参数
      • public Status GetZeroInfinity(bool & zeroInfinity) const
      • public Status SetMaxTargetLength(int64_t 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
      • 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
      • enum Type
      • enum LossNormMode
  • class musa::dnn::Cum
    • 概览
    • 成员
      • public Cum()
      • public ~Cum()
      • public Status SetDim(int dim)
      • 参数
      • public Status GetDim(int & dim) const
      • 参数
      • public Status SetMode(Mode m)
      • 参数
      • public Status GetMode(Mode & m) const
      • 参数
      • public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const
      • 参数
      • enum Mode
  • class musa::dnn::DebugInfo
    • 概览
    • 成员
      • public uint32_t version
      • public Severity severity
      • public uint32_t time_sec
      • public uint32_t time_usec
      • public uint32_t time_delta
      • public uint64_t tid
      • public int32_t device_id
      • public const Handle * handle
      • enum Severity
  • class musa::dnn::DeformableConv
    • 概览
    • 成员
      • public DeformableConv()
      • public ~DeformableConv()
      • public Status SetComputeMode(ComputeMode mode)
      • public Status SetGroups(int groups)
      • 参数
      • public Status SetDeformableGroups(int deformable_groups)
      • 参数
      • public Status SetNdInfo(::std::initializer_list< int > pad,::std::initializer_list< int > stride,::std::initializer_list< int > 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
      • public Status RunModulateDeformableConv(Handle & h,Tensor & out,const Tensor & input,const Tensor & weight,const Tensor & offset,const Tensor & mask,const MemoryMaintainer & maintainer) const
      • enum Algorithm
      • enum ComputeMode
  • class musa::dnn::Dot
    • 概览
    • 成员
      • public Dot()
      • public ~Dot()
      • public Status SetComputeMode(ComputeMode mode)
      • 参数
      • public Status SetAxis(int axis)
      • 参数
      • public Status SetAxes(int axis_l,int axis_r)
      • 参数
      • public Status SetDeterministic(bool is_deterministic)
      • 参数
      • public Status GetWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & c,const Tensor & a,const Tensor & b)
      • 参数
      • public Status Run(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const MemoryMaintainer & maintainer) const
      • 参数
      • 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
      • enum ComputeMode
  • class musa::dnn::Dropout
    • 概览
    • 成员
      • public Dropout()
      • public ~Dropout()
      • public Status SetP(double p)
      • 参数
      • public Status GetP(double & p) const
      • public Status SetScale(double scale)
      • 参数
      • public Status GetScale(double & scale) const
      • public Status SetSeed(uint64_t host_seed)
      • 参数
      • public Status SetSeed(const uint64_t * device_seed)
      • 参数
      • public Status GetSeed(uint64_t & host_seed) const
      • public Status SetOffset(uint64_t host_offset)
      • 参数
      • public Status SetOffset(const uint64_t * device_offset_base,uint64_t 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
  • class musa::dnn::Fill
    • 概览
    • 成员
      • public Fill()
      • public ~Fill()
      • public Status SetValue(double value)
      • 参数
      • public Status SetValue(int64_t value)
      • 参数
      • public Status Run(Handle & h,Tensor & out) const
      • public Status Run(Handle & h,Tensor & out,Tensor & mask) const
  • class musa::dnn::GatherX
    • 概览
    • 成员
      • 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
  • class musa::dnn::Glu
    • 概览
    • 成员
      • 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
      • 参数
  • class musa::dnn::GroupedMatMul
    • 概览
    • 成员
      • 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)
      • 参数
      • public Status Run(Handle & h,Tensor * c,const Tensor * a,const Tensor * b,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 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
      • enum ComputeMode
  • class musa::dnn::GroupGemmParam
    • 概览
    • 成员
      • public GroupGemmParam()
      • public ~GroupGemmParam()
      • public Status MaskMode(const Tensor & mask)
      • 参数
      • public Status ContigWithStartMode(const Tensor & experts_token_count,const Tensor & experts_token_start)
      • 参数
  • class musa::dnn::GroupNorm
    • 概览
    • 成员
      • public GroupNorm()
      • public ~GroupNorm()
      • public Status SetEpsilon(double eps)
      • 参数
      • public Status GetEpsilon(double & eps) const
      • 参数
      • public Status SetAxis(const int axis)
      • 参数
      • public Status GetAxis(int & axis) const
      • 参数
      • public Status SetGroup(const int g)
      • 参数
      • public Status GetGroup(int & g) const
      • 参数
      • public Status Run(Handle & h,Tensor & out,Tensor & mean,Tensor & invVar,const Tensor & in,const Tensor & gamma,const Tensor & beta) const
      • 参数
  • class musa::dnn::Handle
  • class musa::dnn::ImplBase
    • 概览
    • 成员
      • public void * GetImpl()
      • 返回值
      • public const void * GetImpl() const
      • 返回值
      • protected void * impl_
      • protected explicit ImplBase(void * 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
    • 概览
    • 成员
      • public Interpolate()
      • public ~Interpolate()
      • public Status SetMode(Mode m)
      • 参数
      • public Status GetMode(Mode & m) const
      • public Status SetScaleInfo(::std::initializer_list< float > scale)
      • 参数
      • public Status SetScaleInfo(int length,float * scale)
      • 参数
      • public Status GetScaleInfo(int & length,float *& scale) const
      • 参数
      • public Status SetAlignCorners(bool align_corners)
      • 参数
      • public Status GetAlignCorners(bool & align_corners) const
      • public Status SetAntialias(bool 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
  • class musa::dnn::KLDivLoss
    • 概览
    • 成员
      • 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
  • class musa::dnn::L2Loss
    • 概览
    • 成员
      • public L2Loss()
      • public ~L2Loss()
      • public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const
      • 参数
  • class musa::dnn::LayerNorm
    • 概览
    • 成员
      • public LayerNorm()
      • public ~LayerNorm()
      • public Status SetVarMode(VarMode var_mode)
      • 参数
      • public Status GetVarMode(VarMode & var_mode) const
      • 参数
      • public Status SetEpsilon(double eps)
      • 参数
      • public Status GetEpsilon(double & eps) const
      • 参数
      • public Status SetAxis(::std::initializer_list< int > axes)
      • 参数
      • public Status SetAxis(size_t length,const int * axes)
      • 参数
      • public Status GetAxis(size_t & length,int *& axes) const
      • 参数
      • public Status Run(Handle & h,Tensor & out,Tensor & mean,Tensor & inv_var,const Tensor & in,const Tensor & gamma,const Tensor & beta,const MemoryMaintainer & maintainer) const
      • public Status GetForwardWorkspaceSize(Handle & h,size_t & size_in_byte,Tensor & out,Tensor & mean,Tensor & inv_var,const Tensor & in,const Tensor & gamma,const Tensor & beta) const
      • public Status RunBwd(Handle & h,Tensor & dX,Tensor & dGamma,Tensor & dBeta,const Tensor & dY,const Tensor & in,const Tensor & mean,const Tensor & invVar,const Tensor & gamma,const MemoryMaintainer & maintainer) const
      • public Status GetBackwardWorkspaceSize(Handle & h,size_t & size_in_byte,Tensor & dX,Tensor & dGamma,Tensor & dBeta,const Tensor & dY,const Tensor & in,const Tensor & mean,const Tensor & invVar,const Tensor & gamma) const
      • enum VarMode
  • class musa::dnn::LocalResponseNorm
    • 概览
    • 成员
      • public LocalResponseNorm()
      • public ~LocalResponseNorm()
      • public Status SetMode(Mode mode)
      • 参数
      • public Status SetParam(unsigned n,double alpha,double beta,double k)
      • 参数
      • public Status Run(Handle & h,Tensor & y,Tensor & scales,const Tensor & x) const
      • 参数
      • public Status RunBwd(Handle & h,Tensor & dx,const Tensor & y,const Tensor & dy,const Tensor & x,const Tensor & scales) const
      • enum Mode
  • class musa::dnn::MaskedScatter
    • 概览
    • 成员
      • public MaskedScatter()
      • public ~MaskedScatter()
      • public Status Run(Handle & h,Tensor & out,const Tensor & mask,const Tensor & source,const MemoryMaintainer & maintainer) const
      • 参数
  • class musa::dnn::MaskedSelect
    • 概览
    • 成员
      • public MaskedSelect()
      • public ~MaskedSelect()
      • public Status GetWorkspaceSize(Handle & h,Tensor & out,const Tensor & input,const Tensor & mask,size_t & size_in_bytes) const
      • 参数
      • public Status Run(Handle & h,Tensor & out,const Tensor & input,const Tensor & mask,const MemoryMaintainer & maintainer) const
      • 参数
  • class musa::dnn::MatMul
    • 概览
    • 成员
      • public MatMul()
      • public ~MatMul()
      • 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 GetWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & c,const Tensor & a,const Tensor & b)
      • 参数
      • public Status Run(Handle & h,Tensor & c,const Tensor & a,const Tensor & b,const MemoryMaintainer & maintainer) const
      • 参数
      • 返回值
      • 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 m,const int64_t n,const int64_t k,const int64_t lda,const int64_t ldb,const int64_t ldc,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 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 MemoryMaintainer & maintainer) const
      • enum ComputeMode
  • class musa::dnn::MatMulLtParam
    • 概览
    • 成员
      • public MatMulLtParam()
      • public ~MatMulLtParam()
      • public Status SetEpilogue(const MatMulLtEpilogueMode epilog_mode)
      • 参数
      • public Status SetScale(const Tensor & scale_a,const Tensor & scale_b,const Tensor & scale_c,const Tensor & scale_d)
      • public Status SetScale(const Tensor & scale_a,const Tensor & scale_b,const Tensor & scale_c,const Tensor & scale_d,const int quant_tile,const bool fixed_scale_layout)
      • public Status SetAux(Tensor & aux,const Tensor & scale_aux)
      • 参数
      • public Status SetAmaxD(Tensor & amax_d)
      • 参数
      • public Status SetAtomicSync(Tensor & atomic_sync_in,Tensor & atomic_sync_out)
      • 参数
      • enum MatMulLtEpilogueMode
  • class musa::dnn::MatrixBase
  • class musa::dnn::MultiHeadAttention
    • 概览
    • 成员
      • public MultiHeadAttention()
      • public ~MultiHeadAttention()
      • public Status SetComputeMode(ComputeMode mode)
      • 参数
      • public Status SetEmbedDim(int embed_dim)
      • 参数
      • public Status SetKDim(int k_dim)
      • 参数
      • public Status SetVDim(int v_dim)
      • 参数
      • public Status SetHeadsNum(int num_heads)
      • 参数
      • public Status SetBatchFirst(bool batch_first)
      • 参数
      • public Status SetDropoutP(double p)
      • 参数
      • public Status SetScale(double scale)
      • public Status SetTraining(bool is_training)
      • 参数
      • public Status SetMaskMode(bool use_pad_mask)
      • public Status SetTransLinearWeigth(bool trans_weight)
      • public Status SetKeyFormat(bool key_format_bhds)
      • public Status GetFwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,size_t & bwd_reserve_size_in_bytes,const Tensor & q,const Tensor & k,const Tensor & v) const
      • public Status GetFwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,size_t & bwd_reserve_size_in_bytes,const Tensor & in) const
      • public Status GetBwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,const Tensor & q,const Tensor & k,const Tensor & v) const
      • public Status GetBwdBufferSize(Handle & h,size_t & workspace_size_in_bytes,const Tensor & in) const
      • public Status Run(Handle & h,Tensor & out,Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & weight_q,const Tensor & weight_k,const Tensor & weight_v,const Tensor & weight_o,const Tensor & bias_q,const Tensor & bias_k,const Tensor & bias_v,const Tensor & bias_o,const Tensor & mask,Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const
      • public Status Run(Handle & h,Tensor & out,Tensor & attn_probs,const Tensor & in,const Tensor & weight,const Tensor & weight_o,const Tensor & bias,const Tensor & bias_o,const Tensor & mask,Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const
      • public Status RunBwd(Handle & h,Tensor & in_grad,Tensor & weight_grad,Tensor & weight_o_grad,Tensor & bias_grad,Tensor & bias_o_grad,const Tensor & out_grad,const Tensor & attn_probs,const Tensor & in,const Tensor & weight,const Tensor & weight_o,const Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const
      • public Status RunBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,Tensor & v_grad,Tensor & weight_q_grad,Tensor & weight_k_grad,Tensor & weight_v_grad,Tensor & weight_o_grad,Tensor & bias_q_grad,Tensor & bias_k_grad,Tensor & bias_v_grad,Tensor & bias_o_grad,const Tensor & out_grad,const Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & weight_q,const Tensor & weight_k,const Tensor & weight_v,const Tensor & weight_o,const Tensor & bwd_reserve,const MemoryMaintainer & maintainer) const
      • enum ComputeMode
  • class musa::dnn::NLLLoss
    • 概览
    • 成员
      • public NLLLoss()
      • public ~NLLLoss()
      • public Status SetReductionMode(Mode mode)
      • public Status GetReductionMode(Mode & mode) const
      • public Status SetIgnoreIndex(int index)
      • public Status GetIgnoreIndex(int & index) const
      • public Status GetForwardWorkspaceSize(Handle & h,Tensor & output,Tensor & totalWeight,const Tensor & input,const Tensor & target,const Tensor & weight,size_t & size_in_bytes) const
      • public Status Run(Handle & h,Tensor & out,Tensor & totalWeight,const Tensor & input,const Tensor & target,const Tensor & weight,const MemoryMaintainer & maintainer) const
      • public Status RunBwd(Handle & h,Tensor & out,const Tensor & grad,const Tensor & target,const Tensor & weight,const Tensor & totalWeight,const MemoryMaintainer & maintainer) const
      • enum Mode
  • class musa::dnn::Nonzero
    • 概览
    • 成员
      • public Nonzero()
      • public ~Nonzero()
      • public Status GetWorkspaceSize(Handle & h,Tensor & out,const Tensor & in,size_t & size_in_bytes) const
      • public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const
      • 参数
  • class musa::dnn::Pad
    • 概览
    • 成员
      • public Pad()
      • public ~Pad()
      • public Status SetMode(Mode mode)
      • 参数
      • public Status GetMode(Mode & mode) const
      • public Status SetValue(double value)
      • public Status SetValue(int64_t value)
      • public Status SetPaddingInfo(::std::initializer_list< int > pad)
      • 参数
      • public Status SetPaddingInfo(int length,const int * pad)
      • 参数
      • public Status GetPaddingInfo(int & length,int *& pad) const
      • 参数
      • public Status Run(Handle & h,Tensor & out,const Tensor & input) const
      • 参数
      • enum Mode
  • class musa::dnn::Permute
    • 概览
    • 成员
      • public Permute()
      • public ~Permute()
      • public Status Run(Handle & h,Tensor & out,const Tensor & in) const
      • public Status SetSrcOffset(int64_t s_offset)
      • 参数
      • public Status SetDstOffset(int64_t d_offset)
      • 参数
      • public Status ConfigDimStride(Tensor & out,Tensor & in,::std::initializer_list< int64_t > permute_dims)
      • public Status ConfigDimStride(Tensor & out,Tensor & in,int len,const int64_t * array_dims)
      • public Status ConfigDimStrideForSlice(Tensor & out,Tensor & in,const int64_t * start)
      • public Status ConfigDimStrideForSlice(Tensor & out,Tensor & in,const int64_t * start,const int64_t * stride)
  • class musa::dnn::Pooling
    • 概览
    • 成员
      • public Pooling()
      • public ~Pooling()
      • public Status SetMode(Mode m)
      • 参数
      • public Status GetMode(Mode & m) const
      • public Status SetNdInfo(::std::initializer_list< int > kernel,::std::initializer_list< int > pad,::std::initializer_list< int > stride,::std::initializer_list< int > dilation)
      • public Status SetNdInfo(int len,const int * kernel,const int * pad,const int * stride,const int * dilation)
      • 参数
      • public Status GetNdInfo(int & len,int *& kernel,int *& pad,int *& stride,int *& dilation) const
      • public Status SetDivisor(int divisor)
      • 参数
      • public Status GetDivisor(int & divisor) const
      • public Status Run(Handle & h,Tensor & out,const Tensor & in,Tensor & indices) const
      • 参数
      • public Status RunBwd(Handle & h,Tensor & out,const Tensor & in,Tensor & indices) const
      • 参数
      • public Status RunMaxPool2dGradGrad(Handle & h,Tensor & out,const Tensor & in,const Tensor & indices) const
      • enum Mode
  • class musa::dnn::Reduce
    • 概览
    • 成员
      • public Reduce()
      • public ~Reduce()
      • public Status SetMode(Mode m)
      • 参数
      • public Status SetDim(::std::initializer_list< int > dim)
      • public Status SetDim(int ndim,const int * dim)
      • 参数
      • public Status SetNormOrd(float ord)
      • 参数
      • public Status SetCorrection(int correction)
      • 参数
      • public Status GetWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out,const Tensor & in)
      • 参数
      • public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const
      • 参数
      • public Status GetMeanAndVarWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out_var,Tensor & out_mean,const Tensor & in)
      • public Status RunMeanAndVar(Handle & h,Tensor & out_var,Tensor & out_mean,const Tensor & in,const MemoryMaintainer & maintainer) const
      • public Status GetIndicesWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out,const Tensor & in)
      • public Status RunIndices(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const
      • public Status GetWithIndicesWorkspaceSize(Handle & h,size_t & size_in_bytes,Tensor & out,Tensor & indices,const Tensor & in)
      • public Status RunWithIndices(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,const MemoryMaintainer & maintainer) const
      • enum Mode
  • class musa::dnn::RMSNorm
    • 概览
    • 成员
      • public RMSNorm()
      • public ~RMSNorm()
      • public Status SetVarMode(VarMode var_mode)
      • public Status GetVarMode(VarMode & var_mode) const
      • public Status SetEpsilon(double eps)
      • public Status GetEpsilon(double & eps) const
      • public Status SetAxis(::std::initializer_list< int > axes)
      • public Status SetAxis(size_t length,const int * axes)
      • public Status GetAxis(size_t & length,int *& axes) const
      • public Status Run(Handle & h,Tensor & out,Tensor & inv_var,const Tensor & in,const Tensor & gamma) const
      • 参数
      • public Status RunBwd(Handle & h,Tensor & dX,Tensor & dGamma,const Tensor & dY,const Tensor & in,const Tensor & invVar,const Tensor & gamma,const MemoryMaintainer & maintainer) const
      • public Status GetBackwardWorkspaceSize(Handle & h,size_t & size_in_byte,Tensor & dX,Tensor & dGamma,const Tensor & dY,const Tensor & in,const Tensor & invVar,const Tensor & gamma) const
      • enum VarMode
  • class musa::dnn::RNN
    • 概览
    • 成员
      • public RNN()
      • public ~RNN()
      • public Status SetMode(Mode m)
      • public Status SetFormat(Format m)
      • public Status SetBiasMode(BiasMode bm)
      • public Status SetDirection(Direction d)
      • public Status SetComputeMode(ComputeMode mode)
      • public Status RunUnpacked(Handle & h,Tensor & out,Tensor & hout,Tensor & cout,const Tensor & in,const Tensor & hin,const Tensor & cin,const Tensor * weight,Tensor & bwdHint,const MemoryMaintainer & maintainer) const
      • public Status RunUnpackedBwd(Handle & h,Tensor & in_grad,Tensor & hin_grad,Tensor & cin_grad,const Tensor * weight_grad,const Tensor & in,const Tensor & hin,const Tensor & cin,const Tensor * weight,const Tensor & out,const Tensor & bwdHint,const Tensor & out_grad,const Tensor & hout_grad,const Tensor & cout_grad,const MemoryMaintainer & maintainer) const
      • public Status RunPackPaddedSequence(Handle & h,Tensor & packed,Tensor & batsize,const Tensor & padded,const Tensor & lengths,bool batch_first,bool enforce_sorted)
      • public Status RunPadPackedSequence(Handle & h,Tensor & padded,Tensor & lengths,const Tensor & packed,const Tensor & batsize,bool batch_first,float padding_value)
      • enum Mode
      • enum Format
      • enum BiasMode
      • enum Direction
      • enum ComputeMode
  • class musa::dnn::Rope
    • 概览
    • 成员
      • public Rope()
      • public ~Rope()
      • public Status SetRotaryInterleaved(bool rotary_interleaved)
      • public Status GetRotaryInterleaved(bool & rotary_interleaved) const
      • public Status SetBatchFirst(bool batch_first)
      • public Status GetBatchFirst(bool & batch_first) const
      • public Status SetMultiLatentAttention(bool multi_latent_attention)
      • public Status GetMultiLatentAttention(bool & multi_latent_attention) const
      • public Status Run(Handle & h,Tensor & t_out,const Tensor & t_in,const Tensor & freqs_cis) const
      • public Status RunBwd(Handle & h,Tensor & dt,const Tensor & dout_t,const Tensor & freqs_cis) const
  • class musa::dnn::ScaledDotProductAttention
    • 概览
    • 成员
      • public ScaledDotProductAttention()
      • public ~ScaledDotProductAttention()
      • public Status SetComputeMode(ComputeMode mode)
      • 参数
      • public Status SetEmbedDim(int embed_dim)
      • 参数
      • public Status SetBatchSize(int batch_size)
      • 参数
      • public Status SetHeadsNum(int num_heads)
      • 参数
      • public Status SetDropoutP(double p)
      • 参数
      • public Status SetSeed(uint64_t seed,uint64_t offset,int dropout_mode,const uint64_t * device_seed,const uint64_t * device_offset,uint64_t graph_offset)
      • 参数
      • public Status SetScale(double scale)
      • public Status SetTraining(bool is_training)
      • 参数
      • public Status SetMaskMode(bool use_pad_mask)
      • public Status SetKeyFormat(bool key_format_bhds)
      • public Status SetCausal(bool is_causal)
      • 参数
      • public Status SetIsDeterministic(bool is_deterministic)
      • 参数
      • public Status SetMaxSeqlenQ(int max_seqlen_q)
      • 参数
      • public Status SetMaxSeqlenK(int max_seqlen_k)
      • 参数
      • public Status RunFlash(Handle & h,Tensor & out,Tensor & logsumexp,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,Tensor & dropout_mask,const MemoryMaintainer & maintainer) const
      • public Status GetFlashBwdWorkspaceSize(Handle & h,const Tensor & q_grad,const Tensor & k_grad,const Tensor & v_grad,const Tensor & dout,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,size_t & size_in_bytes) const
      • public Status RunFlashBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,Tensor & v_grad,const Tensor & out_grad,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,const MemoryMaintainer & maintainer) const
      • public Status RunFlashVarlen(Handle & h,Tensor & out,Tensor & logsumexp,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,Tensor & dropout_mask,const Tensor & cu_seqlens_q,const Tensor & cu_seqlens_k,const MemoryMaintainer & maintainer) const
      • public Status GetFlashVarlenBwdWorkspaceSize(Handle & h,const Tensor & q_grad,const Tensor & k_grad,const Tensor & v_grad,const Tensor & dout,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,const Tensor & cu_seqlens_q,const Tensor & cu_seqlens_k,size_t & size_in_bytes) const
      • public Status RunFlashVarlenBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,Tensor & v_grad,const Tensor & out_grad,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & out,const Tensor & logsumexp,const Tensor & dropout_mask,const Tensor & cu_seqlens_q,const Tensor & cu_seqlens_k,const MemoryMaintainer & maintainer) const
      • public Status GetMathForwardWorkspaceSize(Handle & h,const Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,const Tensor & dropout_mask,const Tensor & out,size_t & size_in_bytes) const
      • public Status RunMath(Handle & h,Tensor & out,Tensor & attn_probs,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & mask,Tensor & dropout_mask,const MemoryMaintainer & maintainer) const
      • public Status GetMathBackwardWorkspaceSize(Handle & h,const Tensor & dout,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & dropout_mask,size_t & size_in_bytes) const
      • public Status RunMathBwd(Handle & h,Tensor & q_grad,Tensor & k_grad,const Tensor & v_grad,const Tensor & attn_probs_grad,const Tensor & out_grad,const Tensor & q,const Tensor & k,const Tensor & v,const Tensor & attn_probs,const Tensor & dropout_mask,const MemoryMaintainer & maintainer) const
      • enum ComputeMode
  • class musa::dnn::Scan
    • 概览
    • 成员
      • public Scan()
      • public ~Scan()
      • public Status SetMode(Mode m)
      • public Status SetOpType(ScanOpType op_type)
      • public Status SetInitVal(double value)
      • public Status SetInitVal(int64_t value)
      • public Status Run(Handle & h,Tensor & out,const Tensor & in,const MemoryMaintainer & maintainer) const
      • 参数
      • enum Mode
      • enum ScanOpType
  • class musa::dnn::Scatter
    • 概览
    • 成员
      • public Scatter()
      • public ~Scatter()
      • public Status SetMode(Mode mode)
      • public Status GetMode(Mode & mode) const
      • public Status Run(Handle & h,Tensor & self,const Tensor & idx,const Tensor & update,int dim,const MemoryMaintainer & maintainer) const
      • public Status Run(Handle & h,Tensor & out,const Tensor & self,const Tensor & idx,const Tensor & update,int dim,const MemoryMaintainer & maintainer) const
      • enum Mode
  • class musa::dnn::ScatterND
    • 概览
    • 成员
      • public ScatterND()
      • public ~ScatterND()
      • public Status SetMode(Mode mode)
      • public Status GetMode(Mode & mode) const
      • public Status Run(Handle & h,Tensor & self,const Tensor & idx,const Tensor & update,const MemoryMaintainer & maintainer) const
      • 参数
      • enum Mode
  • class musa::dnn::Softmax
    • 概览
    • 成员
      • public Softmax()
      • public ~Softmax()
      • public Status SetDim(int d)
      • public Status GetDim(int & d) const
      • public Status SetAlgorithm(Algorithm a)
      • public Status GetAlgorithm(Algorithm & a) const
      • public Status SetMode(Mode m)
      • public Status GetMode(Mode & m) const
      • public Status GetForwardWorkspaceSize(Handle & h,Tensor & out,Tensor & input,size_t & size_in_bytes) const
      • public Status Run(Handle & h,Tensor & out,const Tensor & input,const MemoryMaintainer & maintainer) const
      • public Status GetBackwardWorkspaceSize(Handle & h,Tensor & gradInput,const Tensor & output,const Tensor & gradOutput,size_t & size_in_bytes) const
      • public Status RunBwd(Handle & h,Tensor & gradInput,const Tensor & output,const Tensor & gradOutput,const MemoryMaintainer & maintainer) const
      • enum Algorithm
      • enum Mode
  • class musa::dnn::Sort
    • 概览
    • 成员
      • public Sort()
      • public ~Sort()
      • public Status SetDim(int dim)
      • 参数
      • public Status GetDim(int & dim) const
      • public Status SetStable(bool stable)
      • 参数
      • public Status GetStable(bool & stable) const
      • public Status SetDescending(bool descending)
      • 参数
      • public Status GetDescending(bool & descending) const
      • public Status GetWorkspaceSize(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,size_t & size_in_bytes) const
      • public Status Run(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,const MemoryMaintainer & maintainer) const
      • 参数
  • class musa::dnn::SortByKey
    • 概览
    • 成员
      • public SortByKey()
      • public ~SortByKey()
      • public Status SetDim(int dim)
      • public Status GetDim(int & dim) const
      • public Status SetStable(bool stable)
      • public Status GetStable(bool & stable) const
      • public Status SetDescending(bool descending)
      • public Status GetDescending(bool & descending) const
      • public Status GetWorkspaceSize(Handle & h,Tensor & key_out,Tensor & value_out,const Tensor & key_in,const Tensor & value_in,size_t & size_in_bytes) const
      • public Status Run(Handle & h,Tensor & key_out,Tensor & value_out,const Tensor & key_in,const Tensor & value_in,const MemoryMaintainer & maintainer) const
      • 参数
  • class musa::dnn::SwiGlu
    • 概览
    • 成员
      • public SwiGlu()
      • public ~SwiGlu()
      • public Status Run(Handle & h,Tensor & out,const Tensor & in) const
      • 参数
      • public Status RunBwd(Handle & h,Tensor & out,const Tensor & in,const Tensor & grad) const
      • 参数
  • class musa::dnn::Tensor
    • 概览
    • 成员
      • public Tensor()
      • public Tensor(const Tensor &)
      • public Tensor(Tensor &&)
      • public ~Tensor()
      • public Tensor & operator=(const Tensor &)
      • public Tensor & operator=(Tensor &&)
      • public Status SetAddr(const void * addr)
      • 参数
      • public Status SetType(Type t)
      • 参数
      • public Status SetFormat(Format f)
      • 参数
      • public Status SetNdInfo(::std::initializer_list< int64_t > dim)
      • 参数
      • public Status SetNdInfo(int ndims,const int64_t * dim)
      • 参数
      • public Status SetNdInfo(int64_t ndims,const int64_t * dim)
      • 参数
      • public Status SetNdInfo(::std::initializer_list< int64_t > dim,::std::initializer_list< int64_t > stride)
      • 参数
      • public Status SetNdInfo(int ndims,const int64_t * dim,const int64_t * stride)
      • 参数
      • public Status SetNdInfo(int64_t ndims,const int64_t * dim,const int64_t * stride)
      • 参数
      • public Status GetNdInfo(::std::vector< int64_t > & dim) const
      • 参数
      • public Status GetNdInfo(::std::vector< int64_t > & dim,::std::vector< int64_t > & stride) const
      • 参数
      • public Status GetAddr(void *& a) const
      • 参数
      • public Status GetAddr(const void *& a) const
      • 参数
      • public Status GetType(Type & t) const
      • 参数
      • public Status GetFormat(Format & f) const
      • 参数
      • public Status SetQuantizationInfo(const float scale)
      • 参数
      • public Status GetQuantizationInfo(float & scale) const
      • 参数
      • public Status CopyFrom(void * ptr,size_t bytes,int kind,Handle & h,bool sync)
      • 参数
      • public Status CopyTo(void * ptr,size_t bytes,int kind,Handle & h,bool sync) const
      • 参数
      • enum Format
      • enum Type
  • class musa::dnn::TensorBase
  • class musa::dnn::Ternary
    • 概览
    • 成员
      • public Ternary()
      • public ~Ternary()
      • public Status SetMode(Mode m)
      • 参数
      • public Status SetAlpha(double alpha)
      • 参数
      • public Status SetAlpha(int64_t alpha)
      • 参数
      • public Status SetAlpha(const void * alpha)
      • 参数
      • public Status SetBeta(double beta)
      • 参数
      • public Status SetBeta(int64_t beta)
      • 参数
      • public Status SetBeta(const void * beta)
      • 参数
      • public Status SetGamma(double gamma)
      • 参数
      • public Status SetGamma(int64_t gamma)
      • 参数
      • public Status SetGamma(const void * gamma)
      • 参数
      • public Status Run(Handle & h,Tensor & out,const Tensor & in0,const Tensor & in1,const Tensor & in2) const
      • 参数
      • enum Mode
  • class musa::dnn::TopK
    • 概览
    • 成员
      • public TopK()
      • public ~TopK()
      • public Status SetK(int k)
      • 参数
      • public Status GetK(int & k) const
      • public Status SetDim(int dim)
      • 参数
      • public Status GetDim(int & dim) const
      • public Status SetLargest(bool largest)
      • 参数
      • public Status GetLargest(bool & largest) const
      • public Status SetSorted(bool sorted)
      • 参数
      • public Status GetSorted(bool & sorted) const
      • public Status GetWorkspaceSize(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,size_t & size_in_bytes) const
      • public Status Run(Handle & h,Tensor & out,Tensor & indices,const Tensor & in,const MemoryMaintainer & maintainer) const
      • 参数
  • class musa::dnn::Unary
    • 概览
    • 成员
      • public Unary()
      • public ~Unary()
      • public Status SetMode(Mode m)
      • 参数
      • public Status SetAlpha(double alpha)
      • 参数
      • public Status SetAlpha(int64_t alpha)
      • 参数
      • public Status SetAlpha(const void * alpha)
      • 参数
      • public Status SetBeta(double beta)
      • 参数
      • public Status SetBeta(int64_t beta)
      • 参数
      • public Status SetBeta(const void * beta)
      • 参数
      • public Status Run(Handle & h,Tensor & out,const Tensor & in) const
      • 参数
      • enum Mode
  • class musa::dnn::Unfold
    • 概览
    • 成员
      • public Unfold()
      • public ~Unfold()
      • public Status SetAxis(int axis)
      • 参数
      • public Status SetSize(int size)
      • 参数
      • public Status SetStep(int step)
      • 参数
      • public Status Run(Handle & h,Tensor & out,const Tensor & input) const
      • 参数
  • class musa::dnn::Unique
    • 概览
    • 成员
      • public Unique()
      • public ~Unique()
      • public Status SetMode(Mode m)
      • public Status Run(Handle & h,Tensor & out,Tensor & inverse_indices,Tensor & counts,const Tensor & in,const MemoryMaintainer & maintainer) const
      • 参数
      • enum Mode
  • class musa::dnn::WeightNorm
    • 概览
    • 成员
      • public WeightNorm()
      • public ~WeightNorm()
      • public Status SetEpsilon(double epsilon)
      • public Status SetAxis(::std::initializer_list< int > axes)
      • 参数
      • public Status SetAxis(size_t length,const int * axes)
      • 参数
      • public Status Run(Handle & h,Tensor & out,const Tensor & weightV,const Tensor & weightG) const
      • 参数
  • struct musa::dnn::Convolution::FusedActivationDesc
    • 概览
    • 成员
      • public Mode mode
      • public ::std::array< double, 3 > params
      • public Status SetMode(Mode m)
      • 参数
      • public Status SetCoef(double activAlpha,double activBeta,double activGamma)
      • 参数
      • enum Mode