Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
fastpt
Commits
bf2ac95d
Commit
bf2ac95d
authored
May 23, 2025
by
fengzch-das
Browse files
update:readme
parent
69e27059
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
72 additions
and
40 deletions
+72
-40
README.md
README.md
+72
-40
No files found.
README.md
View file @
bf2ac95d
# 介绍
#
1
介绍
FastPT是基于python的应用编译工具,借助FastPT,开发人员可以在HCU上开发、部署基于pytorch的内含CUDA代码的应用。可以实现CUDA源码不转码直接编译,或源码转换到HIP格式代码后,通过hipcc适配编译。推荐优先使用不转码编译方式。
FastPT版本与torch版本对应关系为
FastPT版本与torch版本对应关系为
:
| | fastpt版本 | torch版本 | DTK版本 |
| - | -------- | ------- | ------------ |
| 1 | 2.0.1+das.dtk2504 | v2.4.1 | dtk2504|
|
1
| 2.1.0+das.dtk2504 | v2.5.1 | dtk2504|
|
2
| 2.1.0+das.dtk2504 | v2.5.1 | dtk2504|
注:FastPT工具目前尚不支持cutlass类似三方库和内联汇编指令
注:
1.
FastPT工具目前尚不支持cutlass类似三方库和内联汇编指令
2.
编译有依赖库需求且依赖库涉及到GPU加速实现的,可以在DAS上以及GPUFusion(一般为$ROCM_PATH/cuda/)环境下查询是否有已适配或支持的库。
3.
此工具适合生态组件应用依赖torch的且有GPU加速代码实现的场景下使用,如通过CUDAExtension构建编译或编译依赖libtorch等。
# 2 安装
# 安装
工具安装使用pip方式,安装前请确保环境中已安装了torch,并从光源社区-DAS中下载此工具的安装包。注意与python版本匹配。
工具安装使用pip方式,安装前请确保环境中已安装了torch,并从光源社区-DAS中下载此工具的安装包。注意与python、torch版本匹配。Torch需要使用HCU下支持的版本。
```
cd path/to/whl
pip install fastpt*.whl --no-deps
...
...
@@ -20,28 +22,37 @@ pip install fastpt*.whl --no-deps
python -c “import fastpt;print(fastpt.__version__)”
```
# 使用
关于fastpt的初始化使用可使用source /usr/local/bin /fastpt -H 来查看如何设置初始化的帮助信息
## 不转码编译
Fastpt-2.0之后支持不转码编译实现,即直接使用CUDA源码编译。安装FastPT工具的whl包后,通过以下指令初始化编译环境;然后按照官方指导编译方法处理即可。若组件本身的setup代码中设置了是否使用CUDA拓展的接口需要用户打开该设置后,才可进行编译适配。
# 3 使用
工具安装后,构建编译或使用时。通过source /usr/local/bin/fastpt -X 进行环境设置。X为模式设置参数,具体参数说明如下:
|使用场景 |指令 | 示例 | 说明 |
| - | ----------- | ------------- | ------------- |
|不转码编译 |-C 或 -c | source /usr/local/bin/fastpt -C |用于工程不转码编译处理的环境设置,由于在编译模式下需要设置部分环境变量,所以在打开新的终端进行编译处理时,需要执行此命令。 |
|不转码编译 |-E 或 -e | source /usr/local/bin/fastpt -E |不转码编译的程序执行时环境设置。用于工程在不转码编译后,进行使用时的环境设置。工程迁移到新环境后,安装FastPT后,执行此命令即可。此命令不需要重复执行,只需保证当前系统下执行过即可。 |
|转码编译 |-T 或 -t | source /usr/local/bin/fastpt -T |转码编译处理。用于通过转码方式,将CUDA代码转换到HIP代码后的编译实现。只用于组件或程序编译处理,组件执行时不需要额外配置环境。|
|帮助 |-H 或 -h|source /usr/local/bin/fastpt -H | 具体指令说明,查询使用方法。|
## 3.1 不转码编译
### 3.1.1 使用方法
编译模式:Fastpt-2.0之后支持不转码编译实现,即直接使用CUDA源码编译。安装FastPT工具的whl包,执行:
```
source /usr/local/bin/fastpt -C
```
编译好组件安装后,使用组件时通过以下指令初始化使用环境
初始化FastPT编译环境,然后按照组件或应用的官方指导编译方法处理即可。
执行模式:编译好组件通过whl包在有FastPT的新环境下使用时,需要确保环境下已执行过执行模式的初始化操作,否则可能会报错找不到CUDA相关的动态库。执行命令:
```
source /usr/local/bin/fastpt -E
```
## 转码编译
FastPT提供了HCU下,转码到HIP格式,通过hipcc进行编译的方法,实现基于torch的应用中CUDA代码移植到DCU平台,提高应用程序移植工作的效率。编译时,转码一般时自动实现的。另外提供了自定义接口映射用来补充代码映射关系,提供了CMake编译时的转码方法。
### 1 使用方法
此方法适用于通过setup.py使用CUDAExtension、CppExtension进行组件构建编译的场景。使用时通过以下指令初始化不转码适配环境,执行参考组件官方的构建文档,进行编译处理,但要注意不转码使用事项。
即可。
## 3.2 转码编译
FastPT提供了HCU下,转码到HIP格式,通过hipcc进行编译的方法,实现基于torch的应用中CUDA代码移植到HCU平台,工具接口包括CUDAExtension、CppExtension、hipify转码接口.编译时,转码一般是自动实现的。另外提供了自定义接口映射用来补充代码映射关系;提供了保持源码文件夹下文件相对路径的转码方法。
### 3.2.1 使用方法
此方法适用于通过setup.py使用CUDAExtension、CppExtension进行组件构建编译的场景。使用时,执行
```
source /usr/local/bin/fastpt -T
```
### 2 自定义接口映射
###
3.2.
2 自定义接口映射
工具中可能存在未涉及到或用户需要的一些转换匹配,可以通过json文件的方式给到工具,在不需要额外修改代码的情况下,实现自定义代码匹配转换。可以通过以下方法补充代码映射。用户需要在CUDAExtension或hipify_python接口调用代码同级目录下,通常为setup.py文件所在目录,创建 custom_hipify_mappings.json文件。json文件内容格式如下,此示例中,在将CUDA代码转到HIP代码时,会将源码中的”src mapping 1”替换为”dst mapping 1”,将"src mapping 2" 替换成 "dst mapping 2"。自定义映射转换优先级高于内置的转换。
```
...
...
@@ -55,7 +66,7 @@ source /usr/local/bin/fastpt -T
```
### 3 转码时保持源码相对路径不变
### 3
.2.3
转码时保持源码相对路径不变
可以通过hipify接口实现保留源代码路径的转码,转码会新建一个xxx_dtk的代码文件夹,内部文件路径结构与源文件夹下一致,”.cu”代码文件扩展名会转成”.hip”,如xxx.cu转码后为xxx.hip。此方法一般在CMake或Make等需要保持原代码路径的工具编译代码时使用,需要注意CMakeLists.txt中的代码需要手动修改,暂时不支持CMake语法的转码,如”.cu”后缀需要改为”.hip”、编译器nvcc需要改为hipcc等,此适配场景下建议使用3.1章节中的不转码编译处理。使用时,需要在要转码的文件夹的同级目录中实现以下脚本fastptcode.py:
```
import os
...
...
@@ -78,7 +89,7 @@ res = hipify(
|----fastptcode.py
```
# 注意事项
#
4
注意事项
1 不转码编译注意事项
```
(1)此工具适用于依赖torch的生态组件使用,应用中内含CUDA C/C++代码的工程在HCU环境下的开发、移植。当前torch版本要求最低torch2.4.1;
...
...
@@ -99,25 +110,46 @@ res = hipify(
]
+ generator_flag,
},
(5)编译模式(-C)与执行模式(-E)下,torch.version.cuda与torch.version.hip会分别被设置,少部分应用在执行时会依赖这两个变量,需要根据具体情况在应用端调整上述两个变量。
```
2 转码编译注意事项
```
(1)此工具适用于依赖torch的生态组件或应用,内含CUDA C/C++代码的工程在HCU环境下的开发、移植。当前torch版本要求torch2.4.1;
(2)暂不支持CMake、make等代码处理,可通过上面4.2中的方法,通过python脚本调用hipify接口,将CUDA代码转换成HIP代码,CMake文件需要用户自行处理,CXX指定为hipcc。为了便于适配使用走CMake编译的组件建议直接使用不转码的方式,走cuda源码编译适配;
(3)工程中存在三方依赖库时,三方库可能不被处理,此时需要开发者对三方依赖库自行处理;
(4)转码编译时,不需要执行 source /opt/dtk/cuda/env.sh;
(5)适配组件的setup.py 中可能会有CUDA环境检查来决定是否执行CUDA相关代码的编译,可按情况进行处理。
```
# 已支持组件列表
| | 组件名称 | 版本 | 功能支持情况 | DAS仓库 | 备注说明 |
| - | -------- | ------- | ------------ | ------- | ------------ |
| 1 | vision | v0.19.1 | | | |
| 2 | audio | v2.4.1 | |https://developer.sourcefind.cn/codes/OpenDAS/torchaudio| 部分代码修改 |
| 3 | fastmoe | v1.1.0 | |github 官方代码| |
| 4 | lietorch | v0.2 | |https://developer.sourcefind.cn/codes/OpenDAS/lietorch|部分代码修改 |
| 5 | maskrcnn | | |https://developer.sourcefind.cn/codes/OpenDAS/maskrcnn|头文件修改 |
(1)此工具适用于依赖torch的生态组件或应用,内含CUDA C/C++代码的工程在HCU环境下的开发、移植,注意FastPT版本与torch版本对应;
(2)暂不支持CMake、make等代码语义处理。代码转换可通过上面3.2.3中的示例,通过执行python的转码脚本代码,将CUDA代码转换成HIP代码,CMake文件需要用户自行处理。为了便于适配建议通过CMake编译的组件使用3.1章节的不转码的方式,通过CUDA源码编译的方式适配;
(3)工程中存在三方依赖库时,三方库可能存在不被处理的情况,此时需要对三方依赖库进行单独处理;
(4)适配组件的setup.py 中可能会有CUDA环境检查来决定是否执行CUDA相关代码的编译,例如CUDA_PATH或torch.version.cuda的检查,可按情况进行处理;
(5)当不希望引入ATen/dtk_macros.h这个头文件时,可以通过以方式屏蔽此头文件的引入:export FASTPT_DTK_MACROS=1。
```
# 5 已支持组件列表
| | 组件名称 |版本 |功能支持情况 | DAS仓库 | 备注说明 |
| - | -------- |------- |------------| ------- | ------------ |
| 1 | vision |v0.19.1 | |http://developer.sourcefind.cn/codes/OpenDAS/vision.git | |
| 2 | audio |v2.4.1 | |https://developer.sourcefind.cn/codes/OpenDAS/torchaudio|部分代码修改 |
| 3 | fastmoe |v1.1.0 | |github 官方代码| |
| 4 | lietorch |v0.2 | |https://developer.sourcefind.cn/codes/OpenDAS/lietorch|部分代码修改 |
| 5 | maskrcnn | | |https://developer.sourcefind.cn/codes/OpenDAS/maskrcnn|头文件修改 |
| 6 | mmdetection3d |v1.4.0 | |http://developer.sourcefind.cn/codes/OpenDAS/mmdetection3d.git|部分代码修改|
| 7 | pytorch_sparse |0.6.16 | |http://developer.sourcefind.cn/codes/OpenDAS/torch-sparce.git| |
| 8 | OpenPCDet |master | |http://developer.sourcefind.cn/codes/OpenDAS/openpcdet.git| |
| 9 | SparseConvNet |main | |http://developer.sourcefind.cn/codes/OpenDAS/sparseconvnet.git| |
| 10 | mmcv |v2.2.0 | |http://developer.sourcefind.cn/codes/OpenDAS/mmcv.git|部分代码修改 |
| 11 | pytorch_cluster |1.6.3 | |http://developer.sourcefind.cn/codes/OpenDAS/torch-scatter.git| |
| 12 | pytorch_spline_conv|1.2.2 | |http://developer.sourcefind.cn/codes/OpenDAS/torch-spline-conv.git| |
| 13 | detectron2 |v0.6 | |http://developer.sourcefind.cn/codes/OpenDAS/detectron2.git| |
| 14 | fairscale |v0.4.9 | |http://developer.sourcefind.cn/codes/OpenDAS/fairscale.git| |
| 15 | fairseq |v0.9.0 | |http://developer.sourcefind.cn/codes/OpenDAS/fairseq.git| |
| 16 | metaseq |main | |http://developer.sourcefind.cn/codes/OpenDAS/metaseq.git| |
| 18 | pydensecrf |master | |http://developer.sourcefind.cn/codes/OpenDAS/pydensecrf.git| |
| 19 | d2go |main | |http://developer.sourcefind.cn/codes/OpenDAS/d2go.git| |
| 20 | opencv-python |4.8.0 | |https://developer.sourcefind.cn/codes/OpenDAS/opencv-python| |
| 21 | dlib |v19.24 | |http://developer.sourcefind.cn/codes/OpenDAS/dlib.git| |
| 22 | causal_conv1d |v1.5.0.post8| |http://developer.sourcefind.cn/codes/OpenDAS/causal-conv1d.git| |
| 23 | pytorch3d |V0.7.8 | |http://developer.sourcefind.cn/codes/OpenDAS/pytorch3d.git| |
| 24 | cubvh |main | |http://developer.sourcefind.cn/codes/OpenDAS/cubvh.git| |
| 25 | torchnai | | | | |
| 26 | uni-core | | | | |
| 27 | apex | | | | |
# 6 附录
fastpt whl包链接地址:https://download.sourcefind.cn:65024/4/main/fastpt
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment