问题标签 [icc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1295 浏览

makefile - 使用英特尔编译器编译 VLC2.0 - 无效使用 __builtin_va_arg_pack

我正在尝试在 Ubuntu 11.10 上编译 VLC2.0,并且被这个错误难住了。我已经使用英特尔最新的编译器套件成功编译了 contrib/ 中的所有依赖项。但是,编译 posix/filesystem.c 时出现错误

配置 VLC:-

我编辑了makefile中的一些标志;相关标志现在是:

在制作阶段,我收到此错误:

在网上环顾四周后,我看到一些邮件列表提到优化标志会导致 gcc 出现此错误,特别是与内联有关的标志,这就是我添加-ipo -finline -finline-limit=1000到 CFLAGS 的原因。但这似乎并不能解决问题。

谁能帮我解决这个问题??我试图找出使用的确切编译命令,以便手动编译 filesystem.lo,但我找不到make打印使用的确切命令的方法,即使使用make -d. 我确实设法编译了 filesystem.c,但它生成了一个 ELF 64 位可执行文件,而不是一个 libtool 目标文件......

非常感谢任何帮助!

附言。如果其他人在这里是因为他们想尝试使用 icc 编译 VLC2,我遇到了 musepack 和 libvpx 的问题,但是一些 Makefile 修复程序解决了这个问题。我很乐意应要求分享我的更改。

0 投票
1 回答
352 浏览

c - 检查是否内联特定函数 - 英特尔编译器

我有 C/C++ 二进制库(*.dll、*.sys)它们包含的 obj 文件和它们的符号(pdb),但没有源代码或映射文件。
根据符号,它们是由英特尔编译器(用于 Windows)构建的。

有什么方法可以检查特定函数是否内联?

提前致谢。

0 投票
1 回答
1337 浏览

c++ - 具有限制指针的 OpenMP 因 ICC 失败而 GCC/G++ 成功

我使用乘法循环中的隐式 openMP 指令为CRS中的稀疏矩阵实现了一个简单的矩阵向量乘法。

完整的代码在 GitHub 中:https
://github.com/torbjoernk/openMP-Examples/blob/icc_gcc_problem/matxvec_sparse/matxvec_sparse.cpp 注意:很丑;-)

为了控制私有和共享内存,我使用了限制指针。%u在 64 位 Linux 上使用 GCC 4.6.3 编译它可以正常工作(除了两个关于命令和命令unsigned int的警告printf,但这不是重点)。

但是,在 64 位 Linux 上使用 ICC 12.1.0 编译它失败并出现以下错误:

有问题的变量和指针的定义

和 openMP 指令定义为

用 g++ 编译:

用icc编译:


  • 使用 GCC/ICC 是否有错误?
  • 这是我的代码中的设计问题导致未定义的行为吗?
    如果是这样,哪条线路是/正在导致它?
  • 只是ICC和GCC之间的不一致吗?
    如果是这样,实现编译器独立性和兼容性的好方法是什么?
0 投票
2 回答
1163 浏览

c - 警告使用 ICC 和 printf 以及千位分组格式(撇号)

我需要显示一些数以千计的分组(在这种情况下,使用句点作为分隔符)。所以,我使用 printf 标志'来实现这样的事情。

gcc一切顺利,但如果我使用,icc那么我会收到以下警告:

警告 #269:无效的格式字符串转换

尽管该数字确实以所需的格式打印。

例如,如果我们编译这个简单的程序:

然后我们得到这个警告:

尽管一切都按预期工作:

所以我的问题是:

  1. 如何抑制此警告?
  2. 与编译器'一起使用 printf 和朋友作为标志是否安全?icc

更新

我刚刚意识到抑制269警告的一个奇怪技巧是使用格式定义一个变量,并将该变量传递给printf


更新

因为使用撇号 withprintf是 XSI 扩展(如@Dave 所述),为了使代码更具可移植性,遵循C-FAQ 问题 12.11中的建议并使用他们的commaprint.

0 投票
1 回答
304 浏览

c++ - 如何从通过模板继承的类中提取 typedef 的信息?

我有一个关于从通过模板继承的类中提取 typedef 信息的问题。为了说明我的问题,请考虑以下简单示例:

C 类将一个类(B1 或 B2)作为模板参数。B1 和 B2 都有一个名为 A 的 tyepdef(分别是 A1 和 A2 类)。在编译时,C 类应该能够确定“B”类正在使用两个“A”类中的哪一个。当我用 g++ 编译时,上面的代码运行良好。但是,当我使用 Intel 的 icpc 编译它时,出现以下错误:

有没有其他方法可以达到类似的效果?当然,我的实际代码要复杂得多,我希望以这种方式构造类是有原因的。还有一些原因我想用 icpc 而不是 g++ 编译。

提前致谢。卡尔

0 投票
3 回答
550 浏览

c++ - 三角矩阵转换和自动并行化

我在ICC(11.1;旧的,但对此无能为力)中玩了一点自动并行化,我想知道为什么编译器不能并行化内部循环以进行简单的高斯消除:

我们只写入依赖于私有行(和 col)变量的数组,并且行保证大于枢轴,所以编译器应该很明显我们没有覆盖任何东西。

我正在编译-O3 -fno-alias -parallel -par-report3并获得很多依赖项 ala:assumed FLOW dependence between matrix line 75 and matrix line 73.或者assumed ANTI dependence between matrix line 73 and matrix line 75.仅第 75 行也是如此。编译器有什么问题?显然我可以准确地告诉它如何处理一些编译指示,但我想了解编译器可以单独获得什么。

0 投票
1 回答
1856 浏览

dynamic-linking - 在 Linux 英特尔编译器 (icc) 中面临与 mkl 的链接问题

这是linux中的命令行:

运行此命令后:我得到了一长串未定义的参考错误。我也在 eclipse 中尝试过,但也无法解决那里的链接问题。如果有人帮助我运行这样的小代码,我会很高兴:

我的服务器

已安装 ICC 64 位。

提前致谢。

0 投票
4 回答
37652 浏览

c++ - 最简单的 TBB 示例

有人可以给我一个TBB示例如何:

  1. 设置活动线程的最大计数。
  2. 执行彼此独立并以类的形式呈现的任务,而不是静态函数。
0 投票
3 回答
4755 浏览

linker - 使用 icc 链接到 gsl 时出现 intel_sse2 问题

我的程序链接到 PETSc 和 gsl,两个库都是用 icc 编译的。这是链接命令:

MPICH_CC设置为 icc,因此mpicc调用 intel 编译器。

当我尝试链接到 gsl.so文件时,出现以下错误:

此错误的原因可能是什么?gsl 与 intel 编译器不兼容吗?

0 投票
1 回答
838 浏览

c - 循环展开对内存绑定数据的影响

我一直在使用一段受内存密集限制的代码。我试图通过手动实现缓存阻塞、sw 预取、循环展开等在单个内核中对其进行优化。即使缓存阻塞显着提高了性能。但是,当我引入循环展开时,性能会大大下降。

我在所有测试用例中都使用带有编译器标志 -O2 和 -ipo 的 Intel icc 进行编译。

我的代码与此类似(3D 25 点模板):

当我在最内层循环(维度 i)上进行循环展开并分别以展开因子 2、4、8 分别在 x、y、z 方向上展开时,我在所有 9 种情况下都会出现性能下降,即在方向 x 上展开 2,展开在 y 方向上展开 2,在 z 方向上展开 2,在 x 方向上展开 4 ... 等等。但是当我在最外面的循环(维度 k)上执行循环展开 8 倍(也有 2 和 4)时,我获得 v.good 性能改进,甚至比缓存阻塞更好。

我什至尝试使用 Intel Vtune 分析我的代码。这似乎是主要由于远程 DRAM 服务的 1.LLC 未命中和 2.LLC 负载未命中造成的瓶颈。

我无法理解为什么展开最内层最快的循环会导致性能下降,而展开最外层、最慢的维度会带来性能提升。然而,后一种情况的这种改进是当我使用 icc 编译时使用 -O2 和 -ipo 时。

我不确定如何解释这些统计数据。有人可以帮助阐明这一点。