muDNN API 参考
1 引言
Moore Threads® MUSA® 深度神经网络(muDNN)库是一个用于深度神经网络中常用原语的GPU加速库。muDNN提供了高度优化的函数,可用于执行各种数学和数据处理任务,例如:
- 张量操作:逐元素操作、矩阵操作、归约操作等。
- 神经网络层:卷积、池化、归一化、激活等。
- 损失函数:KLDivLoss、L2Loss、NLLLoss等。它使用户能够专注于训练神经网络和开发应用程序,而不是加速GPU性能。muDNN库提供了基于上下文的API,允许使用MUSA流轻松进行多线程。
此API参考列出了数据类型定义和函数的详细描述。
1.1 功能需求和保证
- 每个API都可以安全且并发地访问,即它们是可重入的。用户必须 确保在调用API之前,必要的输入内存分配和数据准备已经就绪。
- 大部分API(除了有特定注释的)可以在相同的配置和输入下复现相同的结果。
- muDNN支持最大张量维度大小为8。
2 模块索引
2.1 模块
以下是所有模块的列表:
- 基础操作符
- 图像操作符
- 数学操作符
- NN -(神经网络)操作符
- 版本
3 类索引
3.1 类列表
- musa::dnn::BatchMatMul 以下是类、结构体、联合体和接口及其简要描述:
- musa::dnn::BatchNorm
- musa::dnn::Binary
- musa::dnn::Concat
- musa::dnn::Convolution
- musa::dnn::CTCLoss
- musa::dnn::Cum
- musa::dnn::Cumsum
- musa::dnn::DebugInfo
- musa::dnn::DeformableConv
- musa::dnn::Dot
- musa::dnn::Dropout
- musa::dnn::Fill
- musa::dnn::Convolution::FusedActivationDesc
- musa::dnn::GatherX
- musa::dnn::Glu
- musa::dnn::GroupNorm
- musa::dnn::Handle
- musa::dnn::ImplBase
- musa::dnn::Interpolate
- musa::dnn::KLDivLoss
- musa::dnn::L2Loss
- musa::dnn::LayerNorm
- musa::dnn::LocalResponseNorm
- musa::dnn::MaskedScatter
- musa::dnn::MaskedSelect
- musa::dnn::MatMul
- musa::dnn::MatrixBase
- musa::dnn::MultiHeadAttention
- musa::dnn::NLLLoss
- musa::dnn::Nonzero
- musa::dnn::Pad
- musa::dnn::Permute
- musa::dnn::Pooling
- musa::dnn::Reduce
- musa::dnn::RMSNorm
- musa::dnn::RNN
- musa::dnn::ScaledDotProductAttention
- musa::dnn::Scan
- musa::dnn::Scatter
- musa::dnn::ScatterND
- musa::dnn::Softmax
- musa::dnn::Sort
- musa::dnn::SortByKey
- musa::dnn::Tensor
- musa::dnn::TensorBase
- musa::dnn::Ternary
- musa::dnn::TopK
- musa::dnn::Unary
- musa::dnn::Unfold
- musa::dnn::Unique
- musa::dnn::WeightNorm
4 模块文档
4.1 基础操作符
类
- class musa::dnn::ImplBase
- class musa::dnn::Handle
- class musa::dnn::TensorBase
- class musa::dnn::Tensor
- class musa::dnn::MatrixBase
- class musa::dnn::DebugInfo
宏
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x, ...) x,
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x, y) x,
类型定义
- using musa::dnn::MemoryHandler = std::unique_ptr<void, std::function<void(void∗)>>
- using musa::dnn::MemoryMaintainer = std::function<MemoryHandler(size_t)>
- using musa::dnn::CallBack = std::function<void(DebugInfo::Severity, void∗user_data, const DebugInfo &dbg, const char∗message)>
枚举
- enum class Status { MUDNN_ITEM }
- enum class Type { MUDNN_ITEM }
- enum class Format { MUDNN_ITEM }
- enum class ComputeMode { MUDNN_ITEM }
- enum class Severity { MUDNN_ITEM }
函数
- void∗ musa::dnn::ImplBase::GetImpl ()
- const void∗ musa::dnn::ImplBase::GetImpl () const
- musa::dnn::ImplBase::ImplBase (void∗impl)
- musa::dnn::ImplBase::ImplBase (const ImplBase &)=delete
- musa::dnn::ImplBase::ImplBase (ImplBase &&)=delete
- ImplBase & musa::dnn::ImplBase::operator= (const ImplBase &)=delete
- ImplBase & musa::dnn::ImplBase::operator= (ImplBase &&)=delete
- musa::dnn::Handle::Handle (int device_id)
- int musa::dnn::Handle::GetDeviceId () const
- Status musa::dnn::Handle::SetStream (musaStream_t stream)
- musaStream_t musa::dnn::Handle::GetStream () const
- Status musa::dnn::Handle::SetAllowTF32 (bool allow_tf32)
- bool musa::dnn::Handle::GetAllowTF32 () const
- musa::dnn::Tensor::Tensor (const Tensor &)
- musa::dnn::Tensor::Tensor (Tensor &&)
- Tensor & musa::dnn::Tensor::operator= (const Tensor &)
- Tensor & musa::dnn::Tensor::operator= (Tensor &&)
- Status musa::dnn::Tensor::SetAddr (const void∗addr)
- Status musa::dnn::Tensor::SetType (Type t)
- Status musa::dnn::Tensor::SetFormat (Format f)
- Status musa::dnn::Tensor::SetNdInfo (std::initializer_list<int64_t>dim)
- Status musa::dnn::Tensor::SetNdInfo (int ndims, const int64_t∗dim)
- Status musa::dnn::Tensor::SetNdInfo (int64_t ndims, const int64_t∗dim)
- Status musa::dnn::Tensor::SetNdInfo (std::initializer_list<int64_t>dim, std::initializer_list<int64_t> stride)
- Status musa::dnn::Tensor::SetNdInfo (int ndims, const int64_t∗dim, const int64_t∗stride)
- Status musa::dnn::Tensor::SetNdInfo (int64_t ndims, const int64_t∗dim, const int64_t∗stride)
- Status musa::dnn::Tensor::GetNdInfo (std::vector<int64_t>&dim)
- Status musa::dnn::Tensor::GetNdInfo (std::vector<int64_t>&dim, std::vector<int64_t>&stride)
- Status musa::dnn::Tensor::SetQuantizationInfo (int n, const float∗scales, const unsigned int∗zero_←- points)
- Status musa::dnn::Tensor::SetQuantizationInfo (std::initializer_list<float>scales, std::initializer_list< unsigned int>zero_points)
- Status musa::dnn::Tensor::SetQuantizationInfo (const std::vector<float>&scales)
- Status musa::dnn::Tensor::CopyFrom (void∗ptr, size_t bytes, int kind, Handle &h, bool sync=false)
- Status musa::dnn::Tensor::CopyTo (void∗ptr, size_t bytes, int kind, Handle &h, bool sync=false) const
- MUDNN_EXPORT Status musa::dnn::SetCallBack (DebugInfo::Severity min, void∗udata, CallBack f)
变量
- void∗ musa::dnn::ImplBase::impl_
- uint32_t musa::dnn::DebugInfo::version
- Severity musa::dnn::DebugInfo::severity
- uint32_t musa::dnn::DebugInfo::time_sec
- uint32_t musa::dnn::DebugInfo::time_usec
- uint32_t musa::dnn::DebugInfo::time_delta
- uint64_t musa::dnn::DebugInfo::tid
- int32_t musa::dnn::DebugInfo::device_id
- const Handle∗ musa::dnn::DebugInfo::handle
4.1.1 详细描述
该实体包含与muDNN上下文创建和销毁、张量实用程序例程、张量核心操作、调试日志等相关的基本功能。
4.2 图像操作符
类
- class musa::dnn::Interpolate
宏
- #define MUDNN_ITEM (x) x,
枚举
- enum class Mode { MUDNN_ITEM }
函数
- Status musa::dnn::Interpolate::SetMode (Mode m)
- Status musa::dnn::Interpolate::SetScaleInfo (std::initializer_list<float>scale)
- Status musa::dnn::Interpolate::SetScaleInfo (int length, float∗scale)
- Status musa::dnn::Interpolate::SetAlignCorners (bool align_corners)
- Status musa::dnn::Interpolate::Run (Handle &h, Tensor &out, const Tensor &in) const
- Status musa::dnn::Interpolate::RunBackward (Handle &h, Tensor &out, const Tensor &in) const
4.2.1 详细描述
该实体是一系列图像处理和操作的集合,包括调整图像大小、裁剪和插值。
4.3 数学操作符
类
- class musa::dnn::Unary
- class musa::dnn::Binary
- class musa::dnn::Ternary
- class musa::dnn::Reduce
- class musa::dnn::BatchMatMul
- class musa::dnn::MatMul
- class musa::dnn::Dot
- class musa::dnn::Concat
- class musa::dnn::Permute
- class musa::dnn::Fill
- class musa::dnn::Sort
- class musa::dnn::SortByKey
- class musa::dnn::TopK
- class musa::dnn::Scan
- class musa::dnn::Cumsum
- class musa::dnn::Cum
- class musa::dnn::GatherX
- class musa::dnn::MaskedSelect
- class musa::dnn::MaskedScatter
- class musa::dnn::Unfold
- class musa::dnn::Unique
- class musa::dnn::Nonzero
宏
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x) x,
- #define MUDNN_ITEM (x) x,
枚举
- enum class Mode { MUDNN_ITEM }
- enum class Mode { MUDNN_ITEM }
- enum class Mode { MUDNN_ITEM }
- enum class Mode { MUDNN_ITEM }
- enum class Mode { MUDNN_ITEM }
- enum class ScanOpType { MUDNN_ITEM }
- enum class Mode { MUDNN_ITEM }
- enum class Mode { MUDNN_ITEM }
- enum class Mode { MUDNN_ITEM }
函数
-
Status musa::dnn::Unary::SetMode (Mode m)
-
Status musa::dnn::Unary::SetAlpha (double alpha)
-
Status musa::dnn::Unary::SetAlpha (int64_t alpha)
-
Status musa::dnn::Unary::SetAlpha (const void∗alpha)
-
Status musa::dnn::Unary::SetBeta (double beta)
-
Status musa::dnn::Unary::SetBeta (int64_t beta)
-
Status musa::dnn::Unary::SetBeta (const void∗beta)
-
Status musa::dnn::Unary::Run (Handle &h, Tensor &out, const Tensor &in) const
-
Status musa::dnn::Binary::SetMode (Mode m)
-
Status musa::dnn::Binary::SetAlpha (double alpha)
-
Status musa::dnn::Binary::SetAlpha (int64_t alpha)
-
Status musa::dnn::Binary::SetAlpha (const void∗alpha)
-
Status musa::dnn::Binary::SetBeta (double beta)
-
Status musa::dnn::Binary::SetBeta (int64_t beta)
-
Status musa::dnn::Binary::SetBeta (const void∗beta)
-
Status musa::dnn::Binary::Run (Handle &h, Tensor &out, const Tensor &l, const Tensor &r) const
-
Status musa::dnn::Ternary::SetMode (Mode m)
-
Status musa::dnn::Ternary::SetAlpha (double alpha)
-
Status musa::dnn::Ternary::SetAlpha (int64_t alpha)
-
Status musa::dnn::Ternary::SetAlpha (const void∗alpha)
-
Status musa::dnn::Ternary::SetBeta (double beta)
-
Status musa::dnn::Ternary::SetBeta (int64_t beta)
-
Status musa::dnn::Ternary::SetBeta (const void∗beta)
-
Status musa::dnn::Ternary::SetGamma (double gamma)
-
Status musa::dnn::Ternary::SetGamma (int64_t gamma)
-
Status musa::dnn::Ternary::SetGamma (const void∗gamma)
-
Status musa::dnn::Ternary::Run (Handle &h, Tensor &out, const Tensor &in0, const Tensor &in1, const Tensor &in2) const
-
Status musa::dnn::Reduce::SetMode (Mode m)
-
Status musa::dnn::Reduce::SetDim (std::initializer_list<int>dim)
-
Status musa::dnn::Reduce::SetDim (int ndim, const int∗dim)
-
Status musa::dnn::Reduce::SetNormOrd (float ord)
-
Status musa::dnn::Reduce::GetWorkspaceSize (Handle &h, size_t &size_in_bytes, Tensor &out, const Tensor &in)
-
Status musa::dnn::Reduce::Run (Handle &h, Tensor &out, const Tensor &in, const MemoryMaintainer &maintainer) const
-
Status musa::dnn::Reduce::RunIndices (Handle &h, Tensor &out, const Tensor &in, const Memory←- Maintainer &maintainer) const
-
Status musa::dnn::Reduce::RunWithIndices (Handle &h, Tensor &out, Tensor &indices, const Tensor &in, const MemoryMaintainer &maintainer) const
-
Status musa::dnn::BatchMatMul::SetComputeMode (ComputeMode mode)
-
Status musa::dnn::BatchMatMul::SetTranspose (bool left, bool right)
-
Status musa::dnn::BatchMatMul::SetSplitK (bool split_k)
-
Status musa::dnn::BatchMatMul::SetAlpha (double alpha)
-
Status musa::dnn::BatchMatMul::SetBeta (double beta)
-
Status musa::dnn::BatchMatMul::SetGamma (double gamma)
-
Status musa::dnn::BatchMatMul::GetWorkspaceSize (Handle &h, size_t &size_in_bytes, Tensor &out, const Tensor &l, const Tensor &r)
-
Status musa::dnn::BatchMatMul::Run (Handle &h, Tensor &out, const Tensor &l, const Tensor &r, const MemoryMaintainer &maintainer=nullptr) const
-
Status musa::dnn::BatchMatMul::RunWithBiasAdd (Handle &h, Tensor &out, const Tensor &l, const Tensor &r, const Tensor &bias, const MemoryMaintainer &maintainer=nullptr) const
-
Status musa::dnn::BatchMatMul::Run (Handle &h, Tensor &out, const Tensor &l, const Tensor &r, 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=nullptr) const
-
Status musa::dnn::BatchMatMul::RunWithBiasAdd (Handle &h, Tensor &out, const Tensor &l, const Tensor &r, 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=nullptr) const
-
Status musa::dnn::MatMul::SetComputeMode (ComputeMode mode)
-
Status musa::dnn::MatMul::SetTranspose (bool left, bool right)
-
Status musa::dnn::MatMul::SetSplitK (bool split_k)
-
Status musa::dnn::MatMul::SetAlpha (double alpha)
-
Status musa::dnn::MatMul::SetBeta (double beta)
-
Status musa::dnn::MatMul::SetGamma (double gamma)
-
Status musa::dnn::MatMul::GetWorkspaceSize (Handle &h, size_t &size_in_bytes, Tensor &out, const Tensor &l, const Tensor &r)
-
Status musa::dnn::MatMul::Run (Handle &h, Tensor &out, const Tensor &l, const Tensor &r, const MemoryMaintainer &maintainer=nullptr) const
-
Status musa::dnn::MatMul::RunWithBiasAdd (Handle &h, Tensor &out, const Tensor &l, const Tensor &r, const Tensor &bias, const MemoryMaintainer &maintainer=nullptr) const
-
Status musa::dnn::MatMul::Run (Handle &h, Tensor &out, const Tensor &l, const Tensor &r, 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 Memory←- Maintainer &maintainer=nullptr) const
-
Status musa::dnn::MatMul::RunWithBiasAdd (Handle &h, Tensor &out, const Tensor &l, const Tensor &r, 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=nullptr) const
-
Status musa::dnn::Dot::SetComputeMode (ComputeMode mode)
-
Status musa::dnn::Dot::SetAxis (int axis)
-
Status musa::dnn::Dot::SetAxes (int axis_l, int axis_r)
-
Status musa::dnn::Dot::SetSplitK (bool split_k)
-
Status musa::dnn::Dot::GetWorkspaceSize (Handle &h, size_t &size_in_bytes, Tensor &out, const Tensor &l, const Tensor &r)
-
Status musa::dnn::Dot::Run (Handle &h, Tensor &out, const Tensor &l, const Tensor &r, const Memory←- Maintainer &maintainer=nullptr) const
-
Status musa::dnn::Dot::RunWithBiasAdd (Handle &h, Tensor &out, const Tensor &l, const Tensor &r, const Tensor &bias, const MemoryMaintainer &maintainer=nullptr) const
-
Status musa::dnn::Concat::SetAxis (int axis)
-
Status musa::dnn::Concat::Run (Handle &h, Tensor &out, int num_input, const Tensor∗ins) const
-
Status musa::dnn::Permute::Run (Handle &h, Tensor &out, const Tensor &in) const
-
Status musa::dnn::Permute::SetSrcOffset (int64_t s_offset)
-
Status musa::dnn::Permute::SetDstOffset (int64_t d_offset)
-
static Status musa::dnn::Permute::ConfigDimStride (Tensor &out, Tensor &in, std::initializer_list<int64←- _t>permute_dims)
-
static Status musa::dnn::Permute::ConfigDimStride (Tensor &out, Tensor &in, int len, const int64_←- t∗array_dims)
-
Status musa::dnn::Permute::ConfigDimStrideForSlice (Tensor &out, Tensor &in, const int64_t∗start)
-
Status musa::dnn::Permute::ConfigDimStrideForSlice (Tensor &out, Tensor &in, const int64_t∗start, const int64_t∗stride)
-
Status musa::dnn::Fill::SetValue (double value)
-
Status musa::dnn::Fill::SetValue (int64_t value)
-
Status musa::dnn::Fill::Run (Handle &h, Tensor &out) const
-
Status musa::dnn::Fill::Run (Handle &h, Tensor &out, Tensor &mask) const
-
Status musa::dnn::Sort::SetDim (int dim)
-
Status musa::dnn::Sort::SetStable (bool stable)
-
Status musa::dnn::Sort::SetDescending (bool descending)
-
Status musa::dnn::Sort::Run (Handle &h, Tensor &out, Tensor &indices, const Tensor &in, const Memory←-Maintainer &maintainer) const
-
Status musa::dnn::SortByKey::SetDim (int dim)
-
Status musa::dnn::SortByKey::SetStable (bool stable)
-
Status musa::dnn::SortByKey::SetDescending (bool descending)
-
Status musa::dnn::SortByKey::Run (Handle &h, Tensor &key_out, Tensor &value_out, const Tensor &key_in, const Tensor &value_in, const MemoryMaintainer &maintainer) const
-
Status musa::dnn::TopK::SetK (int k)
-
Status musa::dnn::TopK::SetDim (int dim)
-
Status musa::dnn::TopK::SetLargest (bool largest)
-
Status musa::dnn::TopK::SetSorted (bool sorted)
-
Status musa::dnn::TopK::Run (Handle &h, Tensor &out, Tensor &indices, const Tensor &in, const MemoryMaintainer &maintainer) const
-
Status musa::dnn::Scan::SetMode (Mode m)
-
Status musa::dnn::Scan::SetOpType (ScanOpType op_type)
-
Status musa::dnn::Scan::SetInitVal (double value)
-
Status musa::dnn::Scan::SetInitVal (int64_t value)
-
Status musa::dnn::Scan::Run (Handle &h, Tensor &out, const Tensor &in, const MemoryMaintainer &main- tainer) const
-
Status musa::dnn::Cumsum::SetDim (int dim)
-
Status musa::dnn::Cumsum::Run (Handle &h, Tensor &out, const Tensor &in, const MemoryMaintainer &maintainer) const
-
Status musa::dnn::Cum::SetDim (int dim)
-
Status musa::dnn::Cum::SetMode (Mode m)
-
Status musa::dnn::Cum::Run (Handle &h, Tensor &out, const Tensor &in, const MemoryMaintainer &main- tainer) const
-
Status musa::dnn::GatherX::SetMode (Mode m)
-
Status musa::dnn::GatherX::SetAxis (int axis)
-
Status musa::dnn::GatherX::SetBatchDims (int batch_dims)
-
Status musa::dnn::GatherX::Run (Handle &h, Tensor &out, const Tensor &index, const Tensor &in) const
-
Status musa::dnn::MaskedSelect::Run (Handle &h, Tensor &out, const Tensor &input, const Tensor &mask, const MemoryMaintainer &maintainer) const
-
Status musa::dnn::MaskedScatter::Run (Handle &h, Tensor &out, const Tensor &mask, const Tensor &source, const MemoryMaintainer &maintainer) const
-
Status musa::dnn::Unfold::SetAxis (int axis)
-
Status musa::dnn::Unfold::SetSize (int size)
-
Status musa::dnn::Unfold::SetStep (int step)
-
Status musa::dnn::Unfold::Run (Handle &h, Tensor &out, const Tensor &input) const
-
Status musa::dnn::Unique::SetMode (Mode m)
-
Status musa::dnn::Unique::Run (Handle &h, Tensor &out, Tensor &inverse_indices, Tensor &counts, const Tensor &in, const MemoryMaintainer &maintainer) const
-
Status musa::dnn::Nonzero::Run (Handle &h, Tensor &out, const Tensor &in, const MemoryMaintainer &maintainer) const
4.3.1 详细描述
该实体包含广泛的数学操作,包括:
- 算术运算:加、减、乘、除等。
- 指数和对数运算:exp、log、log1p等。
- 三角函数运算:sin、cos、tan、atan等。
- 神经网络运算:sigmoid、hardsigmoid、leaky_relu等。