问题标签 [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 投票
1 回答
1235 浏览

c - 无法检测到以下代码未矢量化的原因

一段时间以来,我一直在努力对特定应用程序进行矢量化,并且我已经尝试了所有方法。从自动矢量化到手动编码的 SSE 内在函数。但不知何故,我无法在基于模板的应用程序上获得加速。

以下是我当前代码的片段,我使用 SSE 内在函数对其进行了矢量化。当我使用 -vec-report3 编译(英特尔 icc)它时,我不断收到此消息:
备注:循环未矢量化:语句无法矢量化。

我错过了一些重要的东西吗?由于该消息没有详细说明为什么它不能被矢量化,我发现很难确定瓶颈。

更新: 在仔细考虑建议后,我按以下方式调整了代码。我认为最好将其进一步分解,以确定实际上导致向量依赖的语句。

当我编译(icc)上面的代码时没有#pragma ivdep收到以下消息:

当我用 编译(icc)它时#pragma ivdep,我收到以下消息:

为什么建议对第 196 行有依赖关系?如何消除建议的向量依赖性?

0 投票
1 回答
638 浏览

gcc - ICC 库搜索选项

GNU 编译器使用-llib选项来链接库,是否有类似的东西icpc
(我已经指定了 -L 选项以在搜索路径中添加我的库)。

0 投票
0 回答
373 浏览

c - DLL 的配置文件引导优化(英特尔编译器)

我有一个从 C# 运行的 C .dll 文件。我最近使用 Intel C Compiler 对其进行了编译,我已经看到它比 Visual Studio 编译器提高了 25%(比 MinGW 提高了近 50%)。
现在我想尝试配置文件引导优化。我了解使用 /prof-gen 编译然后运行可执行文件会生成一个包含动态配置文件信息的文件。
问题是我的 C 程序中没有准备好测试(而且编写起来很麻烦)。
我的问题是:
是否有可能通过编译为 .dll 来创建 .dyn 文件,然后从 c# 级别运行它,然后通过 /prof-use 将其用于 PGO?

欢迎提供有关将 PGO 与 dll 一起使用的任何其他信息 :)

0 投票
1 回答
602 浏览

c - PGO 比静态优化慢(intel 编译器)

我正在为 I-32A 架构使用英特尔 C 编译器。当我使用以下选项编译我的 C 程序时:

测试运行需要 3.3 秒。现在我尝试使用 PGO,所以我编译了:

然后,我使用示例输入运行可执行文件 2-3 次,然后再次编译:

希望它将考虑到收集的信息。事实上,它告诉我它正在使用 .dyn 文件,但生成的可执行文件比没有使用 Qpr​​of 时要慢(3.85 秒),而且这与执行运行的数据完全相同(对于 PGO 来说应该是完美的)。我尝试将 openmp 线程设置为一个,认为它可能会与 .dyn 输出混淆,但结果是相同的 - 它比简单编译慢。

我的问题是:这在理论上是否可行,或者我用编译器选项以某种方式搞砸了 PGO 进程?

0 投票
1 回答
906 浏览

exception - cudaGetExportTable(CUDA 运行时库)中抛出异常'cudaError_enum'?

我正在使用 DDT 调试基于 MPI 的 CUDA 程序。当 CUDA 运行时库(libcudart)在(未记录的)函数中抛出异常时,我的代码中止cudaGetExportTable,当从我的代码中调用cudaMalloccudaThreadSynchronize(更新:使用cudaDeviceSynchronize给出相同的错误)时。

为什么 libcudart 会抛出异常(我使用的是 C API,而不是 C++ API),然后我才能在我的代码中使用它的cudaError_t返回值或 with检测到它CHECKCUDAERROR

(我正在使用适用于 Linux 的 CUDA 4.2 SDK。)

输出:

我的代码:

其他代码片段:

部分回溯:

内存调试错误:

这一行是上面显示的 cudaMalloc 代码片段。还:

此外,当在每个节点 3 个内核/gpus 而不是每个节点 4 个 gpus 上运行时,dmalloc 会检测到类似的内存错误,但是当不在调试模式下时,代码运行得非常好,每个节点 3 个 gpus(据我所知)。

0 投票
1 回答
663 浏览

c++ - 英特尔 C++ 编译器无法处理深度模板?

我有一个使用marray库的 C++ 项目。目前,它可以在 Windows 7 x64 上使用 MinGW g++ 4.7 和 msvc2010 以及在 Linux Mint x64 上使用 g++ 4.7 进行编译和运行。我决定尝试一下适用于 Linux 的 Intel C++ compiler v. 12.1.4。它能够编译代码,但是当它尝试执行任何干扰表达式模板的行时(如 c = a + b 其中所有三个项都是矩阵),它会因分段错误而崩溃。此问题会影响应用程序的调试和发布版本。

我还尝试为 marray 库编译单元测试和教程代码,英特尔 C++ 编译代码但如果它有任何表达式模板则无法运行它。英特尔 C++ 是否真的与深度模板一样糟糕,还是我遗漏了什么?我是否需要设置任何特殊的编译器标志才能使模板表达式起作用?或者也许只是我正在使用的特定库有问题,而不是一般的表达式模板技术?

我还尝试在 n 上使用各种各样的 -ftemplate-depth- n 标志设置10 ^ 10的大得可笑的值,并且在没有分段错误的情况下运行我的应用程序和 marray 单元测试/教程仍然没有运气。

更新:这是来自上述库的教程-marray 的 gdb 日志,该库在调试模式下使用 icpc 编译。

看起来问题一般不是源于表达式模板技术,数字数组算术工作正常。当我尝试将一个数组添加到另一个数组时,就会出现问题。

更新。2:实际上整个事情看起来很像这里提到的问题。解决方案应该是重写 operator E&() { return static_cast(*this); } 变成类似 E& get_ref() { return static_cast(*this); 和 const 引用相同。当然,在代码中改变这些东西的用法。我会尽快尝试并报告结果。

0 投票
1 回答
347 浏览

r - 如何正确地从 ICC 输出创建数据帧

我正在尝试从我的 ICC 计算中获取输出并创建一个数据框(请参阅下面的示例数据和代码)。当我查看新数据框时,一切似乎都运行良好,但如果您使用 str(),它会显示所有变量都是因子,而我的结果实际上是因子水平,每个因子水平的实际数据计数。这尤其是一个问题,因为我想操作新的数据框。

我对 R 比较陌生,我不知道如何修改我的代码来纠正这个问题。

数据集:

代码:

0 投票
1 回答
165 浏览

c - 使用icc时输出不稳定

我想报告我遇到的一个有趣的错误。下面的代码应该打印出 20 次“1.0”。相反,在我的 mac(雪豹 10.6.8)上使用 icc (11.1) 编译时,我得到不稳定的值(16 倍“0.0”然后 4 倍“1.0”)。我在代码中使用了几个特性,但它们似乎都没有语法错误(编译期间没有错误,并且 valgrind 在运行期间没有报告错误)。但是,如果我更改任何内容(即使是未使用的功能 - 这就是我觉得很奇怪的原因),我会得到正确的输出。用 gcc 编译也能得到正确的输出。

但我认为最奇怪的是,如果我删除函数“function1”,错误就会消失,尽管代码中没有使用该函数。

这真的很奇怪,现在我担心我的代码(比这大得多)会不稳定。我需要你的帮助,我对此感到非常困惑。语法有什么问题吗?

主.c:

主.h:

0 投票
1 回答
268 浏览

c++ - 好友功能默认模板:英特尔 ICPC 警告

我有以下测试代码:

使用 g++ (4.6.1) 我编译:

并使用英特尔 ICPC (12.1.0 20111011):

使用 g++ 我没有错误也没有警告,但是使用 Intel C++ 我有以下警告:

有人有办法避免这种情况吗?

此外,您是否发现友元函数的语法完全正常/安全,或者您认为它会在某些奇怪的情况下产生错误?

0 投票
1 回答
1037 浏览

c++ - 使用英特尔编译器套件编译 OpenMPI 应用程序

我在 linux 上有最新的 OpenMPI,它是用 Intel 编译器套件编译的。我正在尝试编译 OpenMPI 应用程序。我的特定应用程序使用 RInside 和 RcppEigen。如果我注释掉代码的 openMPI 部分,则编译字符串为:

因此,我尝试使用 mpic++ 进行编译:

mpic++ -I/usr/share/R/include -I/usr/lib/R/site-library/Rcpp/include -I/usr/local/lib/R/site-library/RInside/include -O3 -pipe - g -Wall -I/usr/local/lib/R/site-library/RcppEigen/include sjb_simple_smle_with_Rinside.cpp -L/usr/lib/R/lib -lR -lblas -llapack -L/usr/lib/R/site -library/Rcpp/lib -lRcpp -Wl,-rpath,/usr/lib/R/site-library/Rcpp/lib -L/usr/local/lib/R/site-library/RInside/lib -lRInside -Wl ,-rpath,/usr/local/lib/R/site-library/RInside/lib -o sjb_simple_smle_with_Rinside

如果我取消注释

并尝试编译,我得到以下错误。使用英特尔编译器编译 OpenMPI 应用程序有什么技巧吗?完整的源代码如下:

完整的源代码: