社区
英特尔边缘计算技术
帖子详情
长数组相加如何优化?
bigbigknife
2008-11-20 01:28:12
加精
代码一:
for (int i=0; i<220000; i++)
{
dst[i] = src1[i] + src2[2];
}
代码二:
for (int i=0; i<220000; i++)
{
dst[i] += src[i];
}
这两段代码分别嵌在我的OpenMP并行循环代码中,代码二比代码一快将近10倍!
估计是2级Cache命中率的问题。试了MKL的vdAdd,不起作用。
有办法提高代码一的效率吗?
...全文
858
28
打赏
收藏
长数组相加如何优化?
代码一: for (int i=0; i<220000; i++) { dst[i] = src1[i] + src2[2]; } 代码二: for (int i=0; i<220000; i++) { dst[i] += src[i]; } 这两段代码分别嵌在我的OpenMP并行循环代码中,代码二比代码一快将近10倍! 估计是2级Cache命中率的问题。试了MKL的vdAdd,不起作用。 有办法提高代码一的效率吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bigbigknife
2008-12-06
打赏
举报
回复
如果你使用VC2008编译x64程序,在项目属性>配置属性>C/C++>代码生成> 有个“启用增强指令集”选项,
它有三个选项:
(1)未设置;
(2)流式处理 SIMD 扩展(/arch:SSE);
(3)流式处理 SIMD 扩展 2 (/arch:SSE2)。
比如,我选(3),则编译的时候输出:
cl: 命令行 warning D9002 :忽略未知选项“/arch:SSE2”
用Intel C++ 10.1也有相应的选项,如果选上也是不起作用的。
我指的是这个选项。
QxT,QxP等是选择对应的CPU。当然是要选的。
[Quote=引用 27 楼 intel_iclifort 的回复:]
引用 25 楼 bigbigknife 的回复:
支持也是默认支持,编译器里的选项不支持。
如何生成, 请看置顶贴里的文章 "英特尔编译器中针对英特尔处理器优化的编译器选项" http://topic.csdn.net/u/20080402/15/2bd8d20e-c887-46a2-9afd-5fd5b75474aa.html
讲得非常详细了.
引用 25 楼 bigbigknife 的回复:
你如果硬要选,要不给你报错,要不告诉你忽略掉。
你用了什么选项, 报错信息贴出来看看吧
[/Quote]
bigbigknife
2008-12-06
打赏
举报
回复
如果你使用VC2008编译x64程序,在项目属性>配置属性>C/C++>代码生成> 有个“启用增强指令集”选项,
它有三个选项:
(1)未设置;
(2)流式处理 SIMD 扩展(/arch:SSE);
(3)流式处理 SIMD 扩展 2 (/arch:SSE2)。
比如,我选(3),则编译的时候输出:
cl: 命令行 warning D9002 :忽略未知选项“/arch:SSE2”
用Intel C++ 10.1也有相应的选项,如果选上也是不起作用的。
我指的是这个选项。
QxT,QxP等是选择对应的CPU。当然是要选的。
[Quote=引用 27 楼 intel_iclifort 的回复:]
引用 25 楼 bigbigknife 的回复:
支持也是默认支持,编译器里的选项不支持。
如何生成, 请看置顶贴里的文章 "英特尔编译器中针对英特尔处理器优化的编译器选项" http://topic.csdn.net/u/20080402/15/2bd8d20e-c887-46a2-9afd-5fd5b75474aa.html
讲得非常详细了.
引用 25 楼 bigbigknife 的回复:
你如果硬要选,要不给你报错,要不告诉你忽略掉。
你用了什么选项, 报错信息贴出来看看吧
[/Quote]
intel_iclifort
2008-12-06
打赏
举报
回复
[Quote=引用 25 楼 bigbigknife 的回复:]
支持也是默认支持,
编译器里的选项不支持
。
[/Quote]
如何生成, 请看置顶贴里的文章 "英特尔编译器中针对英特尔处理器优化的编译器选项"
http://topic.csdn.net/u/20080402/15/2bd8d20e-c887-46a2-9afd-5fd5b75474aa.html
讲得非常详细了.
[Quote=引用 25 楼 bigbigknife 的回复:]
你如果硬要选,要不给你报错,要不告诉你忽略掉。
[/Quote]
你用了什么选项, 报错信息贴出来看看吧
bigbigknife
2008-12-06
打赏
举报
回复
这个简单的办法,俺早就试了。没用啊!
[Quote=引用 7 楼 iwillalwaysloveyou 的回复:]
memcpy(dst,src1,sizeof(dst[0]) * 220000);
for (int i=0; i <220000; i++)
{
dst[i] += src2[2];
}
[/Quote]
bigbigknife
2008-12-06
打赏
举报
回复
支持也是默认支持,编译器里的选项不支持。
你如果硬要选,要不给你报错,要不告诉你忽略掉。
[Quote=引用 6 楼 intel_iclifort 的回复:]
引用 5 楼 bigbigknife 的回复:
我用的是x64编程,SSE选项都不支持。
只要是支持Intel64技术(以前叫EM64T)的Intel处理器, 都支持SSE3指令
[/Quote]
zw19870621
2008-12-01
打赏
举报
回复
哦 这样啊
aero_boy
2008-11-30
打赏
举报
回复
你的数组是什么类型的啊, 如果是int什么的, 代码2不可能比代码1快多少
qq675927952
2008-11-30
打赏
举报
回复
up
itymx
2008-11-29
打赏
举报
回复
顶 顶 顶 顶 顶 顶 顶 顶 顶 建了个群 欢迎加入 群号:52993264
ph215405357
2008-11-27
打赏
举报
回复
jf
否认
2008-11-27
打赏
举报
回复
public class test
{
public String str(String str,int i)
{
String showstr="";
for(int j=1;j<str.length();j++)
{
int z=str.substring(0, j).getBytes().length;
if(z>=i)
{
return str.substring(0, j);
}
else
{
showstr+=str.substring(j-1, j);
}
}
return showstr;
}
public static void main(String args[])
{
String str="我是abc中国人";
int in=8;
test t=new test();
System.out.println(t.str(str,in));
}
}
yao_1978
2008-11-27
打赏
举报
回复
=================================
北京思源计算机培训中心
(
http://www.ciitc.com
)
xiaosanaiqinga
2008-11-26
打赏
举报
回复
继续马克
yueyebohe
2008-11-26
打赏
举报
回复
mark,学习
derelictangel
2008-11-26
打赏
举报
回复
MARK
PS:
我的目标是 ---->
^_^
bubsy
2008-11-25
打赏
举报
回复
学习中!
NANCYBOY
2008-11-25
打赏
举报
回复
我 用 的 是 WIN32编码
aimeast
2008-11-25
打赏
举报
回复
学习
xiaopoy
2008-11-25
打赏
举报
回复
操作2个数组自然比操作3个数组快多了。
试试操作1个结构数组
for (int i = 0; i<220000; ++i)
{
array[i].dst += array[i].src;
}
QQBufferedReader
2008-11-25
打赏
举报
回复
有没有搞错,一个程序分这么段发?
加载更多回复(8)
PHP开发中如何实现
数组
相加
操作?详解数值
数组
相加
方法
当我们需要对两个
数组
的值进行
相加
操作时,其实有多种情况需要考虑,每种情况都...一、数值
数组
相加
1. 首先,咱来看最简单的情况,两个
数组
的键相同且都是数值索引
数组
,那咱就可以使用循环来逐个
相加
。先定义两个
数组
两个
数组
相加
的c语言程序,怎样实现C语言 连续输入的几个数(同一
数组
)
相加
啊?...
怎样实现C语言 连续输入的几个数(同一
数组
)
相加
啊?答案:6信息版本:手机版解决时间 2019-10-02 03:32已解决2019-10-01 03:31怎样实现C语言 连续输入的几个数(同一
数组
)
相加
啊?最佳答案2019-10-01 04:19#...
两个
数组
相加
两个
数组
相加
分为两种情况:(1)a,b两个
数组
长
度相等 (2)a,b两个
数组
长
度不相等 (1)a,b两个
长
度相等时,
数组
c的
长
度等于
数组
a的
长
度或者
数组
b的
长
度 (2)a,b两个
长
度不相等是,c的
长
度要根据实际情况进行分配 ...
java
数组
如何
相加
_在java中怎么表示一个
数组
等于另外两个
数组
相加
之后?
满意答案精芯IT2013.07.22采纳率:58%等级:12已帮助:6212人public class sum {public static boolean isst(int[] s1,int[] s2,int[] s3){if(s1.length==s2.length&&s1.length==s3.length){for(int i=0;...
java两
数组
相加
(合并)
java两
数组
相加
(合并)
英特尔边缘计算技术
568
社区成员
7,024
社区内容
发帖
与我相关
我的任务
英特尔边缘计算技术
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
复制链接
扫一扫
分享
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章