gargalo de largura de banda de memória

gargalo de largura de banda de memória

Eu tenho um programa python pandas. Quando executo no AWS Ec2 com 8 núcleos. Consegui 100% de utilização da CPU e o programa foi concluído em 8 minutos. Então, se eu usar 16 núcleos, só consigo 50% de utilização da CPU e o programa ainda termina em 8 minutos. Suspeito que isso atinja um gargalo na largura de banda da memória, então selecionei a instância X1,16xlarge, que tem 64 núcleos e reivindicou largura de banda de memória de 300 GB/s. No entanto, isso não ajudou. o programa usou uma pequena porcentagem dos 64 núcleos e não terminou mesmo depois de 10 minutos. instância ec2 X1

Alguma idéia do que está acontecendo?

(aliás, o mesmo programa rodando na minha antiga torre de desktop com 4 núcleos terminou em 16 minutos)

mais detalhes: o programa usa GridSearchCV que então usajoblibpara executar multiprocessamento em paralelo. O número de processos é sempre igual ao número de núcleos no sistema.

Responder1

Python possui um "bloqueio global de intérprete" que limita sua capacidade de utilizar vários threads com eficiência. Umrespondeuneste site que você deve considerar escrever funções críticas de tempo em C/C++.

Se possível, considere dividir sua análise em partes menores e depois executá-las como processos separados para evitar o problema de bloqueio global do intérprete.

informação relacionada