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

一个简单的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

相关文章:

  • 位运算详解之与或非的巧妙运用
  • 浅谈为windows7平台打包基于pyside6的UI程序
  • 音视频之H.264的句法和语义
  • 自定义线程池 4.0
  • PostgreSQL的扩展moddatetime
  • Objective-c Block 面试题
  • 一键给你的网页增加 ios26 液态玻璃效果
  • 洛谷 蜜蜂路线 高精度
  • NLP学习路线图(四十四):跨语言NLP
  • 蛋白分析工具和数据库
  • Claude Blender
  • springMVC-12 处理json和HttpMessageConverter<T>
  • 《第二章-内功筑基》 C++修炼生涯笔记(基础篇)数据类型与运算符
  • DAY 53 对抗生成网络
  • 每日算法刷题Day30 6.13:leetcode二分答案2道题,用时1h10min
  • 玩转计算机视觉——按照配置部署paddleOCR(英伟达环境与昇腾300IDUO环境)
  • java爬虫框架,简单高效,易用,附带可运行案例
  • 基于 Spring Cloud Gateway + Sentinel 实现高并发限流保护机制
  • 流数据机器学习框架 CapyMOA
  • Spring Boot常用依赖大全:从入门到精通
  • 做地图的网站/网上营销培训课程
  • 红色色系网站/百度投诉中心入口
  • 网站学做糕点的课程/搜索引擎有哪些分类
  • 江苏宜安建设有限公司网站/搜索引擎优化的步骤
  • 建建建设网站/搜索引擎营销的优势和劣势
  • 做网站模板在哪儿找/小程序推广方案