【发布时间】:2010-09-19 13:32:47
【问题描述】:
在编写 CUDA 应用程序时,您可以在驱动程序级别或运行时级别工作,如图所示(库是 CUFFT 和 CUBLAS 用于高级数学):
(来源:tomshw.it)
我假设两者之间的权衡是提高低级 API 的性能,但以增加代码复杂性为代价。具体的区别是什么?有哪些重要的事情是高级 API 不能做的?
我正在使用 CUDA.net 与 C# 进行互操作,它是作为驱动程序 API 的副本构建的。这鼓励在 C# 中编写大量相当复杂的代码,而使用运行时 API 的 C++ 等效代码会更简单。这样做有什么好处吗?我可以看到的一个好处是更容易将智能错误处理与其他 C# 代码集成。
【问题讨论】:
-
驱动 API 的一个优点是编译器开发人员可以添加对使用 C 的 CUDA 子集以外的语言编写内核的支持。
标签: c# c++ cuda gpgpu cuda.net