如何调用main()之外的CUDA函数?

时间:2011-08-18 05:14:38

标签: cuda main nvidia

我对CUDA编程很陌生,并没有很难设置它。我正在使用驱动程序API,我修改了编译工作流程,所有学习内核和宿主程序都运行良好。我正在直接从cuda源样本中学习,因为SDK主要依赖于它们。一切都很完美。

但我正在尝试将我的程序从经典控制台示例扩展到GUI,并且我很难在经典的main()函数之外调用任何cuda函数。我在Win32下,并且main()之外的任何调用都会导致“访问冲突”,在main()中调用内核或设备查询函数正常工作,gui程序也正常工作。这发生在所有API调用中,包括cuInit(),因此,使上下文成为当前,推送和弹出上下文是不可行的。如果您查看SDK示例,所有这些示例都在main()中编码。

有没有人对这个问题有所了解?这也发生在你身上吗?如何解决?

非常感谢你提前发表意见。

信息:

  • CUDA SDK版本:4.0
  • 设备:GeForce GTS 450(GF106),设备功能2.1
  • Win32平台(带WOW64的Win7 x64)。
  • CUDA驱动程序API
  • 使用D编程语言制作的主机程序。

1 个答案:

答案 0 :(得分:1)

有数以千计的程序完全在main之外使用CUDA,问题更可能是你的程序是用D而不是C / C ++编写的。这并不是说它无法工作(我从未使用过D),但你需要记住你正在调用C API并且C是不受管理的。