gpt4 book ai didi

带有 g++ 4.7 和 4.8 : __int128 build errors 的 CUDA 5.5 RC

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

我正在尝试在 MacOS X 10.8 上使用 CUDA SDK 5.5 RC 和 g++ 4.7 编译一些代码。
如果我理解正确,CUDA 5.5 应该可以与 g++ 4.7 一起使用。查看/usr/local/cuda/include/host_config.h 它甚至应该与 g++ 4.8 一起使用。

关于 g++ 4.8:我尝试编译以下程序:

// example.cu
#include <stdio.h>
int main(int argc, char** argv) {
printf("Hello World!\n");
return 0;
}

但它失败了:
$ nvcc example.cu -ccbin=g++-4.8
/usr/local/Cellar/gcc48/4.8.1/gcc/include/c++/4.8.1/cstdlib(178): error: identifier "__int128" is undefined
/usr/local/Cellar/gcc48/4.8.1/gcc/include/c++/4.8.1/cstdlib(179): error: identifier "__int128" is undefined
2 errors detected in the compilation of "/tmp/tmpxft_00007af2_00000000-6_example.cpp1.ii".

使用 g++ 4.7 编译并运行相同的程序:
$ nvcc example.cu -ccbin=g++-4.7
$ ./a.out
Hello World!

但是如果我包括 ...
// example_limits.cu
#include <stdio.h>
#include <limits>
int main(int argc, char** argv) {
printf("Hello World!\n");
return 0;
}

...甚至 g++ 4.7 也失败了。构建日志位于此处: https://gist.github.com/lysannschlegel/6121347
在那里您还可以找到其他一些错误,我不确定它们是否都与 __int128 缺失有关。
很可能其他标准库也包括打破 g++ 4.7 的构建,限制是我绊倒的那个。

我也尝试过 g++ 4.5,因为我的机器上也有它(你永远不会有太多的编译器版本,对吗?),它可以工作。

我可以期待这将在 CUDA 5.5 版本中修复吗? (我希望 NVIDIA 不会简单地回到只支持 4.6 版本的 gcc。)
在此期间有没有办法解决这个问题?

更新:

正如@talonmies 在下面指出的那样,严格来说这并不是 MacOS 上 CUDA 5.5 中的错误,因为 MacOS 上不正式支持 gcc。由于许多第三方库不能正确处理支持的工具链,clang 或 llvm-gcc(llvm-gcc 来自 2007 年......),仍然需要使 gcc 工作。 gcc 到 4.6 应该可以正常工作(我只测试了 4.5)。
您可以使用@BenC 在评论中指出的技巧使 gcc 4.7 工作:
$ cat compatibility.h 
#undef _GLIBCXX_ATOMIC_BUILTINS
#undef _GLIBCXX_USE_INT128

$ nvcc example_limits.cu -ccbin=g++-4.7 --pre-include compatibility.h

带有 gcc 4.8 的 nvcc 仍然在 cstdlib 中的 __int128 上窒息。我猜 cstdlib 是在包含 --pre-include 文件之前包含的。

最佳答案

您需要更仔细地阅读 MacOS 入门指南:

To use CUDA on your system, you will need the following installed:

CUDA-capable GPU

‣ Mac OSX v. 10.7.5 or later

‣ The gcc or Clang compiler and toolchain installed using Xcode

‣ NVIDIA CUDA Toolkit (available at http://developer.nvidia.com/cuda-downloads)



这正是它所说的意思 - 使用 Xcode 附带的编译器。不要使用自建的 gcc 版本,因为它不能保证工作,即使该编译器版本被列为在其他平台上受支持并且琐碎的代码似乎可以正确编译。

关于带有 g++ 4.7 和 4.8 : __int128 build errors 的 CUDA 5.5 RC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17970327/

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