【乱写的】收集一些和GPU以及NCCL相关的定义(持续更新)

RDMA

Remote Direct Memory Access (RDMA) 是一种超高速的网络内存访问技术,它允许程序以极快速度访问远程计算节点的内存。速度快的原因如下图所示,一次网络访问,不需要经过操作系统的内核(Sockets、TCP/IP等),这些操作系统内核操作都会耗费CPU时间。RDMA直接越过了这些操作系统内核开销,直接访问到网卡(Network Interface Card,NIC)。一些地方又称之为HCA(Host Channel Adapter)。

RDMA本身指的是一种技术,具体协议层面,包含Infiniband(IB),RDMA over Converged Ethernet(RoCE)和internet Wide Area RDMA Protocol(iWARP)。三种协议都符合RDMA标准,使用相同的上层接口,在不同层次上有一些差别。上述几种协议都需要专门的硬件(网卡)支持。

NUMA

NUMA(Non Uniform Memory Access)技术可以使众多服务器像单一系统那样运转,同时保留小系统便于编程和管理的优点。基于电子商务应用对内存访问提出的更高的要求,NUMA也向复杂的结构设计提出了挑战。

统一内存访问(NUMA)是一种用于多处理器的电脑内存体设计,内存访问时间取决于处理器的内存位置。 在NUMA下,处理器访问它自己的本地存储器速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。

CollNet

CollNet其实不是一种算法,而是一种自定义的网络通信方式,需要加载额外的插件来使用。说下基于SHArP协议的,具体加载方法这个链接里有写。

SHArP+NCCLdocs.nvidia.com/networking/display/SHARPv261/Using+NVIDIA+SHARP+with+NVIDIA+NCCL

目前NVIDIA官方的CollNet实现应该是只有基于SHArP的这一种,需要搭配Infiniband以及Infiniband交换机一起食用(yummy),好一个NVIDIA全家桶。怕大家没接触过SHArP,先给大家扫个盲(因为我就没接触过,研究HPC的同学倒是熟得很)。

1. 什么是SHArP

这个是介绍SHArP的论文:SHArP 论文,其实没必要细看。简单来说,SHArP是一个软硬结合的通信协议,实现在了NVIDIA Quantum HDR Switch的ASIC里。它可以把从各个node收到的数据进行求和,并发送回去。再说的通俗一点,通过使用SHArP,我们把求和(聚合/Reduce,随便怎么叫)的操作交由交换机完成了。这种做法,业界叫做In-network Computing(在网计算)。用术语展开来讲,就是将计算卸载到网络中进行。

更多相关的知识可以看这个英伟达的汇报

NVIDIA GTC SHArPwww.nvidia.com/en-us/on-demand/session/gtcspring21-s32067/

2. 为什么要SHArP?

通过把计算卸载到网络里,每个node(图片里为host)只需要收发一倍的数据量就可以完成AllReduce了。相比Tree和Ring算法,收发的数据量直接就减半了。这使得SHArP的潜力比Tree和Ring高了一倍。而且SHArP因为把计算卸载给交换机去做了,因此小数据的latency也会减少很多。

Stream(流)

- 在GPU编程中,"stream" 通常是指一系列的GPU命令序列,它们按照提交的顺序在GPU上执行。每个流都是独立的,可以在同一时间内执行多个流,从而实现并发性。这样的并发性可以提高GPU的利用率,尤其在处理大规模并行任务时。
- 在CUDA(Compute Unified Device Architecture)编程模型中,流由 `cudaStream_t` 类型表示。通过将GPU任务提交到不同的流上,可以在GPU上并发执行这些任务。例如,一个应用程序可以使用一个流来处理计算任务,另一个流来处理数据传输任务,从而提高整体性能。

CE(上下文引擎)

- 上下文引擎(Context Engine)是GPU驱动程序中的组件之一,它负责管理GPU上下文的创建、销毁和切换。上下文是GPU资源的容器,包括内存、寄存器状态、命令队列等。上下文引擎的主要任务是协调和调度不同上下文之间的切换,以便在GPU上实现多任务并发执行。
- 在NVIDIA GPU的驱动程序中,上下文引擎的概念可能与GPU上的任务调度和上下文切换有关。上下文引擎的性能和效率对于GPU的整体性能至关重要,特别是在多任务环境下。

PDS

相关推荐

  1. 一些不错技术网站(持续更新

    2024-01-10 13:22:03       36 阅读
  2. 微信小程序canvas开发一些总结-持续更新

    2024-01-10 13:22:03       52 阅读
  3. Redis应用场景以及常见问题(持续更新

    2024-01-10 13:22:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-10 13:22:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-10 13:22:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-10 13:22:03       82 阅读
  4. Python语言-面向对象

    2024-01-10 13:22:03       91 阅读

热门阅读

  1. 编程语言的未来

    2024-01-10 13:22:03       60 阅读
  2. Orchestrator源码解读3-故障处理阶段

    2024-01-10 13:22:03       64 阅读
  3. 数据传输:连接数字世界的纽带

    2024-01-10 13:22:03       48 阅读
  4. go study oneday

    2024-01-10 13:22:03       58 阅读
  5. ubuntu查看内存使用情况

    2024-01-10 13:22:03       56 阅读