相关文章推荐
稳重的警车  ·  联合国可持续发展集团 | ...·  7 月前    · 
强健的回锅肉  ·  刺客信条:团结 | 刺客信条中文维基 | ...·  1 年前    · 
沉着的生菜  ·  DataType.NVarChar(Int3 ...·  2 年前    · 
深情的登山鞋  ·  圣诞节:看腻了《真爱至上》?这15部圣诞题材 ...·  2 年前    · 
豪气的毛豆  ·  环球漫评|全民战“疫”,团结就是力量!·  2 年前    · 
Code  ›  用于cudaSetDevice的CUDA驱动程序API等效开发者社区
api 上下文 cuda
https://cloud.tencent.com/developer/ask/sof/109995375
想出家的萝卜
2 年前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 用于cudaSetDevice的CUDA驱动程序API等效

Stack Overflow用户
提问于 2013-08-19 19:22:39
EN

运行时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中是否有一个等价的调用。

2 1.9K 0 票数 3
EN
c
cuda

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-19 20:28:56

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

  • cuCtxCreate 充当第一个 cudaSetDevice 调用(也就是说,它在驱动程序上下文堆栈上创建上下文)
  • cuCtxPushCurrent() 和 cuCtxPopCurrent() 对(或根据您使用的API版本而定)充当任何后续 cudaSetDevice 调用(也就是说,它推送或选择先前创建的上下文作为所有后续 cudaSetDevice 调用的活动上下文,直到上下文从驱动程序上下文堆栈中弹出或取消选择为止)。
票数 5
EN

Stack Overflow用户

发布于 2021-11-15 19:56:23

实际上, cudaSetDevice() 并不完全像创建来检索上下文,就像调用了 cuCtxCreate() 一样。这是非常相似的,但是CUDA运行时API使用的是一个特殊的上下文。此上下文称为设备的 主上下文 。有用于处理此特殊上下文的 特定驱动程序API函数 :

CUresult cuDevicePrimaryCtxGetState ( CUdevice dev, unsigned int* flags, int* active );
 
推荐文章
稳重的警车  ·  联合国可持续发展集团 | 2026年最不发达国家“毕业班”:孟加拉国、老挝和尼泊尔共谋平稳过渡
7 月前
强健的回锅肉  ·  刺客信条:团结 | 刺客信条中文维基 | Fandom
1 年前
沉着的生菜  ·  DataType.NVarChar(Int32) Method (Microsoft.SqlServer.Management.Smo) | Microsoft Learn
2 年前
深情的登山鞋  ·  圣诞节:看腻了《真爱至上》?这15部圣诞题材电影电视剧同样可以治愈你 - 走马灯 | 小宇宙 - 听播客,上小宇宙
2 年前
豪气的毛豆  ·  环球漫评|全民战“疫”,团结就是力量!
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号