Skip to content

Commit dc1da7c

Browse files
committed
add doc
1 parent 9d35161 commit dc1da7c

File tree

1 file changed

+297
-0
lines changed

1 file changed

+297
-0
lines changed

doc/tensor_base.md

Lines changed: 297 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,297 @@
1+
##### TensorBase.h 头文件 API 兼容情况
2+
3+
4+
##### TensorBase.h 头文件 API 兼容性
5+
6+
✅ 表示已经支持
7+
🚧 表示正在支持
8+
❌ 表示不准备支持
9+
🔧 表示部分支持(有功能限制)
10+
11+
**按照功能分类排序**
12+
13+
---
14+
15+
### 构造与赋值
16+
17+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
18+
|------------------------------|------------------|------------|-------|------|
19+
| `TensorBase()` ||| P0 | 默认构造函数 |
20+
| `TensorBase(const TensorBase&)` ||| P0 | 拷贝构造函数 |
21+
| `TensorBase(TensorBase&&)` ||| P0 | 移动构造函数 |
22+
| `operator=(const TensorBase&)` ||| P0 | 拷贝赋值运算符 |
23+
| `operator=(TensorBase&&)` ||| P0 | 移动赋值运算符 |
24+
25+
---
26+
27+
### 数据访问 API
28+
29+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
30+
|------------------------------|------------------|------------|-------|------|
31+
| `data_ptr()` ||| P0 | 返回 `void*` |
32+
| `data_ptr<T>()` ||| P0 | 返回类型化指针 |
33+
| `const_data_ptr()` ||| P0 | 返回 `const void*` |
34+
| `const_data_ptr<T>()` ||| P0 | 返回类型化 const 指针 |
35+
| `mutable_data_ptr()` ||| P0 | 返回可变 `void*` |
36+
| `mutable_data_ptr<T>()` ||| P0 | 返回可变类型化指针 |
37+
| `accessor<T, N>()` ||| P1 | TensorAccessor |
38+
| `generic_packed_accessor<T, N>()` | - [ ] | - [ ] | P2 | CUDA PackedTensorAccessor |
39+
| `packed_accessor32<T, N>()` | - [ ] | - [ ] | P2 | 32位索引 PackedAccessor |
40+
| `packed_accessor64<T, N>()` | - [ ] | - [ ] | P2 | 64位索引 PackedAccessor |
41+
42+
---
43+
44+
### 维度与形状 API
45+
46+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
47+
|------------------------------|------------------|------------|-------|------|
48+
| `dim()` ||| P0 | 返回维度数 |
49+
| `ndimension()` ||| P0 |`dim()` |
50+
| `size(dim)` ||| P0 | 支持负索引 |
51+
| `sizes()` ||| P0 | 返回 IntArrayRef |
52+
| `stride(dim)` ||| P0 | 支持负索引 |
53+
| `strides()` ||| P0 | 返回 IntArrayRef |
54+
| `numel()` ||| P0 | 元素总数 |
55+
| `storage_offset()` | 🚧 | 🚧 | P2 | |
56+
| `sym_size(dim)` | - [ ] | - [ ] | P3 | 符号化 size |
57+
| `sym_stride(dim)` | - [ ] | - [ ] | P3 | 符号化 stride |
58+
| `sym_sizes()` | - [ ] | - [ ] | P3 | 符号化 sizes |
59+
| `sym_strides()` | - [ ] | - [ ] | P3 | 符号化 strides |
60+
| `sym_numel()` | - [ ] | - [ ] | P3 | 符号化 numel |
61+
| `sym_storage_offset()` | 🚧 | 🚧 | P3 | 符号化 storage_offset |
62+
63+
---
64+
65+
### 内存与字节 API
66+
67+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
68+
|------------------------------|------------------|------------|-------|------|
69+
| `nbytes()` ||| P0 | 总字节数 |
70+
| `itemsize()` ||| P0 | 单元素字节数 |
71+
| `element_size()` ||| P0 |`itemsize()` |
72+
73+
---
74+
75+
### 类型与设备 API
76+
77+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
78+
|------------------------------|------------------|------------|-------|------|
79+
| `dtype()` ||| P0 | 返回 ScalarType |
80+
| `scalar_type()` ||| P0 |`dtype()` |
81+
| `device()` ||| P0 | 返回 Device |
82+
| `get_device()` ||| P0 | 返回设备索引 |
83+
| `options()` ||| P0 | 返回 TensorOptions |
84+
| `layout()` | 🚧 | 🚧 | P2 | 返回 Layout |
85+
| `key_set()` | - [ ] | - [ ] | P3 | DispatchKeySet |
86+
87+
---
88+
89+
### 设备类型检查 API
90+
91+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
92+
|------------------------------|------------------|------------|-------|------|
93+
| `is_cpu()` ||| P0 | CPU 后端检查 |
94+
| `is_cuda()` ||| P0 | CUDA 后端检查 |
95+
| `is_xpu()` | - [ ] | - [ ] | P2 | XPU 后端检查 |
96+
| `is_ipu()` | - [ ] | - [ ] | P3 | IPU 后端检查 |
97+
| `is_xla()` | - [ ] | - [ ] | P3 | XLA 后端检查 |
98+
| `is_mtia()` | - [ ] | - [ ] | P3 | MTIA 后端检查 |
99+
| `is_hpu()` | - [ ] | - [ ] | P3 | HPU 后端检查 |
100+
| `is_lazy()` | - [ ] | - [ ] | P3 | Lazy 后端检查 |
101+
| `is_hip()` | - [ ] | - [ ] | P3 | HIP 后端检查 |
102+
| `is_ve()` | - [ ] | - [ ] | P3 | VE 后端检查 |
103+
| `is_privateuseone()` | - [ ] | - [ ] | P3 | PrivateUse1 后端检查 |
104+
| `is_meta()` | - [ ] | - [ ] | P3 | Meta tensor 检查 |
105+
106+
---
107+
108+
### 张量属性检查 API
109+
110+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
111+
|------------------------------|------------------|------------|-------|------|
112+
| `defined()` ||| P0 | 是否已定义 |
113+
| `is_contiguous()` ||| P0 | 连续性检查 |
114+
| `sym_is_contiguous()` | - [ ] | - [ ] | P3 | 符号化连续性检查 |
115+
| `is_contiguous_or_false()` | - [ ] | - [ ] | P3 | |
116+
| `is_non_overlapping_and_dense()` | - [ ] | - [ ] | P3 | |
117+
| `is_complex()` | - [ ] | - [ ] | P2 | 是否复数类型 |
118+
| `is_floating_point()` | - [ ] | - [ ] | P2 | 是否浮点类型 |
119+
| `is_signed()` | - [ ] | - [ ] | P2 | 是否有符号类型 |
120+
| `is_sparse()` | - [ ] | - [ ] | P3 | 是否稀疏张量 |
121+
| `is_sparse_csr()` | - [ ] | - [ ] | P3 | 是否 CSR 稀疏张量 |
122+
| `is_mkldnn()` | - [ ] | - [ ] | P3 | 是否 MKLDNN 张量 |
123+
| `is_mps()` | - [ ] | - [ ] | P3 | 是否 MPS 张量 |
124+
| `is_vulkan()` | - [ ] | - [ ] | P3 | 是否 Vulkan 张量 |
125+
| `is_metal()` | - [ ] | - [ ] | P3 | 是否 Metal 张量 |
126+
| `is_quantized()` | - [ ] | - [ ] | P3 | 是否量化张量 |
127+
| `is_inference()` | - [ ] | - [ ] | P3 | 是否推理张量 |
128+
| `is_nested()` | - [ ] | - [ ] | P3 | 是否嵌套张量 |
129+
130+
---
131+
132+
### 内存格式与连续性 API
133+
134+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
135+
|------------------------------|------------------|------------|-------|------|
136+
| `contiguous()` | 🔧 || P0 | 仅支持 Contiguous 格式 |
137+
| `expect_contiguous()` | - [ ] | - [ ] | P2 | MaybeOwned 版本 |
138+
| `suggest_memory_format()` | - [ ] | - [ ] | P2 | |
139+
140+
---
141+
142+
### 就地修改操作 API
143+
144+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
145+
|------------------------------|------------------|------------|-------|------|
146+
| `fill_(scalar)` ||| P0 | 填充标量值 |
147+
| `zero_()` ||| P0 | 置零 |
148+
| `copy_(src, non_blocking)` ||| P0 | 复制数据 |
149+
150+
---
151+
152+
### 形状变换 API
153+
154+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
155+
|------------------------------|------------------|------------|-------|------|
156+
| `reshape(shape)` ||| P0 | |
157+
| `view(size)` ||| P0 | 形状 view |
158+
| `view(dtype)` ||| P1 | 类型 view |
159+
160+
---
161+
162+
### 类型转换 API
163+
164+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
165+
|------------------------------|------------------|------------|-------|------|
166+
| `to(options, ...)` | 🔧 || P1 | 仅支持 dtype 转换,不支持 device/memory_format |
167+
168+
---
169+
170+
### 存储相关 API
171+
172+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
173+
|------------------------------|------------------|------------|-------|------|
174+
| `has_storage()` | 🚧 | 🚧 | P2 | |
175+
| `storage()` | 🚧 | 🚧 | P2 | |
176+
| `is_alias_of(other)` | 🚧 | 🚧 | P2 | |
177+
| `share_memory_()` | - [ ] | - [ ] | P3 | |
178+
179+
---
180+
181+
### 内部状态 API
182+
183+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
184+
|------------------------------|------------------|------------|-------|------|
185+
| `is_same(other)` | - [ ] | - [ ] | P2 | 是否同一张量 |
186+
| `use_count()` | - [ ] | - [ ] | P3 | 引用计数 |
187+
| `weak_use_count()` | - [ ] | - [ ] | P3 | 弱引用计数 |
188+
| `reset()` | 🚧 | 🚧 | P2 | 重置张量 |
189+
| `_is_zerotensor()` | - [ ] | - [ ] | P3 | |
190+
| `_set_zero(zero)` | - [ ] | - [ ] | P3 | |
191+
| `is_conj()` | - [ ] | - [ ] | P3 | 共轭标记 |
192+
| `_set_conj(conjugate)` | - [ ] | - [ ] | P3 | |
193+
| `is_neg()` | - [ ] | - [ ] | P3 | 负号标记 |
194+
| `_set_neg(negative)` | - [ ] | - [ ] | P3 | |
195+
196+
---
197+
198+
### TensorImpl 访问 API
199+
200+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
201+
|------------------------------|------------------|------------|-------|------|
202+
| `unsafeGetTensorImpl()` | - [ ] | - [ ] | P3 | 内部使用 |
203+
| `unsafeReleaseTensorImpl()` | - [ ] | - [ ] | P3 | 内部使用 |
204+
| `getIntrusivePtr()` | - [ ] | - [ ] | P3 | 内部使用 |
205+
| `unsafeReleaseIntrusivePtr()` | - [ ] | - [ ] | P3 | 内部使用 |
206+
207+
---
208+
209+
### 命名张量 API
210+
211+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
212+
|------------------------------|------------------|------------|-------|------|
213+
| `has_names()` | - [ ] | - [ ] | P3 | |
214+
| `opt_names()` | - [ ] | - [ ] | P3 | |
215+
| `names()` | - [ ] | - [ ] | P3 | |
216+
| `get_named_tensor_meta()` | - [ ] | - [ ] | P3 | |
217+
218+
---
219+
220+
### 自动求导 API
221+
222+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
223+
|------------------------------|------------------|------------|-------|------|
224+
| `requires_grad()` | - [ ] | - [ ] | P1 | |
225+
| `set_requires_grad(bool)` | - [ ] | - [ ] | P1 | |
226+
| `requires_grad_(bool)` | - [ ] | - [ ] | P1 | |
227+
| `is_leaf()` | - [ ] | - [ ] | P2 | |
228+
| `grad_fn()` | - [ ] | - [ ] | P2 | |
229+
| `retain_grad()` | - [ ] | - [ ] | P2 | |
230+
| `retains_grad()` | - [ ] | - [ ] | P2 | |
231+
| `_fw_grad(level)` | - [ ] | - [ ] | P3 | Forward AD |
232+
| `_set_fw_grad(...)` | - [ ] | - [ ] | P3 | Forward AD |
233+
| `register_hook(hook)` | - [ ] | - [ ] | P2 | |
234+
| `remove_hook(pos)` | - [ ] | - [ ] | P2 | |
235+
| `output_nr()` | - [ ] | - [ ] | P3 | |
236+
| `set_data(new_data)` | - [ ] | - [ ] | P2 | |
237+
| `data()` | - [ ] | - [ ] | P2 | |
238+
| `_version()` | - [ ] | - [ ] | P3 | |
239+
| `tensor_data()` | - [ ] | - [ ] | P3 | |
240+
| `variable_data()` | - [ ] | - [ ] | P3 | |
241+
242+
---
243+
244+
### 视图相关 API
245+
246+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
247+
|------------------------------|------------------|------------|-------|------|
248+
| `is_view()` | - [ ] | - [ ] | P2 | |
249+
| `_base()` | - [ ] | - [ ] | P2 | |
250+
251+
---
252+
253+
### 杂项 API
254+
255+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
256+
|------------------------------|------------------|------------|-------|------|
257+
| `toString()` | - [ ] | - [ ] | P3 | |
258+
| `print()` | - [ ] | - [ ] | P3 | |
259+
| `name()` | - [ ] | - [ ] | P3 | |
260+
| `quantizer()` | - [ ] | - [ ] | P3 | 量化器 |
261+
262+
---
263+
264+
### Paddle 兼容层特有 API
265+
266+
| API | 说明 |
267+
|------------------------------|------|
268+
| `_PD_GetInner()` | 获取内部 PaddleTensor 引用 |
269+
270+
---
271+
272+
### 兼容性统计
273+
274+
| 状态 | 数量 |
275+
|------|------|
276+
| ✅ 已完全支持 | 35 |
277+
| � 正在支持 | 7 |
278+
| 🔧 部分支持 | 2 |
279+
| - [ ] 未实现 | 63+ |
280+
281+
---
282+
283+
### 备注
284+
285+
1. **优先级说明**
286+
- P0: 核心功能,必须支持
287+
- P1: 常用功能,高优先级
288+
- P2: 进阶功能,中优先级
289+
- P3: 边缘功能,低优先级
290+
291+
2. **部分支持说明**
292+
- `contiguous()`: 目前仅支持 `MemoryFormat::Contiguous`,不支持 ChannelsLast 等格式
293+
- `to()`: 目前仅支持 dtype 转换,不支持 device 和 memory_format 选项
294+
295+
3. **符号化 API** (`sym_*`): 用于动态形状场景,目前均未支持
296+
297+
4. **自动求导 API**: 需要与 Paddle 的自动求导机制对接,待后续实现

0 commit comments

Comments
 (0)