当前位置: 首页 > java >正文

一个简单的torch-cuda demo

写一个简单CUDA demo的尝试1

功能

对于一维tensor a, b,实现实现a[i]+b[i]。

参考: https://zhuanlan.zhihu.com/p/595851188

需要的代码文件

test.py: 测试文件
AddMlp/: 算子仓库

  • add_mlp_cuda.cu: 算子核心操作,包括一个cuda计算kernel和一个launcher来启动cuda kernel的并行计算
  • add_mlp.cpp: laucher的函数声明,对封装.cuda中的算子并为python提供调用的方法接口(如forward函数)
  • setup.py: 封装.cu和.cpp,为python提供调用接口的算子实例/类
  • addMlp.py: 在python端调用C接口并封装、并实现backward方法
  • init.py: addMlp.py的init文件

封装/调用链条

.cu里面的add_mlp_kernel -> .cu里面的add_mlp_kernel -> .cpp 里面的add_mlp_launcher定义及add_mlp_gpu并绑定forward方法->setup.py绑定.cu和.cpp->addMlp.py中AddMLP类调用add_mlp.forward并绑定为add_mlp_op->init.py绑定->test.py调用add_mlp_op

打包与安装

因为cuda cpp的code和python是靠setup.py连接起来的,所以必须要用pip install .安装后才能使用。值得注意的是setup.py里的name只是包名(例如scikit-learn),import的时候是import带有__init__.py的那个folder的名字,比如这里就是from AddMlp import add_mlp_op.

backward

cuda backward的输入是上一步的gradient,这一步的gradient怎么求是要自己推好了写在backward函数里的,比如是常数那就直接返回常数。

代码

https://github.com/JiuTongBro/CudaDemo1

http://www.xdnf.cn/news/14043.html

相关文章:

  • Acrobat 首选项配置:从注册表到锁定机制
  • 【MPC】模型预测控制笔记 (2):约束MPC
  • C语言预处理命令详解
  • 第9章 表达式和运算符 笔记 待完善
  • 如何运营一个专业的体育比分网站
  • 2025年06月13日Github流行趋势
  • 【Photoshop】使用路径和形状制作印章
  • 基于51单片机的电机控制角度proteus仿真
  • 【IEEE/EI/Scopus检索】2025年第五届机器学习与大数据管理国际会议 (MLBDM 2025)
  • Streamlit 笔记
  • Google Drive·实现共享文件本地访问与编辑
  • sdk添加包,更新文件系统--万象奥科RK3506
  • 基于数字孪生的风光储一体化园区智能化管理解决方案
  • C++进阶—C++中的继承
  • 在云算力上使用Nginx对Gradio外链进行加速的方法
  • 趣解TensorFlow之入门篇
  • 家政维修平台实战25:工人接单
  • Could not initialize Logback logging from classpath:logback-spring.xml
  • PostgreSQL作为向量数据库
  • 论索引影响性能的一面④ 索引失踪之谜【上】
  • docker部署DNS服务并带有图形界面管理——筑梦之路
  • 【碎碎念】60秒! 卡牌游戏 60 Seconds! [特殊字符] 桌游版《求生60秒》
  • 人工智能100问☞第47问:为啥AI需要“反向传播”?
  • Spring Bean
  • aardio 继承与多态
  • 智能出入库管理系统:自动化管控平台
  • 我是如何用 Agent 编程的
  • Day01_C数据结构
  • 普通属性 vs ref 包装属性
  • C#迭代器