Skip to content

Commit

Permalink
fix typo and design of sparse rfc (#95)
Browse files Browse the repository at this point in the history
* fix typo and design of sparse rfc

* fix typo and design of sparse rfc

* fix typo
  • Loading branch information
gsq7474741 committed Apr 6, 2022
1 parent bb2647e commit 9911bee
Show file tree
Hide file tree
Showing 4 changed files with 133 additions and 68 deletions.
54 changes: 35 additions & 19 deletions rfcs/APIs/20020329_api_design_for_sparse_subtract.md
Expand Up @@ -12,10 +12,9 @@

## 1、相关背景

为了提升飞桨API丰富度,subtract 是一个基础减法运算操作,目前 Paddle 中还没有 sparse 的减法算子。 本任务的目标是在 Paddle 中添加
sparse.subtract 算子, 实现输入是两个 SparseCooTensor 或者两个 SparseCsrTensor 逐元素相减的功能。
Paddle需要扩充API,新增 sparse.subtract API, 调用路径为:`paddle.sparse.subtract`
实现稀疏Tensor相加的功能。
为了提升飞桨API丰富度,subtract 是一个基础减法运算操作,目前 Paddle 中还没有 sparse 的减法算子。 本任务的目标是在 Paddle 中添加 sparse.subtract 算子, 实现输入是两个
SparseCooTensor 或者两个 SparseCsrTensor 逐元素相减的功能。 Paddle需要扩充API,新增 sparse.subtract API, 调用路径为:`paddle.sparse.subtract`
实现稀疏Tensor相减的功能。

## 3、意义

Expand Down Expand Up @@ -148,27 +147,44 @@ torch设计结构复杂,为了适配paddle phi库的设计模式,故采用sc
## 命名与参数设计
在paddle/phi/kernels/sparse/目录下, API设计为
```
SparseCooTensor SubtractKernel(const Context& dev_ctx,
const SparseCooTensor& x,
const SparseCooTensor& y,
SparseCooTensor* out);
```
在paddle/phi/kernels/sparse/目录下, kernel设计为
```
void SubtractCsrKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
SparseCsrTensor* out);
```
```
//暂定
void SubtractCsrGradKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
const SparseCsrTensor& dout,
SparseCsrTensor* dx,
SparseCsrTensor* dy);
```
函数设计为
```
SparseCooTensor Subtract(const Context& dev_ctx,
const SparseCooTensor& x,
const SparseCooTensor& y);
```
```
SparseCsrTensor SubtractKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
SparseCsrTensor* out);
```
```
SparseCsrTensor Subtract(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y);
```
## 底层OP设计
使用已有op组合实现,主要涉及`SparseCooToCsrKernel`和`SparseCsrToCooKernel`。
新增一个sparse elementwise 的功能模块(暂定),然后使用已有op组合实现, 主要涉及`SparseCooToCsrKernel`和`SparseCsrToCooKernel`。
## API实现方案
Expand Down
36 changes: 26 additions & 10 deletions rfcs/APIs/20220329_api_design_for_sparse_add.md
Expand Up @@ -147,27 +147,43 @@ torch设计结构复杂,为了适配paddle phi库的设计模式,故采用sc
## 命名与参数设计
在paddle/phi/kernels/sparse/目录下, API设计为
在paddle/phi/kernels/sparse/目录下, kernel设计为
```
SparseCooTensor AddKernel(const Context& dev_ctx,
const SparseCooTensor& x,
const SparseCooTensor& y,
SparseCooTensor* out);
void AddCsrKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
SparseCsrTensor* out);
```
```
//暂定
void AddCsrGradKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
const SparseCsrTensor& dout,
SparseCsrTensor* dx,
SparseCsrTensor* dy);
```
函数设计为
```
SparseCooTensor Add(const Context& dev_ctx,
const SparseCooTensor& x,
const SparseCooTensor& y);
```
```
SparseCsrTensor AddKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
SparseCsrTensor* out);
SparseCsrTensor Add(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y);
```
## 底层OP设计
使用已有op组合实现,主要涉及`SparseCooToCsrKernel`和`SparseCsrToCooKernel`。
新增一个sparse elementwise 的功能模块(暂定),然后使用已有op组合实现, 主要涉及`SparseCooToCsrKernel`和`SparseCsrToCooKernel`。
## API实现方案
Expand Down
57 changes: 37 additions & 20 deletions rfcs/APIs/20220329_api_design_for_sparse_divide.md
Expand Up @@ -12,10 +12,9 @@

## 1、相关背景

为了提升飞桨API丰富度,divide 是一个基础除法运算操作,目前 Paddle 中还没有 sparse 的除法算子。 本任务的目标是在 Paddle 中添加
sparse.divide 算子, 实现输入是两个 SparseCooTensor 或者两个 SparseCsrTensor 逐元素相除的功能。
Paddle需要扩充API,新增 sparse.divide API, 调用路径为:`paddle.sparse.divide`
实现稀疏Tensor相加的功能。
为了提升飞桨API丰富度,divide 是一个基础除法运算操作,目前 Paddle 中还没有 sparse 的除法算子。 本任务的目标是在 Paddle 中添加 sparse.divide 算子, 实现输入是两个
SparseCooTensor 或者两个 SparseCsrTensor 逐元素相除的功能。 Paddle需要扩充API,新增 sparse.divide API, 调用路径为:`paddle.sparse.divide`
实现稀疏Tensor相除的功能。

## 3、意义

Expand All @@ -29,7 +28,7 @@ Paddle需要扩充API,新增 sparse.divide API, 调用路径为:`paddle.spar

## Pytorch

Pytorch中有API`ttorch.div(input, other, *, rounding_mode=None, out=None)` , 在pytorch中,介绍为:
Pytorch中有API`torch.div(input, other, *, rounding_mode=None, out=None)` , 在pytorch中,介绍为:

```
Divides each element of the input input by the corresponding element of other.
Expand Down Expand Up @@ -148,27 +147,45 @@ torch设计结构复杂,为了适配paddle phi库的设计模式,故采用sc
## 命名与参数设计
在paddle/phi/kernels/sparse/目录下, API设计为
```
SparseCooTensor DivideKernel(const Context& dev_ctx,
const SparseCooTensor& x,
const SparseCooTensor& y,
SparseCooTensor* out);
```
在paddle/phi/kernels/sparse/目录下,在paddle/phi/kernels/sparse/目录下, kernel设计为
```
void DivideCsrKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
SparseCsrTensor* out);
```
```
//暂定
void DivideGradKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
const SparseCsrTensor& out,
const SparseCsrTensor& dout,
SparseCsrTensor* dx,
SparseCsrTensor* dy);
```
函数设计为
```
SparseCooTensor Divide(const Context& dev_ctx,
const SparseCooTensor& x,
const SparseCooTensor& y);
```
```
SparseCsrTensor DivideKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
SparseCsrTensor* out);
```
```
SparseCsrTensor Divide(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y);
```
## 底层OP设计
使用已有op组合实现,主要涉及`SparseCooToCsrKernel`和`SparseCsrToCooKernel`。
新增一个sparse elementwise 的功能模块(暂定),然后使用已有op组合实现, 主要涉及`SparseCooToCsrKernel`和`SparseCsrToCooKernel`。
## API实现方案
Expand Down
54 changes: 35 additions & 19 deletions rfcs/APIs/20220329_api_design_for_sparse_multiply.md
Expand Up @@ -12,10 +12,9 @@

## 1、相关背景

为了提升飞桨API丰富度,multiply 是一个基础乘法运算操作,目前 Paddle 中还没有 sparse 的乘法算子。 本任务的目标是在 Paddle 中添加
sparse.multiply 算子, 实现输入是两个 SparseCooTensor 或者两个 SparseCsrTensor 逐元素相乘的功能。
Paddle需要扩充API,新增 sparse.multiply API, 调用路径为:`paddle.sparse.multiply`
实现稀疏Tensor相加的功能。
为了提升飞桨API丰富度,multiply 是一个基础乘法运算操作,目前 Paddle 中还没有 sparse 的乘法算子。 本任务的目标是在 Paddle 中添加 sparse.multiply 算子, 实现输入是两个
SparseCooTensor 或者两个 SparseCsrTensor 逐元素相乘的功能。 Paddle需要扩充API,新增 sparse.multiply API, 调用路径为:`paddle.sparse.multiply`
实现稀疏Tensor相乘的功能。

## 3、意义

Expand Down Expand Up @@ -148,27 +147,44 @@ torch设计结构复杂,为了适配paddle phi库的设计模式,故采用sc
## 命名与参数设计
在paddle/phi/kernels/sparse/目录下, API设计为
```
SparseCooTensor MultiplyKernel(const Context& dev_ctx,
const SparseCooTensor& x,
const SparseCooTensor& y,
SparseCooTensor* out);
```
在paddle/phi/kernels/sparse/目录下, kernel设计为
```
void MultiplyCsrKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
SparseCsrTensor* out);
```
```
//暂定
void MultiplyCsrGradKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
const SparseCsrTensor& dout,
SparseCsrTensor* dx,
SparseCsrTensor* dy)
```
函数设计为
```
SparseCooTensor Multiply(const Context& dev_ctx,
const SparseCooTensor& x,
const SparseCooTensor& y);
```
```
SparseCsrTensor MultiplyKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
SparseCsrTensor* out);
```
```
SparseCsrTensor Multiply(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y);
```
## 底层OP设计
使用已有op组合实现,主要涉及`SparseCooToCsrKernel`和`SparseCsrToCooKernel`。
新增一个sparse elementwise 的功能模块(暂定),然后使用已有op组合实现, 主要涉及`SparseCooToCsrKernel`和`SparseCsrToCooKernel`。
## API实现方案
Expand Down

0 comments on commit 9911bee

Please sign in to comment.