对于我当前的项目,我需要在同一个项目中使用 CUDA 和英特尔 C/C++ 编译器。 (我依赖于英特尔 MKL 的 SSYEV 实现,使用 GCC+MKL 而不是 ICC+MKL 大约需要 10 倍的时间(GCC 约 3ms,ICC 约 300µs)。
icc -v
icc version 12.1.5
NVIDIA 声明,支持英特尔 ICC 12.1 ( http://docs.nvidia.com/cuda/cuda-samples/index.html#linux-platforms-supported ),但即使在降级到英特尔 ICC 12.1.5(作为英特尔 Composer XE 2011 SP1 更新 3 的一部分安装)之后,我仍然遇到这个问题:
nvcc -ccbin=icc src/test.cu -o test
/usr/local/cuda-5.5/bin//..//include/host_config.h(72): catastrophic error: #error directive: -- unsupported ICC configuration! Only ICC 12.1 on Linux x86_64 is supported!
#error -- unsupported ICC configuration! Only ICC 12.1 on Linux x86_64 is supported!
不幸的是,Nvidia 似乎只是在容忍使用 ICC,因为我很难将其称为“支持”,因为 Nvidia 缺乏将 ICC 与 CUDA 一起使用的信息。
我正在运行 Ubuntu 12.10 x86_64 和 CUDA 5.5。使用 -Xcompiler -gcc-version=470
选项告诉 icc 模仿普通 GCC 4.7.2 的行为也无济于事。使用 google/search,我只能从处理 CUDA 3.x 和 Intel ICC 11.1 的 Nvidia 论坛中找到线程,但我无法将获得的信息转移到当前的 CUDA 版本。
如果有任何关于如何解决此问题的建议,我将不胜感激:-)
最佳答案
引用您收到的错误中引用的文件,它专门寻找具有特定构建日期的 ICC 编译器:
#if defined(__ICC)
#if !(__INTEL_COMPILER == 9999 && __INTEL_COMPILER_BUILD_DATE == 20110811) || !defined(__GNUC__) || !defined(__LP64__)
#error -- unsupported ICC configuration! Only ICC 12.1 on Linux x86_64 is supported!
#endif
解决方案是让英特尔编译器实际匹配指定的构建日期。如前所述,ICC 12.1 , IE。版本 12.1.0.233,而不是 ICC 12.1.5 应该可以解决问题。
狭窄的焦点至少部分是由于测试限制。在这种情况下,特定的 ICC 变体在发布之前使用 CUDA 工具包进行了测试,因此主机配置检查中包含此测试。
关于linux - Linux 上的 CUDA 5.5 和英特尔 C/C++ 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18698817/