Com augmento el nombre de processadors?

Abans de començar a fer la producció s' executa amb un codi paral· lelitzat en els clústers HPC, primer haureu de trobar el nombre òptim de nodes, tasques, CPU-cors per tasca i en alguns casos el nombre de GPUs. Aquesta pàgina demostra com dur a terme una pàgina Anàlisi d' escalat per a trobar els valors òptims d' aquests paràmetres per a diferents tipus de codis paral· lel.

Quan s' envia un treball al planificador de Slurm, el treball primer espera a la cua abans d' executar- se en els nodes calculables. La quantitat de temps gastat a la cua s' anomena l' hora de la cua. La quantitat de temps que cal per a la feina a executar en els nodes calculables s'anomena el temps d' execució.

La figura de sota mostra que el temps de la cua s' incrementa amb recursos creixents (p. ex., CPU-cos) mentre que el temps d' execució disminueix amb els recursos increments. Un hauria de provar de trobar el conjunt òptim de recursos que minimitza l' hora de "l' hora a la solució" que és la suma de la cua i els temps d' execució. Una regla simple és escollir el conjunt més petit de recursos que donen una velocitat raonable sobre el cas de línia base.

Tingueu present que la informació d' aquesta pàgina només s' aplica als codis paral· lel. Si el vostre codi no està paral· lelalitzat, llavors l' ús de més recursos no millorarà la seva actuació. En canvi, fer-ho serà perdre recursos i reduirà la prioritat del vostre proper treball.

No hauríeu d' intentar calcular explícitament el temps de solució. Això és perquè l' hora de la cua per a un treball donat varia àmpliament depenent del departament acadèmic, el valor justhare, el QOS de la feina, l'hora de l'any i així successivament. En comptes d' intentar estimar l' hora de la cua, simplement tingueu present que, en general, els recursos més que demaneu, més temps el vostre treball es passarà a la cua abans d' executar- lo. Els temps d' execució són fàcils de mesurar i se'ls informa com a "Job Wall-time" en el Informe de correu Slurm D'un treball completat.

Tingueu en compte que quan es fa una anàlisi d' escalat no necessiteu executar el codi durant hores per obtenir dades significatives. No obstant això, cal que l'executeu prou temps com que les operacions d'inici d'una sola vegada es poden ignorar. Si cal afegir declaracions de temps en el codi de manera que tan sols es mesuran les seccions rellevants. Tingueu en compte que us hauríeu d' assegurar que executeu almenys desenes de segons per a que les operacions inevitables del sistema siguin descuidats.

A continuació demostrem com dur un anàlisi d' escalat pels diferents tipus de codis paral·lels. L'anàlisi d' escalat ens permet estimar els valors òptims de les directives de Slurm. Tal com acaba d' explicar, no es pren l' hora de la cua al compte quan es realitza una anàlisi d' escalat.

Usar més d' una CPU per a un codi sèrie no disminuirà el temps d' execució, però perdrà recursos i us deixarà amb una prioritat més baixa per al vostre següent treball. Mireu una mostra Script de l' Slurm Per una feina en sèrie.

Alguns programari com els rutins d'àlgebra lineals en nombrePy i MATLAB són capaços d'utilitzar múltiples CPU-cores mitjançant biblioteques que s'han escrit usant models paral·lels compartits com OpenMP, Intel·ligència conversant blocs (TBB) o pthreads. Per a codis multifils purs, només es pot usar un únic node i una única tasca (p. ex., nodes=1 i ntask=1) i s' buscarà el valor òptim de cpus- tosk:

# SBhuming --nodes=1
# SBhuming --ntsks=1
# SBpping -- cpus- ask=

Mireu una mostra Script de l' Slurm per un treball multifil. Per a trobar el valor òptim de Un ha de dirigir una anàlisi d' escalat on el " cpus-task " és variat i l'hora d' execució del codi és gravada per a cada elecció:

A la taula de dalt, el temps de l' execució és quant de temps va costar el treball executar (p. ex., rellotge de paret) i el Relació de velocitat és el temps d' execució en sèrie (cpus- for- tosk=1) dividit per l' hora d' execució. La eficiència paral· leles Es mesura relativa al cas de sèrie. És a dir, per a cpus-per-task=2, tenim 4 2. 0 / (2. 0 × 2) = 0. 95. L'eficiència paral·lela és aproximadament igual a "CPU Efificiència" en Informes de correus del Slurm .

Les dades de la taula de dalt revelen dos punts de tecla:

  • El temps d' execució disminueix amb l' increment de números de CPU fins que s' usa cpus- tosk=32 quan el codi s' executa més lent que quan s' usen 16 nuclis. Això mostra que l' objectiu no és usar tants valors de CPU com sigui possible, sinó que en comptes de trobar el valor òptim.
  • El valor òptim de cpus- ask és de 2 4 o 8 L'eficiència paral·lel és massa baixa per considerar 16 o 32 punts de CPU.

Per a un codi multinode que usa el MPI, per exemple, voldreu variar el nombre de nodes i els ntasks-denode. Només usa més d' 1 node si l' eficiència paral· lel és molt alta quan s' usa un node individual. Per minimitzar el temps d'acabar, escolliu el conjunt més petit de les directives del Slurm que dóna una velocitat raonable. Per a un codi MPI pur que no usa fils de fil (p. ex., OpenMP), cpus- to- tosk=1 i l' objectiu és trobar els valors òptims de nodes i ntasks- pernode:

Mireu un exemple complet d' un Script de l' Slurm Per una feina de la MPD. A continuació hi ha una anàlisi d' escalat de mostres per a un codi MEI paral· leles:

Veiem que el codi funciona molt bé fins que s'utilitzen quatre nodes o 128 còrres de CPU. Una bona elecció és probablement usar dos nodes on l'eficiència paral· lela encara és 90%. Mireu una mostra Script de l' Slurm Per a un codi MPI pur.

Alguns codis s'aprofiten de l'el·lelisme compartit i distribuït (p. ex., OpenMP i MPI). En aquests casos haureu de variar el nombre de nodes, notasks-per-node i cpus-task. Construeix una taula com a sobre excepte incloure una nova columna per a la màscara cpus. Noteu que quan es prenen nodes sencers, el producte de notasks-node i de cpus-task hauria de ser igual al total del node de la CPU. Usa l' ordre "nodes" per a trobar el nombre total de paquets de CPU per a un cúmul donat.

Abans de considerar múltiples GPUs, primer hauria de demostrar l'alta utilització de la GPU quan s' utilitza una única GPU. Veure el Computació en la GPU Pàgina per aprendre a mesurar i millorar l'ús. Si l' ús de la GPU és prou alt per al cas de la GPU única, hauríeu d' explorar usant múltiples GPUs fent un anàlisi d' escalat com a la taula de sota:

L' anàlisi d' escalat més amunt revela que el codi no funciona bé quan s' usen múltiples GPUs. És a dir, no s'observa l' escalat lineal. Per exemple, l'actuació amb dues GPUs no és el doble de ràpid que el cas amb un. Tingueu present que el temps de la cua s' incrementa amb recursos creixents, pot ser que no tingui sentit utilitzar dues GPUs per aquest codi específic.

Fixeu-vos que no hem mencionat el nombre d'estudis de CPU que s'utilitzen a l'anàlisi de dalt. Això és degut al poder computacional més gran d'una GPU en comparació amb una CPU multicore. No obstant això, sovint és crític per a l'actuació d'un codi actiu de la GPU que una o més CPU es pot aprofitar completament. Per exemple, per als codis d'aprenentatge profunds de TensorFlow i PyToch, només es pot aconseguir un rendiment òptim quan s' usen múltiples paquets de CPU per mantenir la GPU ocupada enviant les dades.

Molts codis científics utilitzen OpenMP, MPI i GPU. En aquest cas, un busca els valors òptims per als nodes, notask-per-node, cpus-task i gres.

Artículos Relacionados:

- Processador -

Esta web usa cookies, puedes ver la política de cookies, aquí -
Política de cookies +