-
Notifications
You must be signed in to change notification settings - Fork 5.9k
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

