Web 平台使用案例#
本用例介绍如何将 KernelGen 生成的 Kernel、CUDA版基准实现、正确性测例 和 加速比测例 代码贡献到 FlagGems GitHub。
流程如下:
生成 Kernel、CUDA版基准实现、正确性测例 和 加速比测例 代码。更多信息请参阅 通过您的算子定义生成Kernel。
将这些代码分别保存为文件。
转换这些文件。
将转换后的文件贡献到 FlagGems GitHub。
备注
以 KernelGen 中预定义的 ReLU 用例为例。在本用例中,我们假设 ReLU 算子是一个你刚刚通过 KernelGen 生成但尚未贡献到 FlagGems GitHub 的新算子。
转换从 KernelGen 生成的文件#
转换从 KernelGen 生成的文件:
将四个文件重命名如下:
relu_triton.py: 此文件包含 Kernel 代码。relu_baseline.py: 此文件包含 CUDA 版基准实现 代码。test_relu_accuracy.py: 此文件包含 正确性测例 代码。test_relu_performance.py: 此文件包含 加速比测例 代码。
克隆 FlagGems GitHub 仓库。
git clone https://github.com/flagos-ai/FlagGems
克隆 KernelGen GitHub 仓库。
git clone https://github.com/flagos-ai/KernelGen
导航到 KernelGen 项目根目录的
tools目录下。cd /your/project/KernelGen/tools
运行以下脚本,将文件转换为两个与 FlagGems 兼容的文件。
python kernelgen_to_flaggems.py \ ./tests \ ./output \ relu
转换后的文件如下:
./output/relu.py:包含 Kernel 代码。此代码与 KernelGen 中的相同。./output/relu_test.py: 包含转换后的正确性测试和加速比测试代码。
在 FlagGems GitHub 上创建拉取请求#
您现在可以在 FlagGems GitHub 上创建拉取请求。
确保两个转换后的文件被正确放置,如下所示:
将
relu.py文件放置在:src/flag_gems/experimental_ops将
relu_test.py文件放置在:src/flag_gems/experimental_ops/exp_tests