单精度(Single / float32)多维张量。与双精度 Tensor 并列, 通过 TensorF.ToTensor() / TensorF.FromTensor() 双向互转。
TensorF
00 Remarks
索引器被刻意设计为"纯数组读写",不包含版本计数或任何原子操作, 以便 CFD 这类每秒上亿次随机访问的热循环可以直接使用。
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| .ctor | 3 | 创建空张量。 |
| Zeros | 1 | 创建指定形状的零张量。 |
| Ones | 1 | 创建指定形状、元素全为 1 的张量。 |
| Filled | 1 | 创建指定形状、元素全为给定值的张量。 |
| Scalar | 1 | 创建只含一个元素的标量张量。 |
| Wrap | 1 | 零拷贝包装一个已有的单精度数组。底层数组由调用方持有, 张量直接引用它(不复制),适用于把 CFD 场缓冲暴露成张量的场景。 |
| Get1DInd | 1 | 把多维下标换算为一维扁平下标。 |
| UpdateDimProds | 1 | 重算各维度步长(形状变化后必须调用)。 |
| Clear | 1 | 把所有元素清零。 |
| Fill | 1 | 用同一个值填满整个张量。 |
| Clone | 1 | 创建深拷贝。 |
| CloneT | 1 | 创建深拷贝(强类型版本,避免调用方反复 CType)。 |
| CopyFrom | 1 | 把另一个同形张量的数据复制到本张量。 |
| ToTensor | 1 | 转换为双精度 Tensor(数据会被复制并逐元素拓宽)。 |
| FromTensor | 1 | 从双精度 Tensor 转换而来(数据会被复制并逐元素窄化)。 |
| FromDoubles | 1 | 从双精度数组转换而来。 |
| ToDoubles | 1 | 导出为双精度数组的副本。 |
| Dispose | 1 | 释放底层数组。注意:释放后 TensorF.Data 变为 Nothing, 仍处于使用中的场缓冲不应调用本方法。 |
| ToString | 1 | 返回形状与元素总数的简要描述。 |
03 Properties
| Name | Overloads | Summary |
|---|---|---|
| computeKernelF | 1 | 单精度张量当前生效的计算后端。默认是 SIMD 加速的 CPU 实现 (SIMDTensorF.Default);后续可切换为 GPU 后端。 |
| Data | 1 | 存储张量数据的一维数组(行优先顺序)。热循环可直接使用以避免索引器开销。 |
| Shape | 1 | 张量的形状(各维度大小) |
| Length | 1 | 元素总数 |
| TotalLength | 1 | 元素总数(与 TensorF.Length 相同,为与 Double 版保持命名一致而提供) |
| Rank | 1 | 张量的维度数 |
| IsDisposed | 1 | 是否已被释放 |
| Item | 4 | 三维索引访问 (row, col, depth),对应 CFD 的 (i, j, k)。 注意:本索引器不含任何原子操作,可安全用于高频热循环。 |
04 Fields
05 Members
创建空张量。
Int32())创建指定形状的零张量。
| Name | Type | Description |
|---|---|---|
shape | Int32() | 各维度大小 |
Single(), Int32())用已有数据创建张量(数据会被复制)。
| Name | Type | Description |
|---|---|---|
data | Single() | 源数据(行优先) |
shape | Int32() | 各维度大小 |
Int32())创建指定形状的零张量。
| Name | Type | Description |
|---|---|---|
shape | Int32() | 各维度大小 |
Int32())创建指定形状、元素全为 1 的张量。
| Name | Type | Description |
|---|---|---|
shape | Int32() | 各维度大小 |
Int32(), Single)创建指定形状、元素全为给定值的张量。
| Name | Type | Description |
|---|---|---|
shape | Int32() | 各维度大小 |
value | Single | 填充值 |
Single)创建只含一个元素的标量张量。
| Name | Type | Description |
|---|---|---|
value | Single | 标量值 |
Single(), Int32())零拷贝包装一个已有的单精度数组。底层数组由调用方持有, 张量直接引用它(不复制),适用于把 CFD 场缓冲暴露成张量的场景。
| Name | Type | Description |
|---|---|---|
data | Single() | 底层数组(不被复制) |
shape | Int32() | 各维度大小 |
Int32())把多维下标换算为一维扁平下标。
| Name | Type | Description |
|---|---|---|
indexes | Int32() | 各维度下标 |
重算各维度步长(形状变化后必须调用)。
把所有元素清零。
Single)用同一个值填满整个张量。
| Name | Type | Description |
|---|---|---|
value | Single | 填充值 |
创建深拷贝。
创建深拷贝(强类型版本,避免调用方反复 CType)。
把另一个同形张量的数据复制到本张量。
| Name | Type | Description |
|---|---|---|
other | TensorF | 源张量 |
转换为双精度 Tensor(数据会被复制并逐元素拓宽)。
从双精度 Tensor 转换而来(数据会被复制并逐元素窄化)。
| Name | Type | Description |
|---|---|---|
t | Tensor | 源张量 |
Double(), Int32())从双精度数组转换而来。
| Name | Type | Description |
|---|---|---|
data | Double() | 源数据 |
shape | Int32() | 各维度大小 |
导出为双精度数组的副本。
释放底层数组。注意:释放后 TensorF.Data 变为 Nothing, 仍处于使用中的场缓冲不应调用本方法。
返回形状与元素总数的简要描述。
单精度张量当前生效的计算后端。默认是 SIMD 加速的 CPU 实现 (SIMDTensorF.Default);后续可切换为 GPU 后端。
存储张量数据的一维数组(行优先顺序)。热循环可直接使用以避免索引器开销。
张量的形状(各维度大小)
元素总数
元素总数(与 TensorF.Length 相同,为与 Double 版保持命名一致而提供)
张量的维度数
是否已被释放
Int32)一维索引访问。
| Name | Type | Description |
|---|---|---|
index | Int32 | 扁平下标 |
Int32, Int32)二维索引访问 (row, col)。
| Name | Type | Description |
|---|---|---|
row | Int32 | 行下标 |
col | Int32 | 列下标 |
Int32, Int32, Int32)三维索引访问 (row, col, depth),对应 CFD 的 (i, j, k)。 注意:本索引器不含任何原子操作,可安全用于高频热循环。
| Name | Type | Description |
|---|---|---|
row | Int32 | X / i 方向下标 |
col | Int32 | Y / j 方向下标 |
depth | Int32 | Z / k 方向下标 |
Int32())任意维度的索引访问。
| Name | Type | Description |
|---|---|---|
indexes | Int32() | 各维度下标 |
底层数据数组(单精度)
张量形状(各维度大小)
各维度步长(用于多维索引 -> 一维下标)
切换计算后端时使用的同步根对象