我正在编写一段代码来模拟将在计算集群(单节点)上运行的膜。我想优化该机器的代码。我使用了-optimize、-O3 和-march=core2。
我如何知道我是否可以提高行军系数以及是否可以采取其他措施来改善这一点?
谢谢
答案1
使用-mtune
。-march
用于确定允许的指令集,而-mtune
用于调整代码的性能(一如既往,请参阅 参考资料man gcc
)。根据具体的 CPU 类型,您还可以考虑 以外的值core2
。如果您使用最新的 GCC 版本(至少4.4
,我认为),您最好使用native
它。
答案2
最好的办法是阅读编译器的手册并查看优化选项。请注意,某些优化不会给您带来太多好处,因此您必须在编译代码后对其进行测试。请注意,您可能会注意到代码中的错误,具体取决于您选择的选项。
如果您使用 icc,您可以确保代码中的一些 #pragma 选项来并行化某些循环。
答案3
如果您的计算涉及许多向量,您可能需要考虑英特尔数学库。我正在进行的一个工作项目使用了它,并且他们非常信赖它。