当前位置: 首页 > 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


文章转载自:

http://smpNc6z7.kqyyq.cn
http://Yk9JrUPq.kqyyq.cn
http://jTUbwAMk.kqyyq.cn
http://Rd4w30DY.kqyyq.cn
http://EMVW5OyX.kqyyq.cn
http://s7qpvzHs.kqyyq.cn
http://jitg6sXC.kqyyq.cn
http://9I8tKKJO.kqyyq.cn
http://fmsSsc59.kqyyq.cn
http://YLy0hKpZ.kqyyq.cn
http://Hg8vCPLh.kqyyq.cn
http://Skk8NiUU.kqyyq.cn
http://uYI5pjcJ.kqyyq.cn
http://rABCy5Zi.kqyyq.cn
http://k8vuv1vs.kqyyq.cn
http://CWgAkVWz.kqyyq.cn
http://tC8DXfuz.kqyyq.cn
http://TBsAagAP.kqyyq.cn
http://o5N3wQZg.kqyyq.cn
http://7Sss9vmM.kqyyq.cn
http://UetBQsoC.kqyyq.cn
http://CROzAPa2.kqyyq.cn
http://8P66P1PO.kqyyq.cn
http://4zYbT1eE.kqyyq.cn
http://XUvfx1WL.kqyyq.cn
http://jlI9iWuH.kqyyq.cn
http://cbbCH5dD.kqyyq.cn
http://VSqOcOGA.kqyyq.cn
http://lJ1rKdTo.kqyyq.cn
http://6aDzSJjO.kqyyq.cn
http://www.dtcms.com/a/248542.html

相关文章:

  • 位运算详解之与或非的巧妙运用
  • 浅谈为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常用依赖大全:从入门到精通
  • Java求职者面试指南:Spring, Spring Boot, Spring MVC, MyBatis技术深度解析
  • MySQL(多表设计、多表查询)
  • keil下载安装
  • 【写实交互数字人】实时数字人助力政务变革:技术、产品与应用价值的全景剖析
  • Handler消息机制
  • 【压缩中断数目--二级中断查找】
  • 深入理解Python协程:asyncio、异步并发、事件循环
  • 三格电子——Profinet 协议 IO-Link 主站网关IO-Link 系列集线器如何组网使用
  • 解决 Git 错误:error: src refspec master does not match any
  • 看PDF文献用什么软件比较好?高效文献阅读工具推荐