[C++程序设计语言] 并行计算中关于vector的一个奇怪的问题

发信人: hyperLee (东哥de征途~~风雨无阻), 信区: CPlusPlus
标 题: 并行计算中关于vector的一个奇怪的问题
发信站: 水木社区 (Mon Apr 23 23:14:42 2018), 站内

有个大对象A(每个对象占96Byte内存),放在vector容器中,大概30万个。
vector<A> Aarray;
要对这个对象的某个成员值(例如Aarray[i].mb) 进行一些算术操作并进行累加,现在诡异的事情来了。

串行执行一遍,然后用MPI 的2进程并行执行一遍,发现这个循环花费的时间居然没有减半。而是0.8倍左右,根本不是2倍的关系,也就是说并行并没有提高多少效率。

后来我发现就是Aarray[i].mb在捣鬼。 如果我把这个Aarray[i].mb用常数代替,那么串行和并行的时间关系是正常的。

反复开启、关闭了好几遍,确认了这个现象。有点疑惑,访问个vector有什么特殊的,导致vector容量减半之后累加时间还不减半的?
--

※ 来源:·水木社区 http://newsmth.net·[FROM: 122.71.232.*]


from 水木社区 电脑技术区十大热门话题 https://ift.tt/2HIidQB
via IFTTT

评论

此博客中的热门博文

丰田将在 2019 东京车展上展出一台超迷你的都市型电动车

[数字家庭] [原创]北京联通IPTV的完美方案

英特尔将推出更多支持 e-SIM 的 modem