Skip to content

Commit 2b82fcc

Browse files
committed
fix
1 parent 45114e5 commit 2b82fcc

File tree

3 files changed

+0
-133
lines changed

3 files changed

+0
-133
lines changed

test/ScalarTypeTest.cpp

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,3 @@
1-
// 兼容性对齐审计报告
2-
//
3-
// [异常点 1]
4-
// - 所在行号:第 113 行
5-
// - 测试用例:ToString / ElementSize / IsIntegralType(共 3 个)
6-
// - 当前状况:这 3 个测试曾被 #ifndef USE_PADDLE_API 保护,在 Paddle 下跳过。
7-
// - 根本原因:误判。Paddle compat c10/core/ScalarType.h 中已实现
8-
// c10::toString / c10::elementSize / c10::isIntegralType,签名与
9-
// libtorch 完全一致,无需宏保护。
10-
// - 期望解决:已将这 3 个测试移出 #ifndef 块,双库均参与编译对比。
11-
//
12-
// [异常点 2]
13-
// - 所在行号:第 211 行(IsFloat8Type 测试)
14-
// - 测试用例:IsFloat8Type
15-
// - 当前状况:引用了 ScalarType::Float8_e5m2fnuz / Float8_e4m3fnuz。
16-
// - 根本原因:Paddle compat ScalarType 枚举未定义这两个值,isFloat8Type
17-
// 实现中也将其注释掉(有意省略);libtorch 完整支持。
18-
// - 期望解决:在 Paddle compat ScalarType 枚举中补充上述两个值,并在
19-
// isFloat8Type 实现中启用,与 libtorch 保持一致后移出宏块。
20-
//
21-
// [异常点 3]
22-
// - 所在行号:第 258 行(IsComplexType 测试)
23-
// - 测试用例:IsComplexType
24-
// - 当前状况:引用了 ScalarType::ComplexHalf。
25-
// - 根本原因:Paddle compat ScalarType 枚举未包含 ComplexHalf,
26-
// isComplexType 实现中对该分支也已注释掉;libtorch 完整支持。
27-
// - 期望解决:在 Paddle compat 枚举和 isComplexType 中补充 ComplexHalf。
28-
//
29-
// [异常点 4]
30-
// - 所在行号:第 297 行起(共 10 个测试)
31-
// - 测试用例:IsQIntType / IsBitsType / IsBarebonesUnsignedType /
32-
// ToQIntType / ToUnderlying / IsUnderlying / ToRealValueType /
33-
// ToComplexType / CanCast / NumScalarTypes
34-
// - 当前状况:全部在 #ifndef USE_PADDLE_API 块内,Paddle 下跳过。
35-
// - 根本原因:对应的 10 个 c10:: 函数/常量在 Paddle compat ScalarType.h
36-
// 中全部缺失:isQIntType / isBitsType / isBarebonesUnsignedType /
37-
// toQIntType / toUnderlying / isUnderlying / toRealValueType /
38-
// toComplexType / canCast / NumScalarTypes。
39-
// - 期望解决:在 Paddle compat 中逐一补全上述接口,完成后将对应测试
40-
// 移出 #ifndef 块,实现真正的双库对齐测试。
411
#include <ATen/ATen.h>
422
#include <ATen/core/Tensor.h>
433
#include <ATen/ops/ones.h>

test/TensorAccessorTest.cpp

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,3 @@
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-
*/
701
#include <ATen/ATen.h>
712
#include <ATen/core/Tensor.h>
723
#include <ATen/core/TensorAccessor.h>

test/TensorTest.cpp

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,3 @@
1-
/*
2-
* =====================================================================================
3-
* @brief: 兼容性对齐审计报告
4-
*
5-
* [异常点 1]
6-
* - 所在行号:第 201 行(原第 193 行)
7-
* - 测试用例:IsSparse / IsSparseCsr(共 2 个,被整块 `#ifndef USE_PADDLE_API`
8-
* 保护)
9-
* - 当前状况:这 2 个测试在 Paddle 构建模式下被完全跳过。
10-
* - 根本原因:经查证,**这两个测试实际上可以对齐**:
11-
* ① Paddle compat 的 `ATen/core/TensorBase.h` 中已实现
12-
* `is_sparse()` 和 `is_sparse_csr()`,方法签名一致。
13-
* ② Paddle compat 的 `ATen/ops/empty.h` 和 `ATen/ops/zeros_like.h`
14-
* 中已支持 `at::kSparse` 和 `at::kSparseCsr` layout 选项,
15-
* 并通过 `_PD_ConvertToSparseIfNeeded` 完成稀疏格式转换。
16-
* ③ `c10/core/Layout.h` 中已定义 `kSparse`、`kSparseCsr` 常量。
17-
* 因此,`IsSparse` 和 `IsSparseCsr` 两个测试用例被 `#ifndef`
18-
* 保护是**误判**的妥协写法,并非因为真实的接口缺失,而是未经充分
19-
* 验证就保守地将其排除了 Paddle 构建。
20-
* - 期望解决:将 `IsSparse` 和 `IsSparseCsr` 两个测试从
21-
* `#ifndef USE_PADDLE_API` 块中移出,使其在两库下均参与编译和对比
22-
* 测试,以验证稀疏张量创建和判断接口的实际对齐程度。
23-
* =====================================================================================
24-
*/
251
#include <ATen/ATen.h>
262
#include <ATen/core/Tensor.h>
273
#include <ATen/ops/ones.h>

0 commit comments

Comments
 (0)