我使用Armadillo 4.2版本(来自linux mint包管理器)已经有一段时间了。该版本在使用icc编译时没有任何问题,并且使用icc编译的代码运行速度非常快(与g++相比大约快10%-15% )。
最近我将Armadillo升级到了最新的6.1版本(从官方网站)。但在这种情况下,所有代码都使用icc正确编译,但给出了运行时错误。
error: eig_sym(): failed to converge
terminate called after throwing an instance of 'std::runtime_error'
what(): eig_sy
示例代码(t0.c):
#include <stdio.h>
float f(float a, float b, float c) __attribute__((noinline));
float f(float a, float b, float c)
{
return a * c + b * c;
}
int main(void)
{
void* p = V;
printf("%a\n", f(4476.0f, 20439.0f, 4915.0f));
return 0;
}
调用和执行(通过godbolt.org):
# i
我正在尝试在Ubuntu 12.04上使用icc和Eclipse。icc在命令行中工作得很好。在安装icc之后,我已经使用apt-get安装了eclipse-platform。
我遵循这里给出的说明:
执行完这些步骤后,我得到以下错误:
Cannot complete the install because one or more required items could not be found.
Software being installed: Intel(R) C++ Compiler XE 14.0 for Linux* OS 8.1.0 (com.intel.compiler.
利用乘法循环中的隐式指令,实现了稀疏矩阵的简单矩阵向量乘法。
完整的代码在GitHub:中
注:很难看;-)
为了控制私有和共享内存,我使用限制指针。在64位Linux上用GCC 4.6.3编译它很好(除了在一个%u命令中有两个关于printf和unsigned int的警告之外,这不是重点)。
但是,在64位Linux上用ICC 12.1.0编译它会出错:
matxvec_sparse.cpp(79): error: "default_n_row" must be specified in a variable list at enclosing OpenMP paralle
我试图用ICC编译代码,但遇到了一个错误:
/opt/intel/composer_xe_2013.2.146/compiler/include/xmmintrin.h(82): error:
linkage specification is incompatible with previous "_mm_malloc" (declared at
line 38 of "/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/mm_malloc.h")
extern void* __ICL_INTRINCC _mm_mall