|
1 | | -/* |
2 | | - * ===================================================================================== |
3 | | - * @brief: 兼容性对齐审计报告 |
4 | | - * |
5 | | - * [异常点 1] |
6 | | - * - 所在行号:第 121、204、255、291 行(分别对应 TensorAccessorBasic、 |
7 | | - * TensorAccessorBaseDirect、TensorAccessorBaseConstData、 |
8 | | - * TensorAccessorDirect 测试内部的 `#if USE_PADDLE_API` 分支) |
9 | | - * - 测试用例:TensorAccessorBasic / TensorAccessorBaseDirect / |
10 | | - * TensorAccessorBaseConstData / TensorAccessorDirect |
11 | | - * - 当前状况:在上述 4 个测试中,`sizes()` 和 `strides()` 的调用被 |
12 | | - * `#if USE_PADDLE_API … #else …` 拆分成两套逻辑——Paddle 路径使用 |
13 | | - * `accessor.sizes()` 返回 `c10::IntArrayRef`,libtorch 路径则 |
14 | | - * 硬编码输出 `"3 "` 等字面量后改用 `accessor.size(i)` 逐个获取, |
15 | | - * 导致输出内容不一致且可比性差。 |
16 | | - * - 根本原因:**误判造成的不必要妥协**。经查证,libtorch 的 |
17 | | - * `ATen/core/TensorAccessor.h` 和 Paddle compat 的同路径头文件 |
18 | | - * 在 `TensorAccessorBase` 中均实现了: |
19 | | - * `C10_HOST IntArrayRef sizes() const` |
20 | | - * `C10_HOST IntArrayRef strides() const` |
21 | | - * 两个方法签名完全一致,返回类型均为 `c10::IntArrayRef`,无需 |
22 | | - * 分叉处理。 |
23 | | - * - 期望解决:移除这 4 处的 `#if USE_PADDLE_API` 条件编译,统一使用 |
24 | | - * `accessor.sizes()` / `accessor.strides()` 返回 `IntArrayRef` |
25 | | - * 的写法,两库应输出相同结果。 |
26 | | - * |
27 | | - * [异常点 2] |
28 | | - * - 所在行号:第 383 行(`#ifndef USE_PADDLE_API` 开始处) |
29 | | - * - 测试用例:GenericPackedTensorAccessorBaseDirect / |
30 | | - * GenericPackedTensorAccessorDirect / |
31 | | - * GenericPackedTensorAccessorTranspose / |
32 | | - * GenericPackedTensorAccessor1D / |
33 | | - * PackedTensorAccessor64Alias / |
34 | | - * PackedTensorAccessor32Alias / |
35 | | - * GenericPackedTensorAccessorInt64Source / |
36 | | - * TensorAccessor2D / ConstGenericPackedTensorAccessor / |
37 | | - * ConstGenericPackedTensorAccessorBaseData / |
38 | | - * GenericPackedTensorAccessor1DTranspose / |
39 | | - * PackedAccessor64Write / TensorAccessorWrite / |
40 | | - * TensorAccessorCoverage(共 14 个 TEST_F,全部被禁用) |
41 | | - * - 当前状况:14 个测试被整块 `#ifndef USE_PADDLE_API … #endif` 保护, |
42 | | - * Paddle 构建模式下无任何用例参与对比测试。 |
43 | | - * - 根本原因(分两类): |
44 | | - * ① `GenericPackedTensorAccessorBase` / `GenericPackedTensorAccessor` / |
45 | | - * `PackedTensorAccessor64` / `PackedTensorAccessor32` 相关的 9 个测试: |
46 | | - * Paddle compat 的 `ATen/core/TensorAccessor.h` 中**未实现**这些模板类, |
47 | | - * 而 libtorch 同路径文件中它们与 `TensorAccessorBase` 并列定义。这是 |
48 | | - * 真实的接口缺失——Paddle compat 仅对 CPU `TensorAccessor` 系列做了对齐, |
49 | | - * 未覆盖 CUDA 侧使用的 `GenericPackedTensorAccessor` 系列。 |
50 | | - * ② `GenericPackedTensorAccessorDirect`(426 行)和 |
51 | | - * `GenericPackedTensorAccessorDirect`(450 行)内部还嵌套了 |
52 | | - * `#if USE_PADDLE_API … #else …` 的双路 `sizes()/strides()` 逻辑, |
53 | | - * 与异常点 1 性质相同,属于叠加的误判妥协写法。 |
54 | | - * ③ `TensorAccessorWrite` 和 `TensorAccessorCoverage` 这 2 个测试仅使用 |
55 | | - * 基础的 `TensorAccessor<float,2>` 接口,两库均支持,属于可被移出宏块 |
56 | | - * 的**误保护**测试。 |
57 | | - * - 期望解决: |
58 | | - * ① 在 Paddle compat 的 `ATen/core/TensorAccessor.h` 中补充 |
59 | | - * `GenericPackedTensorAccessorBase<T,N,PtrTraits,index_t>` 和 |
60 | | - * `GenericPackedTensorAccessor<T,N,PtrTraits,index_t>` 模板类的完整实现, |
61 | | - * 包括对应的 `PackedTensorAccessor32` / `PackedTensorAccessor64` |
62 | | - * 类型别名, 与 libtorch 接口保持一致;同时在 `ATen/core/Tensor.h` 中补充 |
63 | | - * `packed_accessor64<T,N>()` 方法。 |
64 | | - * ② 消除 `GenericPackedTensorAccessorDirect` 内部的 `#if USE_PADDLE_API` |
65 | | - * 分叉,统一使用 `sizes()`/`strides()` 返回 `IntArrayRef`(见异常点 1)。 |
66 | | - * ③ 将 `TensorAccessorWrite` 和 `TensorAccessorCoverage` 从宏块中提取出来, |
67 | | - * 移至无条件编译区域参与双库对比。 |
68 | | - * ===================================================================================== |
69 | | - */ |
70 | 1 | #include <ATen/ATen.h> |
71 | 2 | #include <ATen/core/Tensor.h> |
72 | 3 | #include <ATen/core/TensorAccessor.h> |
|
0 commit comments