CUDA 5.5&;英特尔C/C++;Linux上的编译器
对于我当前的项目,我需要在同一项目中使用CUDA和英特尔C/C++编译器。(我依赖于英特尔MKL的SSYEV实现,使用GCC+MKL而不是ICC+MKL(距离GCC约3ms,距离ICC约300µs)所需的时间约为10倍) NVIDIA声明支持英特尔ICC 12.1(),但即使降级到英特尔ICC 12.1.5(作为英特尔Composer XE 2011 SP1更新3的一部分安装),我仍然遇到以下问题:CUDA 5.5&;英特尔C/C++;Linux上的编译器,linux,cuda,nvcc,icc,Linux,Cuda,Nvcc,Icc,对于我当前的项目,我需要在同一项目中使用CUDA和英特尔C/C++编译器。(我依赖于英特尔MKL的SSYEV实现,使用GCC+MKL而不是ICC+MKL(距离GCC约3ms,距离ICC约300µs)所需的时间约为10倍) NVIDIA声明支持英特尔ICC 12.1(),但即使降级到英特尔ICC 12.1.5(作为英特尔Composer XE 2011 SP1更新3的一部分安装),我仍然遇到以下问题: nvcc -ccbin=icc src/test.cu -o test /usr/local/c
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没有提供与CUDA一起使用ICC的信息,我几乎不会称之为“支持”
我运行英伟达12.10 X86Y64和CUDA 5.5,告诉ICC使用“代码> > Xcompiler -GCC版本=470 < /Cord>选项来模拟股票GCC 4.7.2的行为。也没有帮助。使用谷歌/搜索,我只能从Nvidia论坛找到与CUDA 3 .x和英特尔ICC 11.1有关的线程,但是我无法将获得的形成当前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
解决方案是使用与指定生成日期实际匹配的英特尔编译器。如前所述,即12.1.0.233版,而不是ICC 12.1.5版应该可以实现这一目的
窄焦点至少部分是由于测试限制。在本例中,一个特定的ICC变体在发布之前已使用CUDA工具包进行了测试,因此主机配置检查中包含了此测试。我在使用icc2013和ifort2013编译Magada-1.5时遇到了这个问题。然后我尝试通过下载ICC版本2011更新7来解决这个问题。根据英特尔编译器编译日期20110811,我可以下载正确的版本。我认为20110811的日期是正确的 好的,通过从
/usr/local/cuda-5.5/include/host_config.h
中删除对ICC版本的宏检查,我可以绕过这个问题。有了这些更改,我的应用程序可以编译和运行—即使使用“英特尔ICC 13.1.3”。然而,我很好奇是否存在一个合适的/更干净的方法,它不涉及破坏CUDA头文件…您当然可以绕过主机配置检查。那么你就处于未知(即未经测试的)水域。你的里程数可能会有所不同。我的主要问题是,或者更确切地说,必须依赖ICC的免费学术版本,没有简单的方法检索所述的确切版本。(至少我没有在英特尔提供的任何免费Composer XE捆绑包中找到正确的版本)。我已经决定,我愿意冒我的工具链可能突然爆炸的风险,并选择不受支持的配置:-)
#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