CUDA实践指南(二十二)

简介:

并发内核执行:
正如“计算异步和重叠传输”中所述,CUDA流可用于将内核执行与数据传输重叠。 在能够并发执行内核的设备上,还可以使用流同时执行多个内核,以更充分地利用设备的多处理器。 设备是否具有此功能由cudaDeviceProp结构的并发内核字段指示(或在deviceQuery CUDA示例的输出中列出)。 非默认流(流0以外的流)对于并发执行是必需的,因为使用默认流的内核调用只有在设备上的所有前面的调用(任何流)完成之后才开始,并且设备上没有任何操作 流)开始直到完成。
以下示例说明了基本技巧。 因为kernel1和kernel2在不同的非默认流中执行,所以有能力的设备可以同时执行内核。

cudaStreamCreate(&stream1);
cudaStreamCreate(&stream2);
kernel1<<<grid, block, 0, stream1>>>(data_1);
kernel2<<<grid, block, 0, stream2>>>(data_2);

多个上下文:
CUDA工作发生在称为上下文的特定GPU的进程空间内。 上下文封装了该GPU的内核启动和内存分配以及支持页表等内容。 上下文在CUDA Driver API中是明确的,但在CUDA Runtime API中完全隐含,它自动创建和管理上下文。
借助CUDA驱动程序API,CUDA应用程序进程可能会为给定的GPU创建多个上下文。 如果多个CUDA应用程序进程同时访问同一GPU,则这几乎总是暗含多个上下文,因为上下文与特定主机进程绑定,除非正在使用CUDA多进程服务。
虽然可以在给定的GPU上同时分配多个上下文(及其相关资源,如全局内存分配),但只有其中一个上下文可以在该GPU上的任何给定时刻执行工作; 共享相同GPU的上下文是时间片的。 创建额外的上下文会导致每上下文数据的内存开销和上下文切换的时间开销。 此外,当需要并行执行多个上下文时,对上下文切换的需求可以降低利用率。
因此,最好在相同的CUDA应用程序中避免每个GPU的多个上下文。 为此,CUDA Driver API提供了访问和管理每个GPU上称为主要上下文的特殊上下文的方法。 这些是CUDA运行时隐式使用的相同上下文,当没有线程的当前上下文时。

// When initializing the program/library
CUcontext ctx;
cuDevicePrimaryCtxRetain(&ctx, dev);
// When the program/library launches work
cuCtxPushCurrent(ctx);
kernel<<<...>>>(...);
cuCtxPopCurrent(&ctx);
// When the program/library is finished with the context
cuDevicePrimaryCtxRelease(dev);

NVIDIA®(英伟达™)SMI可用于配置独立处理模式的GPU,从而将每个GPU的上下文数量限制为一个。 在创建过程中,此上下文可以是任意多个线程,如果在设备上已经存在使用CUDA驱动程序API创建的非主要上下文,cuDevicePrimaryCtxRetain将会失败。
隐藏寄存器依赖关系:
中等优先级:为了隐藏由寄存器依赖性引起的延迟,为每个多处理器维护足够数量的活动线程(即足够的占用率)。
当指令使用存储在指令写入的寄存器中的结果之前,会产生寄存器相关性。 当前支持CUDA的GPU的延迟时间大约为24个周期,因此线程在使用算术结果之前必须等待24个周期。 但是,这种延迟可以通过执行其他warp中的线程完全隐藏。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
并行计算 异构计算
CUDA stream利用CUDA流重叠计
CUDA stream利用CUDA流重叠计
738 0
CUDA stream利用CUDA流重叠计
|
人工智能 缓存 并行计算
技术改变AI发展:Ada Lovelace架构解读及RTX 4090性能测试分析(系列三)
简介:随着人工智能(AI)的迅速发展,越来越多的应用需要巨大的GPU计算资源。Ada lovelace(后面简称Ada)是NVIDIA最新的图形处理器架构,随2022年9月20日发布的RTX 4090一起公布。
141222 62
技术改变AI发展:Ada Lovelace架构解读及RTX 4090性能测试分析(系列三)
|
缓存 运维 Kubernetes
NVIDIA GPU Operator分析一:NVIDIA驱动安装
背景我们知道,如果在Kubernetes中支持GPU设备调度,需要做如下的工作:节点上安装nvidia驱动节点上安装nvidia-docker集群部署gpu device plugin,用于为调度到该节点的pod分配GPU设备。除此之外,如果你需要监控集群GPU资源使用情况,你可能还需要安装DCCM exporter结合Prometheus输出GPU资源监控信息。要安装和管理这么多的组件,对于运维
5089 0
NVIDIA GPU Operator分析一:NVIDIA驱动安装
|
并行计算 Cloud Native 异构计算
用尽每一寸GPU,阿里云cGPU容器技术白皮书重磅发布!
云原生已经成为业内云服务的一个趋势。在云原生上支持异构计算有助于提升CPU的利用率。一文分析业内主流GPU共享方案,并告诉你阿里云cGPU牛在哪里!阿里云异构计算推出的cGPU(container GPU)容器技术,创新地提出了一种不同于以往的GPU容器方案,克服了业内主流方案的一些常见的缺陷,在保证性能的前提下,做到了容器之间的GPU显存隔离和任务隔离,为客户充分利用GPU硬件资源进行训练和推理提供的有效保障。
9209 0
用尽每一寸GPU,阿里云cGPU容器技术白皮书重磅发布!
|
4月前
|
机器学习/深度学习 数据处理
大语言模型中的归一化技术:LayerNorm与RMSNorm的深入研究
本文分析了大规模Transformer架构(如LLama)中归一化技术的关键作用,重点探讨了LayerNorm被RMSNorm替代的原因。归一化通过调整数据量纲保持分布形态不变,提升计算稳定性和收敛速度。LayerNorm通过均值和方差归一化确保数值稳定,适用于序列模型;而RMSNorm仅使用均方根归一化,省略均值计算,降低计算成本并缓解梯度消失问题。RMSNorm在深层网络中表现出更高的训练稳定性和效率,为复杂模型性能提升做出重要贡献。
830 14
大语言模型中的归一化技术:LayerNorm与RMSNorm的深入研究
|
存储 SQL 人工智能
【云栖实录】Hologres3.0全新升级:一体化实时湖仓平台
2024年云栖大会,Hologres 3.0全新升级为一体化实时湖仓平台,通过统一数据平台实现湖仓存储一体、多模式计算一体、分析服务一体、Data+AI 一体,发布 Dynamic Table、External Database、分时弹性、Query Queue、NL2SQL 等众多新的产品能力,实现一份数据、一份计算、一份服务,极大提高数据开发及应用效率。同时,Hologres 的预付费实例年付折扣再降15%,仅需7折,不断帮助企业降低数据管理成本,赋能业务增长。
|
9月前
|
数据挖掘
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
444 10
|
人工智能 弹性计算 并行计算
技术改变AI发展:CUDA Graph优化的底层原理分析(GPU底层技术系列一)
随着人工智能(AI)的迅速发展,越来越多的应用需要巨大的GPU计算资源。CUDA是一种并行计算平台和编程模型,由Nvidia推出,可利用GPU的强大处理能力进行加速计算。
105791 1
|
存储 缓存 芯片
|
Prometheus Kubernetes 监控
NVIDIA GPU Operator分析六:NVIDIA GPU Operator原理分析
背景我们知道,如果在Kubernetes中支持GPU设备调度,需要做如下的工作:节点上安装nvidia驱动节点上安装nvidia-docker集群部署gpu device plugin,用于为调度到该节点的pod分配GPU设备。除此之外,如果你需要监控集群GPU资源使用情况,你可能还需要安装DCCM exporter结合Prometheus输出GPU资源监控信息。要安装和管理这么多的组件,对于运维
3145 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问