对于我当前的项目,我需要在同一个项目中使用 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 版本。
对于如何解决此问题的任何建议,我将不胜感激:-)