欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 如何学习cuda编程?

如何学习cuda编程?

2025/5/2 6:36:55 来源:https://blog.csdn.net/luoganttcc/article/details/143252004  浏览:    关键词:如何学习cuda编程?

第一本cuda教材:

配套网课:

记得做网课作业。

然后就靠项目上手了。

我当时实习时候的项目是自己手撸了一遍caffe, 写了个内部的inference engine。顺带着学了很多 cuda 的实践。我觉得是个好项目,自己学了很多,但是看你自己兴趣/时间了。

==== 稍微更新下分割线

更新下上手之后对我帮助比较大的一些资料,这个时候对计算机底层不是很了解,做的东西还是浮于算法表面。

大致的知道要coalesced access,用vectorized datatype,以及大致的知道 atomics 慢,要避免 bank conflict, 但不是很懂architecture。

  1. 矩阵转置优化:

2. Reduction:

3. 图像上的连通区域分析 :

4. Summed area table (当时读的代码找不到了…让我到时候再找找)

上完班再来更一下==

我再上面这个阶段对于cuda的理解比较似是而非。很多时候知其然不知其所以然。

接下来对gpu/cuda 的理解从算法表面深入到体系结构了。

这个时候要祭出两本书,熟读后登堂入室。

  1. Computer architecture a quantitative approach https://www.elsevier.com/books/computer-architecture/hennessy/978-0-12-811905-1Computer ArchitectureComputer Architecture
  2. Parallel and High Performance Computing

以及microbenchmarking 里我一直会去读一下的报告

3. Dissecting the NVIDIA Volta GPU Architecture via Microbenchmarking


以上是我自己的学习路径。自己是数学系出身的所以很多东西都是在工作里慢慢才学起来。

我觉得计算机专业出身的话,可能学习的路径是反过来的。即体系结构出发,然后用cuda以及算法包装来达到目的。

我的领导就是我见过的最纯粹的体系结构派,碰到问题不是先写代码,而是先建一个excel表格来估算我们最好/最差的情况预期能达到怎样的效率。然后通过调整代码,调整算法,甚至调整编程语言(直接写ptx )来解决问题。

比如这个回答里的一篇文献,简单的矩阵转秩。里面作者的思路就是:转秩我们只会touch所有data 一次,那在理想情况下应该是和memcpy的效率一样。于是里面就通过各种技巧来逼近memcpy。

这种从体系结构 指导算法设计 的思路,我现在还在认真学习。

希望这篇回答能对大家有所帮助。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词