nuget server logo nuget api documents
↑

API Docs / SMRUCC.genomics.Analysis.GEARS / MatOps

MatOps

Full name SMRUCC.genomics.Analysis.GEARS.Layers.MatOps Assembly SMRUCC.genomics.Analysis.GEARS Members 10

基于 Tensor 底层数组实现的高性能矩阵运算工具

00 Remarks

Tensor.MatMul() 的实现走的是属性索引器,在 350+ 节点 × 数十维特征的 训练循环里(上千次前向/反向)会成为明显瓶颈。这里直接操作 Tensor.Data 一维数组并按行优先顺序做循环展开,语义与 Tensor.MatMul() 完全一致, 但避免了逐元素的属性调用开销。

所有 *Into 版本都写入调用方提供的缓冲区(不重新分配),用于在训练热路径上复用 临时张量、降低 GC 压力。

01 Syntax

SMRUCC.genomics.Analysis.GEARS.Layers.MatOps

02 Methods

NameOverloadsSummary
MulInto 1 result = a @ b
Mul 1 计算 result = a @ b(自动分配输出张量)
MulATInto 1 result = aᵀ @ b
MulAT 1 计算 result = aᵀ @ b(自动分配输出张量)
MulBTInto 1 result = a @ bᵀ
MulBT 1 计算 result = a @ bᵀ(自动分配输出张量)
ColSumInto 1 沿行方向求和:result[1, n] = Σ_i a[i, n]
Accumulate 1 将源张量的值累加到目标张量上:dst += src
Zero 1 将张量的所有元素清零
Zeros 1 创建指定形状的全零张量

03 Members

method MulInto #
MulInto(Tensor, Tensor, Tensor)

result = a @ b

Parameters
NameTypeDescription
aTensor

左矩阵 [m, k]

bTensor

右矩阵 [k, n]

resultTensor

输出缓冲区 [m, n],会被原地覆盖

method Mul #
Mul(Tensor, Tensor)

计算 result = a @ b(自动分配输出张量)

Parameters
NameTypeDescription
aTensor

左矩阵 [m, k]

bTensor

右矩阵 [k, n]

Returns

新的 [m, n] 张量

method MulATInto #
MulATInto(Tensor, Tensor, Tensor)

result = aᵀ @ b

Parameters
NameTypeDescription
aTensor

矩阵 [m, k]

bTensor

矩阵 [m, n]

resultTensor

输出缓冲区 [k, n],会被原地覆盖

method MulAT #
MulAT(Tensor, Tensor)

计算 result = aᵀ @ b(自动分配输出张量)

Parameters
NameTypeDescription
aTensor

矩阵 [m, k]

bTensor

矩阵 [m, n]

Returns

新的 [k, n] 张量

method MulBTInto #
MulBTInto(Tensor, Tensor, Tensor)

result = a @ bᵀ

Parameters
NameTypeDescription
aTensor

矩阵 [m, k]

bTensor

矩阵 [n, k]

resultTensor

输出缓冲区 [m, n],会被原地覆盖

method MulBT #
MulBT(Tensor, Tensor)

计算 result = a @ bᵀ(自动分配输出张量)

Parameters
NameTypeDescription
aTensor

矩阵 [m, k]

bTensor

矩阵 [n, k]

Returns

新的 [m, n] 张量

method ColSumInto #
ColSumInto(Tensor, Tensor)

沿行方向求和:result[1, n] = Σ_i a[i, n]

Parameters
NameTypeDescription
aTensor

输入矩阵 [m, n]

resultTensor

输出缓冲区 [1, n],会被原地覆盖

method Accumulate #
Accumulate(Tensor, Tensor)

将源张量的值累加到目标张量上:dst += src

Parameters
NameTypeDescription
sourceTensor

源张量

targetTensor

目标张量(原地累加)

method Zero #
Zero(Tensor)

将张量的所有元素清零

Parameters
NameTypeDescription
xTensor

待清零的张量

method Zeros #
Zeros(Int32, Int32)

创建指定形状的全零张量

Parameters
NameTypeDescription
rowsInt32

行数

colsInt32

列数

Returns

[rows, cols] 的全零张量