gpt4 book ai didi

带有 mingw 的 cuda - 更新

转载 作者:行者123 更新时间:2023-12-04 12:37:01 25 4
gpt4 key购买 nike

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

策略是在visual studio中用nvcc编译内核代码,然后在mingw中用gcc编译内核代码。

到目前为止,我们在 Visual Studio 中轻松编译了 .cu 文件(带有内核和内核启动)。但是,我们仍然无法在 mingw 中编译 c 代码。 c 代码包含 cuda api 调用,例如 cudaMalloc和 cuda 类型,例如 cudaEvent_t ,所以我们必须包括 cuda.h 和 cuda_runtime.h。但是,gcc 会针对这些 header 给出警告和错误,例如:

../include/host_defines.h:57:0: warning: "__cdecl" redefined


../include/vector_functions.h:127:14: error: 'short_4' has no member named 'x'

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

最佳答案

如果你真的很绝望,可能有办法。 nvcc 实际上只是一堆编译器的前端。它大量调用 g++ 来去除注释、分离设备和主机代码、处理名称修改、将内容重新链接在一起等(使用 --verbose )以获取详细信息。

我的想法如下:您应该能够在将设备代码编译到 linux 机器上的 fatbin 的同时使用 mingw 编译主机代码(因为我猜设备二进制文件是独立于主机的)。然后使用 mingw 将代码的两部分重新链接在一起,或者使用驱动程序 API 动态加载 fatbin。免责声明:未测试!

关于带有 mingw 的 cuda - 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com