Otimizando a compilação c ++ para uma máquina específica

3

Estou programando um código para simular uma membrana que será executada no cluster de computação (nó único). Eu quero otimizar o código para essa máquina. Eu usei o -optimize, -O3 e -march = core2.

Como posso saber se posso melhorar o fator de marcha e há alguma outra coisa que eu possa fazer para melhorar isso?

obrigado

    
por Yotam 27.09.2011 / 09:02

3 respostas

7

Use -mtune . -march é usado para determinar o conjunto de instruções permitido, enquanto -mtune deve ser usado para ajustar o desempenho do código (como sempre, consulte man gcc ). Dependendo do tipo de CPU preciso, você também pode considerar valores diferentes de core2 . E se você usar uma versão recente do GCC (pelo menos 4.4 , eu acho), talvez seja melhor usar native .

    
por 27.09.2011 / 10:46
1

A melhor coisa é ler o manual do seu compilador e ver as opções de otimização. Note que alguma otimização não lhe dará muito, então você deve testar seu código depois que ele foi compilado. Observe que você pode perceber erros no código, dependendo das opções escolhidas.

Se você usar o icc, pode ter certeza de algumas opções #pragma no código para paralelizar alguns loops.

    
por 27.09.2011 / 11:16
1

Se seus cálculos envolverem muitos vetores, você pode considerar a Biblioteca de Matemática da Intel . Um projeto para o qual estou trabalhando usa-o e eles juram por ele.

    
por 27.09.2011 / 13:24

Tags