Encontrando a largura de banda de memória de cada núcleo do meu processador

1

Oi eu estou aprendendo PETSc (um software para resolver numericamente paralelamente o PDES) e eu vim esta passagem no FAQ

É necessário alto desempenho de memória por CPU. Cada CPU (core em sistemas multi-core) precisa ter sua própria banda de memória com aproximadamente 2 ou mais gigabytes / segundo . Por exemplo, os "PCs" de processador duplo padrão não fornecerão melhor desempenho quando o segundo processador for usado, ou seja, você não verá uma aceleração ao usar o segundo processador. Isso ocorre porque a velocidade de cálculos de matrizes esparsas é quase totalmente determinada pela velocidade da memória, não pela velocidade da CPU

Estou usando sistemas Debian Linux e Ubuntu Linux nos meus computadores. Como faço para descobrir a largura de banda de memória em Gb / s do meu cpu? Existe algum comando linux para isso.

    
por smilingbuddha 30.01.2013 / 11:17

2 respostas

2

Existe um benchmark de largura de banda de memória disponível para Linux. É open source e funciona para o X86 e o Arm.

Ele fornecerá desempenho bruto para sua memória, bem como desempenho do sistema com memória. Mas isso não lhe dará uma largura de banda em tempo real.

Há também uma ferramenta de memtop . É mais sobre o uso do que a largura de banda. Você pode usá-lo para monitorar seu sistema enquanto o PETSc é executado para ver quanta largura de banda é usada.

Há também um programa para ler os contadores de desempenho da CPU , que pode ser usado em combinação com falhas de página.

E, finalmente, você pode sempre tentar executar o PETSc. Se o desempenho dobra ao usar dois núcleos, então você tinha largura de banda de sobra. Repita até que a velocidade aumente a parada. Não é a maneira mais elegante, mas bastante possível a melhor solução prática.

    
por 30.01.2013 / 11:42
1

A maneira normal de falar sobre largura de banda de memória é usando o benchmark Stream, que está disponível em versões com threads. Existe uma estreita relação entre a largura de banda teórica (número de canais * largura * relógio) para um dado sistema - isto é conveniente saber, já que é fácil calcular.

sys    memory                      BW*   stream  stream/core
R      2s x 2ch x PC3200  (numa)   12.8  6.5     3.2
S      2s   2ch x pc5400  (uma)    10.8  6.1     .76
O      2s x 4ch x pc10660 (numa)   85    51      2.1

Máquinas modernas, especialmente desktops, tendem a fornecer mais do que esses sistemas de servidor mais antigos. Os números acima são todos compilados e não controlados. Stream runs - sites entusiastas tendem a reportar números de pseudo-Stream sintonizados baseados em Windows que se aproximam dos valores teóricos do hardware. Eu não usaria valores do Memtest86, já que é um testador de padrão de RAM, não é realmente um benchmark.

Além disso, em geral, os códigos numéricos podem usar o bloqueio de forma lucrativa para atenuar sua dependência da largura de banda de memória pura. o comentário do PETSc implica que eles não estão bloqueando, o que é lamentável, já que a memória não foi escalonada com o onchip FLOPS.

    
por 14.06.2013 / 22:39