基于GCC编译器向量化的数据结构布局优化研究

2021-05-28 07:07:48朱广林赖庆宽何先波王博生陈燕生
绵阳师范学院学报 2021年5期
关键词:指令优化结构

朱广林,赖庆宽,何先波,王博生,陈燕生

(西华师范大学计算机学院,四川南充 637009)

0 引言

为了充分利用处理器的并行潜力,现代CPU大多已提供向量处理单元(Vector Processing Units,VPUs)以允许在单条指令中对多个数据执行操作.GCC、LLVM、ICC和AOCC等主流编译器中也提供了编译器的自动向量化(Compiler Automatic Vectorization,CAV)支持,它们能够分析应用程序中的循环,自动找到使用SIMD指令的机会[1].通过一个向量指令操作完成对多个数据元素的同时运算[2,3],可以在与标量运算相同的时间内执行更多的操作,是提高程序性能的重要途径之一.利用SIMD指令最常用的方法是编译器的自动向量化,当编译器不能对代码进行向量化时,可嵌入向量化的汇编代码,或调用一些高级的库文件,如Boost.SIMD[4]等.

编译器能否准确高效地进行自动向量化对程序整体的性能至关重要.编译器根据编译时得到的有效信息对程序进行向量化评估,以决定采用何种指令集[5].商业编译器AOCC和ICC在O3及相关优化组合下可以有效地挖掘和使用SIMD指令,做规整的向量化,但GCC编译器的自动向量化优化存在一些保守限制,因此编译器的自动向量化技术仍有重要的研究价值.

本文主要对现代x86多核处理器中, GCC编译器的数据结构布局进行优化,将代码热区域中进行数据结构对齐,亦或是重组,拆分之后的结构体进行数组结构体数组(AoSoA)的布局转换优化,通过改善内存布局方式,提高向量化优化能力.通过分析优化前后代码中向量指令的数量和功能,最后在AMD平台上……

登录APP查看全文

猜你喜欢
指令优化结构
听我指令:大催眠术
超限高层建筑结构设计与优化思考
房地产导刊(2022年5期)2022-06-01 06:20:14
《形而上学》△卷的结构和位置
哲学评论(2021年2期)2021-08-22 01:53:34
民用建筑防烟排烟设计优化探讨
关于优化消防安全告知承诺的一些思考
一道优化题的几何解法
论结构
中华诗词(2019年7期)2019-11-25 01:43:04
ARINC661显控指令快速验证方法
测控技术(2018年5期)2018-12-09 09:04:26
LED照明产品欧盟ErP指令要求解读
电子测试(2018年18期)2018-11-14 02:30:34
论《日出》的结构