NVSHMEM 通过将多张 GPU 的部分显存组织为对称堆,使每个 GPU 拥有大小一致的地址空间。程序可利用统一偏移量直接定位远端缓冲区。在此架构下,源端可发起 put 操作直接将数据写入远端 GPU 内存,无需目标端 CPU 参与或其 CUDA 流预先执行接收指令。网卡(NIC)从源显存读取数据,经网络写入目标端已登记的内存窗口,待数据到位后通过 signal 通知目标端 kernel 读取。此类单边通信减少了双向同步等待,但资源分配与执行顺序仍需主机端预先规划。
内核自治:GPU Kernel 自主发起网络操作
NCCL Device API 进一步下放控制权。主机端负责创建设备通信器、登记内存窗口并检查 LSA(Load-Store Access)与 GIN(GPU-Initiated Networking)能力;GPU kernel 获取句柄后,即可知晓参与者、缓冲区位置及线程协作关系。LSA 允许一个 CTA(协作线程数组)直接获取对端窗口的可访问指针,通过常规 load/store 指令读取同组 GPU 数据,省去显式的 send/receive 轮次。GIN 则将网络操作完全交由 CUDA 线程发起。线程将源/目标地址、字节数及远端动作封装为操作描述符,提交至预配置的 GIN 上下文,由网络后端和 NIC 完成数据投递。目标端仅在收到 signal 后消费数据,而源端的 flush 操作仅保证本地缓冲区可复用,不代表远端已完成写入。