|
|
|
|
移动端

3.7 数据并行:SIMD向量化

《高性能并行珠玑:多核和众核编程方法》第3章HBM上的SIMD与并发优化,本书中展示了如何在处理器和协处理器上进行并行处理和编程——展示了更好利用Intel Xeon Phi协处理器和Intel Xeon 处理器或其他多核处理器的系统计算潜力的最有效的方法。本节为大家介绍数据并行:SIMD向量化。

作者:张云泉 等译来源:机械工业出版社|2017-11-14 18:16

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

3.7 数据并行:SIMD向量化

本节将介绍我们在HBM模型上做的SIMD向量化工作。图3-12中代码段展示了通过循环构成整个HBM模型的过程。

 

我们已经实现了最外层循环的OpenMP优化,这就意味着循环中将不存在数据依赖。因此我们也可以使用SIMD向量化最外层iw循环。然而,对k循环做跨度减1次访问且同时不在iw循环中使用的局限性使得该想法难以实施。现在的SIMD硬件在真正意义上还不能支持非同步并行读/写访问。例如,在VEX指令集上实现的gather和scatter操作可以被视为作用于缓存行上数据元素时的一系列加载/存储的缩写符号。根据Hofmann等人(2014)的调查,在跨多个缓存行的向量上使用gather操作的执行效率较低,因此我们在垂直循环上使用普通的向量加载指令会获得不错的效果,因为这里使用的是跨度减1模式。

这样做的目的是要确保所有的k循环能够很好地进行SIMD向量化并且这需要编译器把k循环当作跨度减1循环来处理。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

C#2005编程进阶与参考手册

本书非常详细而全面地介绍了C#程序设计语言。本书不是“5分钟学习C#”式的手册,也不是那种教您“照猫画虎”地创建一些与您的实际工作需要...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊