我对CUDA编程很陌生,并没有很难设置它。我正在使用驱动程序API,我修改了编译工作流程,所有学习内核和宿主程序都运行良好。我正在直接从cuda源样本中学习,因为SDK主要依赖于它们。一切都很完美。
但我正在尝试将我的程序从经典控制台示例扩展到GUI,并且我很难在经典的main()函数之外调用任何cuda函数。我在Win32下,并且main()之外的任何调用都会导致“访问冲突”,在main()中调用内核或设备查询函数正常工作,gui程序也正常工作。这发生在所有API调用中,包括cuInit(),因此,使上下文成为当前,推送和弹出上下文是不可行的。如果您查看SDK示例,所有这些示例都在main()中编码。
有没有人对这个问题有所了解?这也发生在你身上吗?如何解决?
非常感谢你提前发表意见。
信息:
答案 0 :(得分:1)
有数以千计的程序完全在main之外使用CUDA,问题更可能是你的程序是用D而不是C / C ++编写的。这并不是说它无法工作(我从未使用过D),但你需要记住你正在调用C API并且C是不受管理的。