-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Closed
Labels
Description
问题描述 Please describe your issue
一,背景和任务列表
任务详情和单测验证请参考之前发布的任务:#57097
- Sparse Python API 情况:
目前 python 端注册了大约46个左右的 API,集中在 python/paddle/sparse 目录下,绝大部分是动态图 API,14个是动静统一的 API,算子定义都定义在 sparse_ops.yaml 及 sparse_backward.yaml 文件中,通过自动代码生成的方式生成在 paddle/fluid/operators/generated_sparse_op.cc 文件,全部符合 yaml 定义规范,多数算子都注册了 coo、csr 两种 kernel,根据 PIR 算子/Kernel 一对一的特点,PIR 下需要区分定义 coo、csr,这点与 SelectedRows 特点相近。
序号 | Python API | 动态图 | 静态图 | Kernel | 是否做到动静一致 |
---|---|---|---|---|---|
1 | sin | 是 | 否@MrJs133 @risemeup1 |
sin_coo、sin_csr | 是 |
2 | tan | 是 | 否@MrJs133 |
tan_coo、tan_csr | 是 |
3 | asin | 是 | 否@MrJs133 @risemeup1 |
asin_coo、asin_csr | 是 |
4 | transpose | 是 | 否 | transpose_coo、transpose_csr | 是 |
5 | sum | 是 | 是 | sum_coo、sum_csr | 是 |
6 | atan | 是 | 否 | atan_coo、atan_csr | 是 |
7 | sinh | 是 | 否@epiphanyer |
sinh_coo、sinh_csr | 是 |
8 | asinh | 是 | 否 | asinh_coo、asinh_csr | 是 |
9 | atanh | 是 | 否 | atanh_coo、atanh_csr | 是 |
10 | tanh | 是 | 否 | tanh_coo、tanh_csr | 是 |
11 | square | 是 | 否 | square_coo、square_csr | 是 |
12 | sqrt | 是 | 否@MrJs133 @risemeup1 |
sqrt_coo、sqrt_csr | 是 |
13 | log1p | 是 | 否@MrJs133 @risemeup1 |
log1p_coo、log1p_csr | 是 |
14 | cast | 是 | 否 | cast_coo、cast_csr | 是 |
15 | pow | 是 | 否 | pow_coo、pow_csr | 是 |
16 | neg | 是 | 否 | scale_coo、scale_csr | 是 |
17 | abs | 是 | 否 | abs_coo、abs_csr | 是 |
18 | coalesce | 是 | 否 | coalesce_coo | 是 |
19 | rad2deg | 是 | 否 | cast_coo、cast_csr、scale_coo、scale_csr | 是 |
20 | deg2rad | 是 | 否 | cast_coo、cast_csr、scale_coo、scale_csr | 是 |
21 | expm1 | 是 | 否 | expm1_coo、expm1_csr | 是 |
22 | reshape | 是 | 是 | reshape_coo、reshape_csr | 是 |
23 | isnan | 是 | 是 | isnan_coo、isnan_csr | 是 |
24 | slice | 是 | 是 | slice_coo、slice_csr | 是 |
25 | pca_lowrank | 是 | 是 | 通过其他 API 组合 | 是 |
26 | addmm | 是 | 否 | addmm_csr_dense、addmm_csr_csr、addmm_coo_dense、addmm_coo_coo | 是 |
27 | sparse_coo_tensor | 是 | 是 | sparse_coo_tensor | 是 |
28 | sparse_csr_tensor | 是 | 否 | sparse_csr_tensor | 是 |
29 | matmul | 是 | 否 | matmul_csr_dense、matmul_csr_csr、matmul_coo_dense、matmul_coo_coo | 是 |
30 | masked_matmul | 是 | 否 | masked_matmul_csr | 是 |
31 | mv | 是 | 否 | mv_coo、mv_csr | 是 |
32 | add | 是 | 是 | add_coo_coo、add_csr_csr、add_coo_dense | 是 |
33 | subtract | 是 | 否 | subtract_coo_coo、subtract_csr_csr | 是 |
34 | multiply | 是 | 否 | multiply_coo_coo、multiply_csr_csr | 是 |
35 | divide | 是 | 否 | divide_coo_coo、divide_csr_csr | 是 |
36 | is_same_shape | 是 | 否 | tensor method | 是 |
37 | relu | 是 | 是 | relu_coo、relu_csr | 是 |
38 | softmax | 是 | 是 | softmax_coo、softmax_csr | 是 |
39 | relu6 | 是 | 否 | relu6_coo、relu6_csr | 是 |
40 | leaky_relu | 是 | 否 | leaky_relu_coo、leaky_relu_csr | 是 |
41 | conv3d | 是 | 是 | conv3d_coo | 是 |
42 | subm_conv3d | 是 | 是 | conv3d_coo | 是 |
43 | conv2d | 是 | 是 | conv2d_coo | 是 |
44 | subm_conv2d | 是 | 是 | conv3d_coo | 是 |
45 | max_pool3d | 是 | 是 | maxpool_coo | 是 |
46 | attention | 是 | 否 | fused_attention_csr | 是 |
- 单测现状:
-
有一些仅仅在动态图下有定义的api,如sin,需要对python API进行适配升级,然后补全在动态图和静态图下的单测,请参考
【开源任务】新 IR API 推全升级 #57097
二、Task 📚
- 动静统一的python api,需要补全静态图单测的任务
序号 | Python API | 所在文件 | 对应单测 | 认领人/PR | 单测覆盖率 |
---|---|---|---|---|---|
1 | reshape | Paddle/python/paddle/sparse/unary.py | test/legacy_test/test_sparse_reshape_op.py | ||
2 | add | Paddle/python/paddle/sparse/binary.py | test/deprecated/legacy_test/test_sparse_elementwise_op.py | ||
3 | softmax | python/paddle/sparse/nn/functional/activation.py | test/legacy_test/test_sparse_fused_attention_op.py | ||
4 | subm_conv3d | python/paddle/sparse/nn/functional/conv.py | test/legacy_test/test_sparse_conv_op.py | ||
5 | subm_conv2d | python/paddle/sparse/nn/functional/conv.py | test/legacy_test/test_sparse_conv_op.py | ||
6 | max_pool3d | python/paddle/sparse/nn/functional/pooling.py | test/legacy_test/test_sparse_pooling_op.py |
2 仅在动态图下有定义的api,需要对python API进行适配升级,然后补全在动态图和静态图下的单测
序号 | Python API | 所在文件 | 对应单测 | 认领人/PR | 单测覆盖率 |
---|---|---|---|---|---|
7 | sin | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
8 | tan | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
9 | asin | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
10 | transpose | python/paddle/sparse/unary.py | test_sparse_transpose_op.py | ||
11 | atan | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
12 | sinh | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
13 | asinh | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
14 | atanh | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
15 | tanh | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
16 | square | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
17 | sqrt | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
18 | log1p | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
19 | pow | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
20 | neg | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
21 | abs | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
22 | cast | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
23 | coalesce | python/paddle/sparse/unary.py | test_sparse_conv_op.py/test_sparse_pca_lowrank.py/test_sparse_utils_op.py | ||
24 | rad2deg | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
25 | deg2rad | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
26 | expm1 | python/paddle/sparse/unary.py | test_sparse_unary_op.py | ||
27 | addmm | python/paddle/sparse/unary.py | test_sparse_addmm_op.py | ||
28 | sparse_csr_tensor | python/paddle/sparse/unary.py | test_sparse_utils_op.py/test_sparse_matmul_op.py | ||
29 | matmul | python/paddle/sparse/binary.py | test_sparse_matmul_op.py | ||
30 | masked_matmul | python/paddle/sparse/binary.py | test_sparse_matmul_op.py | ||
31 | mv | python/paddle/sparse/binary.py | test_sparse_mv_op.py | ||
32 | subtract | python/paddle/sparse/binary.py | test_sparse_elementwise_op.py | ||
33 | multiply | python/paddle/sparse/binary.py | test_sparse_elementwise_op.py | ||
34 | divide | python/paddle/sparse/binary.py | test_sparse_elementwise_op.py | ||
35 | is_same_shape | python/paddle/sparse/binary.py | test_sparse_is_same_shape_op.py | ||
36 | relu6 | python/paddle/sparse/nn/functional/activation.py | test_sparse_unary_op.py | ||
37 | leaky_relu | python/paddle/sparse/nn/functional/activation.py | test_sparse_unary_op.py | ||
38 | leaky_relu | python/paddle/sparse/nn/functional/transformer.py | test_sparse_fused_attention_op.py |
1. 认领方式
请大家以 comment 的形式认领任务,如:
【报名】:1、3、12-13
多个任务之间需要使用中文顿号分隔,报名多个连续任务可用横线表示,如 2-5
2. PR提交
- PR名称需要加前缀 【Migrate Sparse API No.XXX】
- PR描述中需要附上本issue
- 评论里或者 review request @risemeup1 研发会进行审核
看板信息
任务方向 | 任务数量 | 提交作品 / 任务认领 | 提交率 | 完成 | 完成率 |
---|---|---|---|---|---|
【快乐开源】PIR下Sparse算子Python API 适配 | 38 | 1 / 6 | 2.63% | 1 | 2.63% |
统计信息
排名不分先后 @epiphanyer (1)
Aurelius84Aurelius84
Metadata
Metadata
Labels
Type
Projects
Status
Done