Lavoro Python su cluster slurm, nodi vs core
Ho una domanda estremamente semplice, alla quale in qualche modo non sono mai riuscita a trovare una risposta. Supponiamo che io abbia accesso a un cluster che esegue slurm e che debba eseguire un lavoro Python sul cluster. Supponiamo che il mio codice non sia stato scritto per supportare il multiprocessing. Ho qualche motivo per richiedere più core? O dovrei quindi attenermi a 1 nodo e 1 core?
Al contrario, se volessi eseguire 5 volte lo stesso script (ad esempio con variabili di input diverse), c'è qualche differenza tra la richiesta di 1 nodo e l'assegnazione di 1 core a ciascun lavoro o la richiesta di 5 nodi con 1 core ciascuno?
Risposte
Se il tuo script python non utilizza più thread, allora sì, dovresti attenersi a un'attività ( -n1) con una CPU ( -c1) su un nodo ( -N1). Non è necessario specificarlo poiché è comunque l'impostazione predefinita. Se richiedi più risorse, verranno semplicemente sprecate, poiché non le usi.
Tuttavia: alcune librerie python consentono di eseguire calcoli multithread senza la necessità di specificarle esplicitamente, quindi se esegui alcuni calcoli numpy, potresti trarre vantaggio da più core .
Al contrario, se volessi eseguire 5 volte lo stesso script (ad esempio con variabili di input diverse), c'è qualche differenza tra la richiesta di 1 nodo e l'assegnazione di 1 core a ciascun lavoro o la richiesta di 5 nodi con 1 core ciascuno?
Sì, c'è: se chiedi a Slurm 5 nodi con 1 attività per nodo, dovrà attendere che 5 nodi abbiano spazio per un'attività. Anche se ad esempio un nodo con 20 CPU è completamente vuoto, il tuo lavoro non verrà eseguito, poiché hai esplicitamente richiesto 5 nodi. Quindi consiglierei di iniziare 5 lavori con -n1.