【发布时间】:2011-08-18 05:14:37
【问题描述】:
我对 CUDA 编程非常陌生,而且设置起来并不困难。我正在使用驱动程序 API,我修改了编译工作流程,我所有的学习内核和主机程序都运行良好。我直接从 cuda 源示例中学习,因为 SDK 主要依赖于它们。一切都很完美。
但我正在尝试将我的程序从经典控制台示例扩展到 GUI,并且我很难在经典 main() 函数之外调用任何 cuda 函数。我在 Win32 下,main() 之外的任何调用都会导致“访问冲突”,在 main() 中调用内核或设备查询函数可以正常工作,gui 程序也可以正常工作。这发生在包括 cuInit() 在内的所有 API 调用中,因此,使上下文成为当前、推送和弹出上下文是不可能的。如果你看一下 SDK 示例,它们都在 main() 中编码。
有人知道这个问题吗?这也发生在你身上吗?如何解决?
提前非常感谢您的 cmets。
信息:
- CUDA SDK 版本:4.0
- 设备:GeForce GTS 450 (GF106),设备能力 2.1
- Win32 平台(Win7 x64 和 WOW64)。
- CUDA 驱动程序 API
- 使用 D 编程语言编写的宿主程序。
【问题讨论】: