Kernel Primitive API¶
本部分为 PaddlePaddle 高级开发人员提供了用于 Kernel 开发的 CUDA Kernel Primitive API,该类 API 能够帮助开发者在提升开发效率的同时收获较好的性能。Kernel Primitive API 主要包括 IO API、Compute API以及 OpFunc,IO API 能够高效的完成全局内存与寄存器间的数据读写操作;Compute API 为通用计算函数,如ElementwiseBinary、ElementwiseUnary 等;OpFunc 用于定义 Compute API 中的计算规则,例如实现 Add 操作则需要定义 AddFunctor 用于 ElementwiseBinary 调用,开发者可以直接使用默认的 OpFunc 也可以根据需要进行自定义,具体的实现规则将在 OpFunc 小节中进行详细介绍。当前 API 均是 Block 级别的多线程 API,开发者可以直接传入当前 Block 的数据指针以及操作类型完成相应的计算,目前仅支持全局数据指针和寄存器指针。
API 列表¶
API 名称  |  
           功能简介  |  
          
|---|---|
ReadData  |  
           IO,将数据从全局内存读取到寄存器中。  |  
          
ReadDataBc  |  
           IO,Broadcast 形式的数据读取, 根据当前 Block 的数据偏移和原始输入指针计算输入坐标, 并将输入数据读取到寄存器中。  |  
          
ReadDataReduce  |  
           IO,Reduce 形式的数据读取, 将需要进行规约的数据从全局内存读取到寄存器中。  |  
          
WriteData  |  
           IO,将数据从寄存器写入全局内存中。  |  
          
ElementwiseUnary  |  
           Compute API,输入与输出 Shape 相同的一元计算 API,根据 OpFunc 计算规则完成一元逐元素运算。  |  
          
ElementwiseBinary  |  
           Compute API,输入与输出 Shape 相同的二元计算 API,根据 OpFunc 计算规则完成二元逐元素运算。  |  
          
ElementwiseTernary  |  
           Compute API,输入与输出 Shape 相同的三元计算 API,根据 OpFunc 计算规则完成三元逐元素运算。  |  
          
ElementwiseAny  |  
           Compute API,输入与输出 Shape 相同的多元计算 API,根据 OpFunc 计算规则完成多元逐元素运算。  |  
          
CycleBinary  |  
           Compute API,input1 和 input2 具有不同 Shape, input2 和 output 具有相同 Shape, 根据 OpFunc 计算规则完成二元循环操作。  |  
          
Reduce  |  
           Compute API,根据 Reduce 模式完成数据规约。  |  
          
OpFunc 列表¶
Functor 名称  |  
           功能简介  |  
          
|---|---|
ExpFunctor  |  
           一元 Functor,对输入数据进行 Exp 操作。  |  
          
IdentityFunctor  |  
           一元 Functor,对输入数据进行类型转换操作。  |  
          
DivideFunctor  |  
           一元 Functor,对输入数据除以固定值。  |  
          
SquareFunctor  |  
           一元 Functor,对数据进行 Square 操作。  |  
          
MinFunctor  |  
           二元 Functor,返回输入中的最小值。  |  
          
MaxFunctor  |  
           二元 Functor,返回输入中的最大值。  |  
          
AddFunctor  |  
           二元 Functor,返回输入之和。  |  
          
MulFunctor  |  
           二元 Functor,返回输入的乘积。  |  
          
LogicalOrFunctor  |  
           二元 Functor,返回输入的逻辑或的操作结果。  |  
          
LogicalAndFunctor  |  
           二元 Functor,返回输入的逻辑与的操作结果。  |  
          
DivFunctor  |  
           二元 Functor,返回两数相除的结果。  |  
          
FloorDivFunctor  |  
           二元 Functor,返回两数相除的结果。  |  
          
API 介绍¶
IO API : 介绍 IO 类 API 的定义和功能。
Compute API : 介绍 Compute 类 API 的定义和功能。
OpFunc : 介绍 Kernel Primitive API 提供的 Functor。
