写在前面
NSDI26fall,不是一作,大概率陪跑
感谢鹅厂提供机器和资源,感谢我的超级赛亚人企业mentor,感谢我们的一作小老板,亲力亲为,一作值得,并且我确实学到了不少经验,一开始怨气为主,后面只想写完然后中稿
总结了一些论文写作过程中的小tip
画图
画图讲究最多,计算机顶会的图重点就是紧凑,少空白多信息
latex图片插入语法普通一张图插入123456\begin{...
使用场景
python里面调用C++代码
举例说明:小demo拆解
链接:datacopy_nvshmem_pybind
目标
因为跨服务器的传输,不用MPI的话就得用pytorch提供的分布式通信接口
pytorch的分布式通信接口是python的
所以必须得用python调用底层编写的C++代码
这个项目还有一个麻烦的事情是必须要使用到nvshmem库,一些链接过程也写在这里
代码...
前言
deepep当中,RDMA到nvlink域的转发之前一直以为是先从RDMA recv buffer到nvlink的本地buffer,然后再从nvlink本地buffer到其他GPU的nvlink buffer
实际上,deepep是直接从RDMA recv buffer到其他GPU的nvlink buffer
这就涉及到cuda ipc共享内存的概念
相关代码123456789101...
软链接
软链接(Symbolic Link),也称为符号链接,是一种特殊类型的文件,它包含对另一个文件或目录的路径引用。软链接类似于Windows系统中的快捷方式。软链接可以跨文件系统创建,并且可以指向目录。
一个物理文件实际位置路径为addr,软链接就是一个文件,内容为addr(路径),文件名为linkname。
创建软链接的命令为ln -s addr linkname,删除软链接的命令为...
PCIE strong ordering核心规则
写后写(Write-Write):两个写操作按提交顺序完成。
读后读(Read-Read):读操作按序执行。
写后读(Write-Read):读操作必须等待前面的写操作完成。
读后写(Read-Write):写操作等待前面的读操作完成。
PCIE relaxed ordering核心规则
写操作可乱序:设备可优...
stash功能
stash功能可以将当前工作区的修改保存起来,方便切换分支或进行其他操作后再恢复。
stash的内容会被保存在一个栈中,可以随时查看和恢复。
使用方法
打开vscode的git界面拓展功能界面,按上面的加号即可stash
在切换分支的时候,会自动弹出提示框让我们输入stash信息
然后可以切换到别的分支
切换回原分支后,如果想恢复之前的stash,进入git界面拓展功能界面...
三种函数执行环境标识符
CUDA内核函数的执行环境有三种标识符:global, device, host
host
host在主机(CPU)上执行的普通函数
可以直接省略不写,不写就默认是host
global
global在设备(GPU)上执行,也就是我们常说的GPU内核函数
可以有参数,不能有返回值
CPU通过<<<>>>调用,可以由__host_...
写在前面
本来以为我已经懂了,但是在实践中发现,自己写的代码中同步时延占据了非常大的部分,所以打算再好好整理一下内存模型
参考了CUDA编程基础以及该作者的其他文章
GPU结构
每个线程在SP(Streaming Processor)中执行,每个SP有自己的寄存器和local memory
由多个SP和一块共享内存(Shared Memory)组成一个SM(Streaming Multi...
CUDA包含的核心组件
CUDA C/C++语言拓展(现在最新的还支持python了,nv真的强)
CUDA工具链:nvcc,nsight等
CUDA driver API:底层驱动接口,直接操作GPU硬件
CUDA runtime
是CUDA架构中的软件中间层,是CUDA driver API的封装
比如提供了cudaMalloc/cudaMemcpy等函数
说白了就...
环境说明
Debian
单机两卡两个NUMA节点
我大部分使用的是源码编译,一开始没有给我分配sudo权限,后来必须要安装一个驱动,因此后面具有了sudo权限
依赖项:GDRCopy
从源码安装12345`sudo apt install nvidia-dkms-<your-nvidia-driver-version>`make prefix=<install-to-th...