gpt4 book ai didi

c - 英特尔数组符号 vector 运算

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:56 24 4
gpt4 key购买 nike

英特尔文档没有说明是否有人这样做,例如数组的乘法和加法:

c[:] = c[:] + a[:]*b[:]

它会做以下事情吗:

for(i=0; i<N; i++) tmp[i] = a[i]*b[i];
for(i=0; i<N; i++) c[i] = c[i] + tmp[i];

for(i=0; i<N; i++) c[i] = c[i] + a[i]*b[i];

对于大型阵列,性能存在显着差异。据我所知,当使用 STL vector 完成此类 vector 操作时,前者已完成。

提前感谢您的回答!

最佳答案

icc 12.1 中的数组符号生成了临时文件,因为这是 Fortran 所做的,而且看起来更安全。然后我们发现,正如问题所述,临时对象会对性能产生很大影响。因此在 icc 13.0(和 public specification)中修改了数组符号,因此不会生成临时文件。

不生成临时对象符合 C++ 的“抽象与最小惩罚”的哲学,以及 C/C++ 不为结构分配生成临时对象的事实。

另见我的幻灯片 33 ISC 2012 tutorial .

关于c - 英特尔数组符号 vector 运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com