gpt4 book ai didi

c++ - 使用 Nvidia GPU Computing 工具包和 Cygwin with Eclipse 编译错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:51 26 4
gpt4 key购买 nike

我在带有 64 位 Cygwin 包和 Eclipse 的 Windows 7 x64 上使用 Nvidia GPU Computing 工具包。 (我使用内部构建工具,因为 GNU make 不喜欢 Windows 路径中的冒号。)我的代码:

这是一段相当基本的代码: #包括 #包括 使用命名空间标准;

int main() {
cl_int error = 42;
cl_platform_id platform;

error = clGetPlatformIDs(1, &platform, NULL);

return 0;
}

C++ 代码编译和运行都很好,我可以使用 OpenCL header 和 cl_intcl_device_id,但是使用 clGetPlatformID 我得到以下结果编译错误:

relocation truncated to fit: R_X86_64_32 against symbol 
'__imp_clGetPlatformIDs' defined in .idata$5 section in
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\lib
\x64/OpenCL.lib(OpenCL.dll.b)

我尝试了以下方法:

  • 卸载/重新安装 Cygwin 工具
  • 卸载/重新安装 Nvidia GPU 计算工具包中的 32 位和 64 位库
  • 卸载/重新安装 Eclipse 并检查大部分设置
  • 通过添加“-mcmodel=medium”或“-mcmodel=large”来避免 32 位内存限制。 (根据搜索,有时会混合使用 32 位和 64 位二进制文​​件。)
  • 确认我只使用 64 位 Nvidia 库和 Cygwin 工具。

我的猜测是内部构建器是罪魁祸首,但使用它是导致构建失败的另一个问题的解决方案。

最佳答案

我有一些关于这方面的更新:

删除并重新安装了几乎所有东西(CUDA 工具包、Cygwin、Eclipse),即使使用了适当的标志(我在 Captain Obvious 链接到建议它的帖子之前使用过),它仍然给我同样的错误。

我取得的进步是,我可能已经将注意力集中在问题的实际位置上。使用相对路径解决了 GNU make 无法处理路径中的冒号的问题。这基本上清除了 Eclipse 内部构建器。然而,我在另一台机器上使用了几乎完全相同的设置,不同之处在于此设置有 AMD 卡,因此使用 AMD App SDK 而不是 Nvidia 的 OpenCL 工具包。

我怀疑这可能是最近发布的 CUDA 工具包 6.0 版带来的错误,因为它引入了一些非常重要的升级,如统一内存,如果没有 NSight Visual Studio 插件,他们可能无法很好地测试它.毕竟他们确实建议您使用带有该插件的 Visual Studio 进行开发,而我现在没有(合法)访问 Visual Studio 的权限。

编辑:我现在几乎已经证实了这一点...在 Nvidia GPU 机器上安装了 AMD App SDK,它运行完美,所以看起来 Nvidia 实际上已经在 CUDA 工具包的版本 6 中搞砸了 OpenCL。你知道他们正在通过 CUDA 与 OpenCL 竞争,我对此并不感到惊讶。

关于c++ - 使用 Nvidia GPU Computing 工具包和 Cygwin with Eclipse 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24189414/

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