问题标签 [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.
c - 使用英特尔 SSE SIMD 内在函数
我对英特尔 SSE 内在函数的各种算术运算有疑问。做 _mm_add_ps 与做 _mm_add_ps 有什么区别?_mm_add_epi8/16/32?我想确保我的数据始终保持一致。
在我执行此操作时的示例代码中:
我得到一个分段错误。但是当我这样做时:
它工作正常。
因为我希望我的数据对齐,所以我声明了这样的数组:
有人可以帮忙解释一下吗。
gcc - 我得到 omp_get_num_threads 在 gcc 中总是返回 1(在 icc 中工作)
我有这个老问题,但网上没有适合我的答案,代码是:
在 G++ 4.4.5、linux 2.6.32-5-amd64 中,它产生:
如果我们转移到 ICC 12.1.0,它会给我:
有任何想法吗?
c - 如何分配 16byte 内存对齐数据
我正在尝试在一段代码上实现 SSE 矢量化,我需要我的一维数组与 16 字节内存对齐。但是,我尝试了几种方法来分配 16 字节内存对齐的数据,但它最终是 4 字节内存对齐的。
我必须使用英特尔 icc 编译器。这是我正在测试的示例代码:
这是我得到的输出:
每次都是 4 字节对齐的,我用过 memalign,posix memalign。由于我在 Linux 上工作,我不能使用 _mm_malloc 也不能使用 _aligned_malloc。当我尝试使用 _aligned_attribute 时出现内存损坏错误(我认为这仅适用于 gcc)。
任何人都可以帮助我在 linux 平台上为 icc 准确生成 16 字节内存对齐数据。
c - 由于内存对齐不正确,使用 SSE 内在函数时出现分段错误
我第一次使用 SSE 内在函数,即使在确保 16 字节内存对齐后也遇到了分段错误。这篇文章是对我之前的问题的扩展:
这就是我声明我的数组的方式:
当我尝试这样做时:
但是当我这样做时:
但如果我这样做:
但是我想消除使用_mm_loadu_ps
,并想让它只使用_mm_load_ps
。
我正在使用英特尔 icc 编译器。
我该如何解决这个问题?
更新:
在以下代码中使用这两个操作:
上证版:
有没有更有效的方法来做到这一点_mm_load_ps()
?
gdb - GDB 给出分段错误(gdb...不是我的程序)
通过标题,我的意思是段错误不是正在调试的程序,而是 gdb 本身。
所以我只是想创建一个断点;当我按 gdb 时死了。
我喜欢相信这不是错误,而是背景中的一些混乱。因为这台电脑上的intel编译器(icc)已经更新了。
这台机器在具有 2 x Intel Xeon X5650 @ 2.67GHz(每个 6 核,总共 12 个,24 个多线程)、48 Gb 的 DRAM (NUMA) 和 2 个 GPU ( Tesla C2070 和 Tesla C2090 [这个没有正确安装])。这是运行 Cent OS:
有任何想法吗?
c++ - 解密未找到函数重载错误消息
我有以下代码:-
如果我尝试使用 icpc12 编译它,我会得到:-
现在,我知道错误的第一行意味着被调用的函数和可用的函数定义之间存在某种类型的不匹配,我正在尝试使用错误消息的其他两行来缩小问题的范围。
第二行和第三行是什么意思?
c++ - 另一个文件 c++ 中的模板特化。哪个版本得到
我有这些文件:-
1.h :-
1.cpp:-
main.cpp :-
现在,我像这样用 g++ 编译和运行它们:-
我得到:-
另一方面,我像这样用 icpc 编译它:-
我得到:-
C++ 标准对此有何评论?是任何一个编译器“正确”而另一个“错误”还是标准在这个问题上模棱两可并且两者都是“正确的”?
c - 使用 SSE 内在函数对 2D 模板进行矢量化
我正在尝试仅使用对齐、加载和存储来矢量化 2D 模板。为此,我想基本上使用_mm_load_ps
并_mm_shuffle_ps
获得所需的地址。
我的代码标量版本是:
到目前为止,我的向量查看代码版本:
有人可以帮我获得 j-1,j+1 .....j-4,j+4 的位置吗?
这不起作用:
我只需要帮助来确定如何获得(j-1)*dx+i
,(j+1)*dx+1
......(j-4)*dx+i
并且(j+4)*dx+i
不使用未对齐的负载。
作为一种潜在的解决方案,我想在3*dx
存储的地址中添加位移d
以获得(j-1)*dx+i
. 3*dx
并减去存储的地址的位移e
以获得(j+1)*dx+i
。类似地添加2*dx
到地址d
以获得j-2
等等。但我不知道使用 SSE 内在函数来实施此策略。
请帮忙。我正在使用英特尔 icc 编译器。
ubuntu - icc 编译代码无法加载共享对象 (libimf.so)
我正在用 icc 编译一个 cpp 代码(在 ubuntu 下):
它可以编译,但是在运行可执行文件时,我得到:
libimf.so 在 /opt/intel/lib/intel64 中。我记得上次使用 icc 时遇到了同样的问题(一年前),但我不记得解决方案是什么。
c++ - 静态数组和动态数组的区别
朋友们,我只是在玩一些指针程序,并意识到 GCC(也许还有 C 标准)区分了静态和动态数组。
动态数组有一个用于数组中元素地址的占位符,而对于静态数组,没有编译器存储元素数组起始地址的内存位置。
我有一个示例程序来证明我的困惑。
对于上述程序,_static
并&_static[0]
在预期的行上返回相同的地址。但是,它&_static
也返回与其他两个相同的地址。
所以,_static
并&_static
引用相同的数字(或地址我们想称呼它的任何东西)。正如预期的那样,_dynamic
并&_dynamic
指示不同的位置。
那么,为什么 C 标准这么说_static
并且&_static
必须引用相同的位置。听起来很混乱。我觉得的一个原因是这&_static
没有多大意义。但是,它的用法不应该被报告为错误吗?
有人可以帮我解决这个困惑吗?