Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix typo and design of sparse rfc #95

Merged
merged 4 commits into from Apr 6, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
55 changes: 36 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,45 @@ 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,
int axis,
gsq7474741 marked this conversation as resolved.
Show resolved Hide resolved
SparseCsrTensor* dx,
SparseCsrTensor* dy;
gsq7474741 marked this conversation as resolved.
Show resolved Hide resolved
```

函数设计为

```
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
37 changes: 27 additions & 10 deletions rfcs/APIs/20220329_api_design_for_sparse_add.md
Expand Up @@ -147,27 +147,44 @@ 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
gsq7474741 marked this conversation as resolved.
Show resolved Hide resolved
SparseCsrTensor* out);
```

```
//暂定
void AddCsrGradKernel(const Context& dev_ctx,
const SparseCsrTensor& x,
const SparseCsrTensor& y,
const SparseCsrTensor& dout,
int axis,
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
58 changes: 38 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,46 @@ 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,
int axis,
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
55 changes: 36 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,45 @@ 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,
int axis,
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