1

对于我当前的项目,我需要在同一个项目中使用 CUDA 和英特尔 C/C++ 编译器。(我依赖于英特尔 MKL 的 SSYEV 实现,使用 GCC+MKL 而不是 ICC+MKL 大约需要 10 倍的时间(GCC 约 3ms,ICC 约 300µs)。

icc -v
icc version 12.1.5

NVIDIA 声明,支持 Intel ICC 12.1 ( http://docs.nvidia.com/cuda/cuda-samples/index.html#linux-platforms-supported ),但即使在降级到 Intel ICC 12.1.5(安装作为 Intel Composer XE 2011 SP1 Update 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。告诉 icc 使用该选项模仿股票 GCC 4.7.2 的行为-Xcompiler -gcc-version=470也无济于事。使用 google/search,我只能从 Nvidia 论坛中找到处理 CUDA 3.x 和 Intel ICC 11.1 的线程,但我无法将获得的信息传输到当前的 CUDA 版本。

对于如何解决此问题的任何建议,我将不胜感激:-)

4

2 回答 2

3

参考您收到的错误中引用的文件,它专门寻找具有特定构建日期的 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,即。版本 12.1.0.233,而不是 ICC 12.1.5 应该可以解决问题。

狭窄的焦点至少部分是由于测试限制。在这种情况下,特定的 ICC 变体在发布之前使用 CUDA 工具包进行了测试,因此主机配置检查中包含此测试。

于 2013-09-09T13:32:53.790 回答
0

我在用 icc2013 和 ifort2013 编译 madagascar-1.5 时遇到了这个问题。然后我尝试通过下载 ICC 版本 2011 update7 来解决问题。基于 INTEL_COMPILER_BUILD_DATE 是 20110811,我可以下载正确的。我认为与 icc 匹配的日期 20110811 是正确的。

于 2013-12-25T14:06:08.127 回答