gpt4 book ai didi

CUDA 驱动程序 API 等效于 cudaSetDevice

转载 作者:太空宇宙 更新时间:2023-11-04 02:08:10 25 4
gpt4 key购买 nike

运行时 API 函数 cudaSetDevice 的 CUDA 驱动程序 API 等价物是什么?

我正在研究驱动程序 API,但找不到等效的函数。我能做的是

cuDeviceGet(&cuDevice, device_no);
cuCtxCreate(&cuContext, 0, cuDevice);

这是不等价的,因为除了设置设备外,它还创建了一个上下文。运行时 API cudaSetDevice 本身不创建上下文。在运行时 API 中,CUDA 上下文是通过需要设备状态的第一个 CUDA 调用隐式创建的。

此问题的背景:CUDA 感知 MPI (MVAPICH2 1.8/9) 初始化要求在调用 MPI_init 之前设置 CUDA 设备。使用 CUDA 运行时 API,这可以通过

完成
cudaSetDevice(device_no);
MPI_init();

但是,我不想使用对 CUDA 运行时的调用,因为我的应用程序的其余部分纯粹使用驱动程序 API,我想避免也链接到运行时。

在初始化 MPI 之前创建上下文有什么问题?原则上没有。只是想知道驱动程序 API 中是否有等效的调用。

最佳答案

您可以在有关驱动程序 API 的编程指南附录中找到相关信息,但简短版本是这样的:

  • cuCtxCreate 充当第一个 cudaSetDevice 调用(即它在驱动程序上下文堆栈上创建上下文)
  • cuCtxPushCurrent()cuCtxPopCurrent() 对(或 cuCtxSetCurrent 取决于您使用的 API 版本)充当任何后续 cudaSetDevice 调用(即它推送或选择先前创建的上下文作为所有后续 API 调用的事件上下文,直到上下文从驱动程序上下文堆栈中弹出或取消选择)

关于CUDA 驱动程序 API 等效于 cudaSetDevice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18321493/

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