host memory
一般DRAM,就是内存条
SSD
是固态硬盘
大容量存储
最老的时候,用机械硬盘,速度不高,传输路径是机械硬盘 ─── SATA线 ─── SATA Controller ─── CPU,后来SSD速度上去了,SATA不够了,所以开发了NVMe传输协议,传输路径是NVMe SSD ── PCIe 通道 ── CPU
GPU一般不能直接访问SSD(因为GPU没有NVM...
CPU 缓存的一点背景知识现代 CPU 访问内存不是按“字节”访问,而是按 cache line(缓存行) 为最小单位加载的。典型的 cache line 大小为 64 字节。
当一个线程写入某个地址时,CPU 会把该地址所在的整条 cache line 标记为“已修改 (dirty)”,并通过硬件的 cache coherence 协议(MESI)去通知其它 CPU 核心“我改过这个 ca...
PCI express的物理地址空间
* 在 PCI Express 的系统架构中,存在一个统一的物理地址空间。
* 网卡看到的0x1111和GPU看到的0x1111是一样的
PCI express BAR
相当于每个pcie设备有自己的办公室编号范围(BAR空间所规划的范围)12345678910111213网卡想读GPU显存中偏移500处的数据↓网卡知道GPU的BAR2窗口在物理地址1...
问题起因
事情是这样的,我之前用linux机器要么只在root权限下用,要么只在普通权限下用
这次先在普通权限下用,然后我要访问~/perf/perftest,一切OK
但是切换到root权限(sudo su)之后就没有这个文件夹了
原因分析
核心是环境变量差异
普通用户:echo $HOME
输出:/home/your_username
...
前言
简单分析一下deepep的LL kernel,即用于推理的decode阶段的通信kernel。代码就不在这看了,主要是分析一下其对于双microbatch的支持。
之前一直对双buffer的使用有些误区,始终觉得会把干净数据弄脏,现在仔细想起来并不会这样。
图片解释
我们看上面一张图片,要用两个stream,分别负责一个microbatch,主要原因是通信时间是显式漏在外面的
而...
写在前面
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核心规则
写操作可乱序:设备可优...