Files

如何编译和使用cutlass的conv2d算子

本文件夹下面对应的是基于cutlass开发的conv2d算子,此算子被独立编译成so,供paddle内部的phi库调用。 这样做的好处有两个:

  1. 减少paddle 发版时包的体积,避免把cutlass的代码打包进paddle inference中。
  2. 将框架和算子具体实现完全解耦开,保证paddle框架的通用性的同时,保证具体算子实现的灵活性。

用户可以采用如下步骤编译和使用此算子

step1.

bash compile.sh

注意,该脚本中有三个参数需要用户自己指定下,分别是python解释器的路径,cuda的根目录路径和用户GPU机器的计算能力。

python_exe_path="python"
cuda_root_path="/usr/local/cuda"
gpu_cc="75"

compile.sh 脚本中会下载cutlass,执行CMakeLists.txt脚本,编译生成动态库。

step2.

step1执行后,就可以看到在 build 目录生成了 libCutlassConv2d.so ,并将build目录添加到LD_LIBRARY_PATH中即可使用此库。

step3.

默认情况下,在处理conv2d类算子时,Paddle Inference 会调用cuDNN实现; 基于 cutlass 开发的conv2d类算子能够融合更多的后处理算子,用户可以通过python API exp_enable_use_cutlass() 和 C++ API Exp_EnableUseCutlass()来获得一定的速度和显存收益。