代码移植

[复制链接]
78 6

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目前正在使用沐曦C550跑cuda的代码,但是直接在docker 启动对应的镜像后,运行不了,怎么改代码才能移植成C550能跑呢?我在网上找了很多都没找到,这方面的文本以及介绍都很少,请问有什么资料吗?

精彩评论6

shibozhang  管理员  发表于 2025-3-20 17:09:01 | 显示全部楼层
无法运行的详细报错是什么呢?
 楼主| 我不要你很傻  新手上路  发表于 2025-3-20 17:25:09 | 显示全部楼层
我现在的py代码都是基于CUDA的代码,在3090ti上可以正常运行,但是由于代码涉及到data.cuda(),  torch.cuda.is_available()等。直接在C550上运行就肯定会报错,不知道怎么移植,有技术手册可以学习的嘛?
以下是我的pip list和错误
微信图片_20250320172300.png
微信图片_20250320172410.png
沐曦-张明威  新手上路  发表于 2025-3-20 19:11:24 | 显示全部楼层
本帖最后由 沐曦-张明威 于 2025-3-20 19:25 编辑

"data.cuda(),  torch.cuda.is_available()" 这个用法在c550上没问题的,我们设计上也是尽量兼容cuda-pytorch上的使用方式; data.cuda()在c550上的行为其实类似cuda就是把数据copy到c550上。

这个问题的原因可能是环境问题,可以试试启动容器方法使用 docker run -it --device=/dev/mxcd --device=/dev/dri --group-add video  ......。进入容器后可以使用mx-smi 确认可以找到c550的设备。

可以参考下文档中心的“曦云系列_通用计算GPU_mcPyTorch用户指南_CN_V08.pdf”文档~


 楼主| 我不要你很傻  新手上路  发表于 2025-3-20 20:11:39 | 显示全部楼层
本帖最后由 我不要你很傻 于 2025-3-20 20:13 编辑

非常感谢您及时回复!

这个启动方式确实没考虑过,直接用这个就可以正常启动,程序都不需要更改任何地方就可以运行起来,速度也是嘎嘎快。3090Ti 171s,C550 只要90s,快一倍。

就是不知道基于CUDA (.cu)的第三方算子还能直接编译通过吗?
沐曦-张明威  新手上路  发表于 2025-3-20 23:14:20 | 显示全部楼层
本帖最后由 沐曦-张明威 于 2025-3-21 19:29 编辑
我不要你很傻 发表于 2025-3-20 20:11
非常感谢您及时回复!

这个启动方式确实没考虑过,直接用这个就可以正常启动,程序都不需要更改任何地方就 ...

是指pytorch中使用cpp extension的方式是吗?

可以使用和cuda-pytorch相同的方式运行;不过kernel的代码有两点要注意下 1)沐曦卡现在warpsize是64,这点和cuda不同,例如像__shfl_down之类和warpsize有关的api要注意下 2)另外ptx需要改写成高级语言的形式。

建议先使用torch2.1的版本;当前的torch2.4关于cpp-extension有些小问题,可以稍等几天2.31.0发布以后使用这个版本。
 楼主| 我不要你很傻  新手上路  发表于 2025-3-24 16:37:14 | 显示全部楼层
沐曦-张明威 发表于 2025-3-20 23:14
是指pytorch中使用cpp extension的方式是吗?

可以使用和cuda-pytorch相同的方式运行;不过kernel的代码 ...

实际测试了下,还真的可以。

在装好适配的环境情况下,首先对于纯pytorch代码,基本上不需要更改里面的代码;其次,对于需要make 的三方extension算子,可以直接按照原来方式安装即可。

总体兼容性很强,但是如果是原来cuda的算子,感觉存在调用这类似乎速度会变慢的样子。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

©沐曦 沪ICP备2020031767号-1
快速回复 返回顶部 返回列表