cuda与mingw - 更新

jmi*_*loy 7 cuda mingw nvcc

我们一直在linux中开发代码,但是想编译一个windows可执行文件.旧的非gpu版本与windows中的mingw编译得很好,所以我希望我能够用CUDA版本做同样的事情.

策略是在visual studio中使用nvcc编译内核代码,其余部分在mingw中使用gcc编译.

到目前为止,我们在visual studio中轻松编译了.cu文件(内核和内核启动).但是,我们仍然无法在mingw中编译c代码.c代码包含cuda api调用,例如cudaMalloccuda类型cudaEvent_t,因此我们必须包括cuda.h和cuda_runtime.h.但是,gcc会为这些标头提供警告和错误,例如:

../include/host_defines.h:57:0: warning: "__cdecl" redefined
Run Code Online (Sandbox Code Playgroud)

../include/vector_functions.h:127:14: error: 'short_4' has no member named 'x'
Run Code Online (Sandbox Code Playgroud)

关于如何包含这些头文件并编译代码的c部分的任何想法?

osg*_*sgx 1

据我所知,没有MSVC是不可能使用CUDA的。因此,您需要 MSVC 来使 nvcc 工作,并且您可以使用 mingw 编译 CPU 代码并将所有内容链接在一起。

根据http://forums.nvidia.com/index.php?showtopic=30743

“目前没有计划支持 mingw。”

  • 另一方面,如果您不绝对坚持 CUDA(即,如果非专有 OpenCL“足够好”),那么它可以与 MinGW 无缝协作。 (2认同)
  • 我采用了 ATI 流 SDK 附带的导入库(但来自 nVidia 的库可能同样有效),并且在我的 nVidia 卡上运行时没有出现任何问题。我还尝试了一些来自苹果公司人员的动态加载器代码,这些代码是我在互联网上找到的,它手动加载所有函数,并用 GetProcAddress 替换了无论什么名称。这也很有效(尽管我后来发现过于灵活是愚蠢的,但现在可以简单地将 OpenCL 作为一项要求)。至于CUDA-CL我不知道,我听说它也类似,但我完全没有CUDA的经验。 (2认同)