在使用zcc编译工具链去编译whestone来测试处理器的浮点能力时候,如何选择具体的编译优化参数。
加-O3 -ffast-math -flto就可以了
使用这个选项编译后,产生的指令条数比gcc也多,分数也低不少,这个会是什么原因引起的
使用的march是什么呢,可以在有fd扩展的情况下再测看看
可以提供gcc/zcc生成elf分析一下,发送到邮箱 zhengpeng.zhao@terapines.com
已经将gcc15和zcc 4.1.6的elf程序发您了,有劳您帮忙分析一下了,感谢
请检查编译链接时的优化选项是否成功加入,目前看起来编译器的优化没有生效, riscv_sqrtf, dtime这种函数应该就几条指令,现在被翻译的很复杂并且没有被inline,而gcc的elf是inline的
检查了一下,确实优化选项没有成功加入。加入后表现还是不太理想,新的程序发您了,还得有劳您帮忙分析一下哈
还是发到了上午给的邮箱( zhengpeng.zhao@terapines.com )吗,好像没有接到邮件
确定gcc和zcc编译的是一个程序吗,看汇编似乎是不同的程序
是用一个工程使用两个工具链编译出的,工程我邮箱发您了,老师。
我好像没有收到邮件,还是使用之前的邮箱发送的吗
你使用双精度再测试一下,也就是在编译参数里定义一下DP那个宏。你虽然使用的arch是rv64gc但是测试时使用的是单精度浮点
添加宏后,分数有所提高,但是有些核心的跑分代码好像不在了,比如再这个N8测试的时候,没有看到sqrt这些操作对应的反汇编,4010d8和4010dc这两条指令感觉产生的也很诡异。dump和elf我发你邮箱,麻烦老师再帮忙看看
N8的sqrt/exp/log会被计算出来,所以会变成确定的值。重点可以关注一下其他没有被优化掉的测试。因为whetstone太老了,在不改benchmark的情况下很多计算都会被优化掉。
N3、N4、N7、N8指令数都是0,好像都被优化掉了,老师
是的,因为这几个测试的运算都太简单了,所以会直接被编译器计算出来,最终导致循环被消掉

