Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CUDA 5.5&;英特尔C/C++;Linux上的编译器_Linux_Cuda_Nvcc_Icc - Fatal编程技术网

CUDA 5.5&;英特尔C/C++;Linux上的编译器

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

对于我当前的项目,我需要在同一项目中使用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/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