Durante a otimização da compilação, esta pergunta sobre os melhores palpites para o gcc
parâmetro do compilador gnu --param l2-cache-size=
? (o padrão é o número para o tamanho do bloco kB)
. Quais são os valores recomendáveis para cluster de núcleo de CPU com cache L2 compartilhado, clusters de CPU com cache L2 unido em uma única MMU (unidade de gerenciamento de memória) e núcleos de CPU com cache L2 privado para cada núcleo único?
Obter tamanhos de cache L2¹ em distribuições Linux pode ser feito por comandos de console como:
cat /sys/devices/system/cpu/cpu0/cache/index2/size
(para cpu0 em sistema multicore, por exemplo)
find /sys/devices/system/cpu/*/cache/index*/size -print -exec cat {} \;
lshw | grep -B 11 -C 11 -e level=2
dmidecode -t cache
lstopo-no-graphics
Isso é específico o suficiente para solicitar suporte na lista de discussão do gcc ou há documentação mais ampla disponível para sinalizadores de compilador relacionados ao cache L2?
THX
1) breve resumo de Como encontrar o tamanho do cache L2 no Linux?
Esta questão foi levantada no relatório de bug
Bug 87444: 'gcc -marc=native' define o tamanho do cache L2 igual ao tamanho do cache L3 na CPU i7 e i5 .
Parece que o parâmetro
l2-cache-size
não se refere necessariamente ao cache L2. Na verdade, ele é selecionado dinamicamente porgcc
para ser igual ao tamanho do cache L3 e só é igual ao cache L2 se não houver cache L3.Um desenvolvedor comenta que realmente deveria ter sido renomeado para
last-level-cache
. Portanto, se houver um cache L4,gcc
usará esse tamanho.Não acho que seja uma boa ideia alterar esse parâmetro. Mas caso o faça, observe-se que esse parâmetro é usado apenas para algumas pequenas heurísticas e parece relativamente sem importância pelo tom do comentário.