什么是CUDA上下文?

26
有人能解释一下什么是CUDA上下文,或者引荐一些好的资料吗?我查过了CUDA开发者指南,但不太满意。任何解释或帮助都将不胜感激。

1
关于CUDA上下文的内容,由于其本质上是可变的并可能包含新功能,因此没有公开信息。我没有看到更好的描述方式,也不明白缺少了什么,以及你期望得到什么。 - Florent DUGUET
有没有其他开源库中类似的概念我可以查看? - Vraj Pandya
1
我认为OpenCL上下文确实非常相似。https://www.khronos.org/registry/OpenCL/sdk/1.0/docs/man/xhtml/clCreateContext.html。据我所知,存在OpenCL的开源实现。 - Florent DUGUET
2个回答

24

cuda API提供了一个有状态库的功能:连续两个调用彼此相关。简而言之,上下文就是它的状态。

运行时API驱动程序API的包装器/助手。在驱动程序API中可以看到上下文被显式地提供,并且您可以拥有一堆上下文以方便使用。有一个特定的上下文是驱动程序和运行时API共享的(请参见主要上下文)。

上下文保存了控制和使用设备所需的所有管理数据。例如,它保存的分配内存的列表,包含设备代码的加载模块,CPU和GPU内存之间的零复制映射等。

最后,请注意,本文更多是基于经验而非文件证明。


1
这两个答案都很有启发性。但我仍然不满意。你能更详细地描述一下吗? - Vraj Pandya
令我困惑的是,驱动程序API中有cuCtxSynchronize函数,它可以在不明确指定上下文甚至设备的情况下同步“上下文”(我猜测是主要上下文),而且也没有明确指出是哪个设备(是所有设备吧?)。 - lukstafi

4

本质上,它是一种数据结构,用于保存与在调用之间维护一致状态相关的信息,例如 (打开) (执行) (关闭)。

这样做的目的是即使您没有明确告诉函数信号应该传递到哪里,它们也可以将信号发送到正确的方向。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接