从零开始的DFT工程师! week7
欢迎来到从零开始的DFT工程师第七期。
本来第三周应该对工具的使用进行熟悉的,但是由于滚arch的时候出一点问题,导致vcs运行时出现linux kernel不支持的问题,这个我看了一下,似乎不是kernel真的不支持,好像是由于哪里的lib改动或者是环境改变导致的。这个问题报错和实际错误好像不符,比较难修,如果修不了就之后改到虚拟机上进行了,这一期就把特别篇提前放到今天了。
在这一期中我们将会完成CUDA工具+Nsight的安装,然后进行简单的CUDA编程和性能测试。
install CUDA
关于nvida其实很早之前就安装过了,详见此处,在这里面我当时安装了nvidia,nvidia-utils,如果是要使用cuda的话就需要多下一个cuda。这里要注意的是,nvidia-dkms是一个会在内核更新后根据内核重新编译个版本(Dynamic Kernel Module Support),他和nvidia是冲突的(起码在arch);还有如果使用lts内核,应该下载nvidia-lts.
install Nsight tools
Nsight是一套调试分析的工具,我们一般下载nsys和ncu就可以了。在arch上我们可以
1 |
|
cuda program
关于cuda编程的相关知识和语法我们可以找到很多tutorial,我这里给出几个我参考的:
- https://cuda-tutorial.readthedocs.io/en/latest/tutorials/tutorial01/
- https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html
- https://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html
- https://docs.nvidia.com/cuda/index.html
- https://github.com/xlite-dev/LeetCUDA?tab=readme-ov-file#HGEMM-bench
然后我在这里会提取一些感觉会比较常用的东西作为总结。
在cuda编程中,一般把cpu及其相关的东西叫成host,gpu则是device,gpu是并行进行计算的。
一般我们需要完成:给host分配内存初始化数据->给devices分配内存->把输入的数据搬运到device->完成运行->结果数据搬回host.
- device 内存管理
1 |
|
- 数据传输
1 |
|
- kernel 的调用
1 |
|
- 性能分析
可以使用nvidia自带的工具进行性能分析:
1 |
|
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.




