为何增加了ipa-struct-reorg的gcc for openEuler在SPEC-CPU2006 462.libquantum表现并不佳?
收藏回复举报
为何增加了ipa-struct-reorg的gcc for openEuler在SPEC-CPU2006 462.libquantum表现并不佳?
t('forum.solved') 已解决
新人帖
发表于2023-09-11 20:22:48
0 查看

各位开发者你们好:

我最近查看gcc for openEuler的相关文档发现,ipa-struct-reorg是被实现且集成在gcc里的,且其优化效果在SPEC CPU2006的mcf上似乎表现很好(我并未验证)。通过查看源码也发现,其能针对只有两个field的结构体进行拆分,将hot field和cold field分开,进而提高cache命中率,对内存也更加友好。但是SPEC CPU2006的libquantum测试样例也同样满足这一点,其核心数据结构如下,但其优化效果却几乎没有

struct quantum_reg_node_struct {
    float _Complex amplitude; /* alpha_j */
    MAX_UNSIGNED state;       /* j */
};

libquantum中最耗时的三个核心函数:

  • quantum_toffli()
  • quantum_sigma_x()
  • quantum_cnot()

这三个函数的特点也是只访问state这一成员变量,而amplitude则几乎不被访问。所以这个情况下的优化效果也应该很好才对。但通过实际测试发现和原本的未修改的gcc对比,优化效果几乎没有。所以想请问下发生这种情况的原因,以及有什么好的解决方案吗?

我测试用的命令和环境如下:

# gcc: 12.3.0 x86-64 Ubuntu 22.04
# 单核:
# origin gcc
gcc -O3 -flto
# gcc for openEuler
gcc -O3 -flto-partition=one -flto -fipa-struct-reorg=3

# 多核:
# origin gcc
gcc -O3 -flto -fparallelize-loops=24
# gcc for openEuler
gcc -O3 -flto-partition=one -flto -fipa-struct-reorg=3 -fparallelize-loops=24

本帖最后由 匿名用户2023/11/23 11:31:02 编辑

我要发帖子