熬了几个通宵,我写了份CUDA新手入门代码

在用PyTorch或者TensorFlow搭积木的时候,你是不是也遇到过下面这些情况:

  • 自带的算子及其组合都无法满足你超(bian)常(tai)的计算需求。
  • 自带的算子不可导,需要自己定义反向传播的梯度,例如argmax。
  • 自带的算子太慢了,严重影响了你发paper的速度。

v2-5cc64b0c41165b12008cad451d8c37f1_b.jpg

这时候你就会想,要是能自己实现一个速度又快、又能满足需求的算子就好了。

你想到了CUDA,自己写一个CUDA算子不就完事了嘛!

然后问题又来了,写是写完了,怎么用python代码调用它呢?

还有一个问题,这个算子它没梯度啊,自动求导机制不顶用了!

你去网上各种搜索,方法倒是全有,但是源码都好复杂,你一个新手怎么可能有心思看完那么复杂的教程?

v2-85f2f0aaff022feac97f523c5c3cd6f3_b.jpg

这时候,你突然看到了这篇文章,看完后你惊呼:“怎么会有这么简洁的示例代码,这就是我想要的!”

没错,这就是我熬了好几个通宵,查了无数bug后,写出来的一份示例代码。

话不多说,先上源码好吧:

Neural Network CUDA Example

我给它命名为“Neural Network CUDA Example”,简称“NN CUDA Example”,意思就是神经网络调用CUDA的示例。

v2-0a321972088ea1dfd167901001f381db_b.jpg

那么这玩意到底有啥用呢?目前为止,它可以让你学到下面这些东西:

  • 最简单的CUDA算子的写法。
  • 最简洁的PyTorch和TensorFlow封装CUDA算子的方法。
  • 几种编译CUDA算子的方法。
  • python调用CUDA算子的几种方式。
  • python中统计CUDA算子运行时间的正确方法。
  • PyTorch和TensorFlow自定义算子梯度的方法。

v2-cdaaf91f3f249310d5ace7211602d4d9_b.jpg

你直呼内行,要是早点能看到这篇文章,能多发好几篇论文啊。

看完代码,有些细节你还是懵逼了,这这这都是啥意思啊,为啥这么写啊?

这时候你又看到了几篇教程,哦原来都有讲解,那没事了。

godweiyang:PyTorch自定义CUDA算子教程与运行时间分析 godweiyang:详解PyTorch编译并调用自定义CUDA算子的三种方式 godweiyang:三分钟教你如何PyTorch自定义反向传播

v2-9d89b4beb191d946f68604e60d4dc447_b.jpg

从那以后,你代码能力飞速提升,一连发了好几篇顶会。

然后你顺手一键三连,把这篇文章转给了身边有需要的人,个个都夸你发现了宝藏。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法码上来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值