Skip to content

Commit

Permalink
fix conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
JamesLim-sy committed Jun 17, 2022
2 parents 468a31e + 23c0039 commit 265f20a
Showing 1 changed file with 10 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 算子性能优化 方法介绍

飞桨作为一个开源项目, 提供高性能的计算服务是飞桨的特色之一。我们非常欢迎开发者为 Paddle 框架贡献高性能算子, 本文旨在向开发者提供一些快速实现高性能计算的方法
提供高性能的计算服务是飞桨的特色之一, 欢迎开发者为飞桨贡献高性能算子, 本文旨在提供一些快速实现高性能算子的方法

# 基本介绍

Expand Down Expand Up @@ -33,21 +33,27 @@ GPU Kernel直接影响了算子性能, 我们推荐采用以下等通用优化

我们推荐结合OP的使用场景设计对于的线程配置策略,如下图所示[IndexSample OP](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/index_sample_cn.html#index-sample)常用于处理2维数据, 因此使用[2维的线程配置策略](https://github.com/PaddlePaddle/Paddle/blob/30838aa698d6f3f3b0860b052f6a50ef53ac6784/paddle/phi/kernels/gpu/index_sample_kernel.cu#L82-L91)相对比1维配置策略,性能可提升20%左右。

<img src="../images/index_sample.png" alt="index_sample" style="zoom:80%"/>
<p align="center"><img width=80% src="../images/index_sample.png"/><br/>
图1. IndexSample OP 线程配置策略
</p>

优化GPU Kernel中的线程配置策略, 涵盖一维、二维、三维线程配置策略, 目前已经在`Elementwise`, `Stack`, `IndexSample`等OP中使用.

### 2.2 [Warp计算优化](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/phi/kernels/funcs/math_cuda_utils.h)

飞桨内对上文中提到的**Warp级操作**进行了封装, 提供了简易的调用接口, 开发者可调用接口快速获得Warp内或者Block内的全部数据的求和、最大值、最小值.

<img src="../images/cuda_math_utils.png" alt="warp_shuffle" style="zoom:80%"/>
<p align="center"><img width=80% src="../images/cuda_math_utils.png"/><br/>
图2. Warp级操作封装
</p>

### 2.3 [索引计算优化](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/fluid/platform/fast_divmod.h):

当GPU Kernel的索引计算中存在除法或取模操作, 将在导致汇编层面计算开销变大, 我们建议采用快速除法优化这部分的计算开销。飞桨内[Pooling OP](https://github.com/PaddlePaddle/Paddle/blob/890c73158f663b327be7664ed6c4d08fb2c236a9/paddle/phi/kernels/funcs/pooling.cu#L41-L101) 采用索引优化计算后, 性能提升1倍.

<img src="../images/fast_divmod.png" alt="fast_divmod" style="zoom:50%"/>
<p align="center"><img width=50% src="../images/fast_divmod.png"/><br/>
图2. 快速整型除法操作
</p>

### 2.4 [Kps优化工具库](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/kernel_primitive_api/index_cn.html)

Expand Down

0 comments on commit 265f20a

Please sign in to comment.