gpt4 book ai didi

cuda - 多个进程并行启动 CUDA 内核

转载 作者:行者123 更新时间:2023-12-03 23:34:04 30 4
gpt4 key购买 nike

我知 Prop 有 2.x 或更高计算能力的 NVIDIA GPU 可以同时执行多达 16 个内核。
但是,我的应用程序生成了 7 个“进程”,并且这 7 个进程中的每一个都启动了 CUDA 内核。

我的第一个问题是这些内核的预期行为是什么。它们是否也会同时执行,或者由于它们是由不同的进程启动的,因此它们将按顺序执行。

我很困惑,因为 CUDA C 编程指南说:

“来自一个 CUDA 上下文的内核不能与来自另一个 CUDA 上下文的内核同时执行。”
这让我想到我的第二个问题,什么是 CUDA“上下文”?

谢谢!

最佳答案

CUDA 上下文是一个虚拟执行空间,其中包含主机线程或进程拥有的代码和数据。具有所有当前硬件的 GPU 上只能激活一个上下文。

所以回答你的第一个问题,如果你有七个单独的线程或进程都试图建立一个上下文并同时在同一个 GPU 上运行,它们将被序列化并且任何等待访问 GPU 的进程都将被阻塞,直到它的所有者运行上下文产生。据我所知,没有时间切片和调度启发式没有记录,并且(我怀疑)从操作系统到操作系统不统一。

您最好启动一个持有 GPU 上下文的工作线程,并使用来自其他线程的消息将工作推送到 GPU。或者,在 CUDA 驱动程序 API 中有一个上下文迁移工具可用,但这仅适用于来自同一进程的线程,并且迁移机制具有延迟和主机 CPU 开销。

关于cuda - 多个进程并行启动 CUDA 内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14895034/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com