Skip to content

Commit 2240d40

Browse files
youge325Copilot
andauthored
add doc (#15)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent a96314b commit 2240d40

File tree

4 files changed

+705
-0
lines changed

4 files changed

+705
-0
lines changed

doc/allocator.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
##### Allocator.h 头文件 API 兼容情况
2+
3+
4+
##### Allocator.h 头文件 API 兼容性
5+
6+
✅ 表示已经支持
7+
🚧 表示正在支持
8+
❌ 表示不准备支持
9+
🔧 表示部分支持(有功能限制)
10+
11+
**按照功能分类排序**
12+
13+
---
14+
15+
### 类型定义
16+
17+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
18+
|------------------------------|------------------|------------|-------|------|
19+
| `DeleterFnPtr` ||| P0 | 删除器函数指针类型 |
20+
21+
---
22+
23+
### DataPtr 类
24+
25+
#### 构造与赋值
26+
27+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
28+
|------------------------------|------------------|------------|-------|------|
29+
| `DataPtr()` ||| P0 | 默认构造函数 |
30+
| `DataPtr(void*, Device)` ||| P0 | 数据指针+设备构造 |
31+
| `DataPtr(void*, void*, DeleterFnPtr, Device)` ||| P0 | 完整构造函数 |
32+
| `DataPtr(const DataPtr&)` ||| P0 | 拷贝构造函数 |
33+
| `DataPtr(DataPtr&&)` ||| P0 | 移动构造函数 |
34+
| `operator=(const DataPtr&)` ||| P0 | 拷贝赋值运算符 |
35+
| `operator=(DataPtr&&)` ||| P0 | 移动赋值运算符 |
36+
37+
#### 数据访问 API
38+
39+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
40+
|------------------------------|------------------|------------|-------|------|
41+
| `get()` ||| P0 | 获取原始指针 |
42+
| `operator->()` ||| P0 | 指针访问运算符 |
43+
| `operator bool()` ||| P0 | 布尔转换 |
44+
| `device()` ||| P0 | 获取设备 |
45+
| `get_deleter()` ||| P1 | 获取删除器 |
46+
| `get_context()` ||| P1 | 获取上下文 |
47+
| `clear()` ||| P1 | 清空数据 |
48+
| `mutable_get()` | - [ ] | - [ ] | P2 | 获取可变指针 |
49+
| `release_context()` | - [ ] | - [ ] | P2 | 释放上下文 |
50+
| `move_context()` | - [ ] | - [ ] | P2 | 移动上下文 |
51+
| `compare_exchange_deleter()` | - [ ] | - [ ] | P3 | 比较交换删除器 |
52+
| `unsafe_set_device()` | - [ ] | - [ ] | P3 | 不安全设置设备 |
53+
54+
#### 比较运算符
55+
56+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
57+
|------------------------------|------------------|------------|-------|------|
58+
| `operator==(DataPtr, nullptr_t)` ||| P0 | |
59+
| `operator==(nullptr_t, DataPtr)` ||| P0 | |
60+
| `operator!=(DataPtr, nullptr_t)` ||| P0 | |
61+
| `operator!=(nullptr_t, DataPtr)` ||| P0 | |
62+
63+
---
64+
65+
### Allocator 基类
66+
67+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
68+
|------------------------------|------------------|------------|-------|------|
69+
| `allocate(size_t)` | - [ ] | - [ ] | P2 | 分配内存 |
70+
| `clone(void*, size_t)` | - [ ] | - [ ] | P3 | 克隆分配 |
71+
| `is_simple_data_ptr()` | - [ ] | - [ ] | P3 | |
72+
| `raw_deleter()` | - [ ] | - [ ] | P2 | 获取原始删除器 |
73+
| `raw_allocate(size_t)` | - [ ] | - [ ] | P2 | 原始分配 |
74+
| `raw_deallocate(void*)` | - [ ] | - [ ] | P2 | 原始释放 |
75+
| `copy_data()` | - [ ] | - [ ] | P3 | 复制数据 |
76+
77+
---
78+
79+
### 全局函数
80+
81+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
82+
|------------------------------|------------------|------------|-------|------|
83+
| `SetAllocator()` | - [ ] | - [ ] | P3 | 设置分配器 |
84+
| `GetAllocator()` | - [ ] | - [ ] | P3 | 获取分配器 |
85+
86+
---
87+
88+
### InefficientStdFunctionContext
89+
90+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
91+
|------------------------------|------------------|------------|-------|------|
92+
| `makeDataPtr()` | - [ ] | - [ ] | P3 | 创建带自定义删除器的 DataPtr |
93+
94+
---
95+
96+
### Paddle 兼容层特有 API
97+
98+
| API | 说明 |
99+
|------------------------------|------|
100+
| `DataPtr(shared_ptr<phi::Allocation>)` | 从 Paddle Allocation 构造 |
101+
| `allocation()` | 获取底层 phi::Allocation |
102+
103+
---
104+
105+
### 兼容性统计
106+
107+
| 状态 | 数量 |
108+
|------|------|
109+
| ✅ 已完全支持 | 18 |
110+
| 🚧 正在支持 | 0 |
111+
| 🔧 部分支持 | 0 |
112+
| - [ ] 未实现 | 12 |
113+
114+
---
115+
116+
### 备注
117+
118+
1. **优先级说明**
119+
- P0: 核心功能,必须支持
120+
- P1: 常用功能,高优先级
121+
- P2: 进阶功能,中优先级
122+
- P3: 边缘功能,低优先级
123+
124+
2. **实现说明**
125+
- Paddle 兼容层的 `DataPtr` 基于 `phi::Allocation` 实现
126+
- 设备类型使用 `phi::Place` 而非 `c10::Device`
127+
- `Allocator` 基类暂未实现,使用 Paddle 原生的 `phi::Allocator`
128+
129+
3. **命名空间**
130+
- `c10::DataPtr` - 主命名空间
131+
- `at::DataPtr` - 别名

doc/layout.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
##### Layout.h 头文件 API 兼容情况
2+
3+
4+
##### Layout.h 头文件 API 兼容性
5+
6+
✅ 表示已经支持
7+
🚧 表示正在支持
8+
❌ 表示不准备支持
9+
🔧 表示部分支持(有功能限制)
10+
11+
**按照功能分类排序**
12+
13+
---
14+
15+
### Layout 枚举类型
16+
17+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
18+
|------------------------------|------------------|------------|-------|------|
19+
| `Layout::Strided` ||| P0 | 标准密集布局 |
20+
| `Layout::Sparse` ||| P2 | COO 稀疏布局 |
21+
| `Layout::SparseCsr` ||| P2 | CSR 稀疏布局 |
22+
| `Layout::Mkldnn` ||| P3 | MKLDNN 布局 |
23+
| `Layout::SparseCsc` ||| P3 | CSC 稀疏布局 |
24+
| `Layout::SparseBsr` ||| P3 | BSR 稀疏布局 |
25+
| `Layout::SparseBsc` ||| P3 | BSC 稀疏布局 |
26+
| `Layout::Jagged` ||| P3 | 不规则布局 |
27+
| `Layout::NumOptions` ||| P3 | 布局选项数量 |
28+
29+
---
30+
31+
### 布局常量
32+
33+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
34+
|------------------------------|------------------|------------|-------|------|
35+
| `kStrided` ||| P0 | = Layout::Strided |
36+
| `kSparse` ||| P2 | = Layout::Sparse |
37+
| `kSparseCsr` ||| P2 | = Layout::SparseCsr |
38+
| `kMkldnn` ||| P3 | = Layout::Mkldnn |
39+
| `kSparseCsc` ||| P3 | = Layout::SparseCsc |
40+
| `kSparseBsr` ||| P3 | = Layout::SparseBsr |
41+
| `kSparseBsc` ||| P3 | = Layout::SparseBsc |
42+
| `kJagged` ||| P3 | = Layout::Jagged |
43+
44+
---
45+
46+
### 辅助函数
47+
48+
| torch API | paddle API 兼容性 | 测试用例状态 | 优先级 | 备注 |
49+
|------------------------------|------------------|------------|-------|------|
50+
| `operator<<(ostream, Layout)` ||| P1 | 输出流运算符 |
51+
| `layout_from_backend()` | - [ ] | - [ ] | P3 | 从后端推断布局 |
52+
53+
---
54+
55+
### 命名空间导出
56+
57+
| 命名空间 | 导出内容 | 状态 |
58+
|---------|---------|------|
59+
| `c10` | Layout 枚举、所有常量 ||
60+
| `at` | Layout 枚举、所有常量 ||
61+
| `torch` | Layout 枚举、所有常量 ||
62+
63+
---
64+
65+
### 兼容性统计
66+
67+
| 状态 | 数量 |
68+
|------|------|
69+
| ✅ 已完全支持 | 18 |
70+
| 🚧 正在支持 | 0 |
71+
| 🔧 部分支持 | 0 |
72+
| - [ ] 未实现 | 1 |
73+
74+
---
75+
76+
### 备注
77+
78+
1. **优先级说明**
79+
- P0: 核心功能,必须支持
80+
- P1: 常用功能,高优先级
81+
- P2: 进阶功能,中优先级
82+
- P3: 边缘功能,低优先级
83+
84+
2. **实现说明**
85+
- Layout 枚举与 LibTorch 完全一致
86+
- 输出流运算符支持所有布局类型的字符串表示
87+
- `layout_from_backend()` 未实现,因为 Paddle 使用不同的后端抽象
88+
89+
3. **使用建议**
90+
- 大多数场景使用 `kStrided`(默认密集布局)
91+
- 稀疏张量相关布局需要配合稀疏张量 API 使用

0 commit comments

Comments
 (0)