Si può fare un supercomputer semplicemente collegando i PC con cavi crossover ethernet?

Un supercomputer dovrebbe avere due proprietà:

  1. Può gestire problemi più grandi di un computer ordinario
  2. Le prestazioni possono scalare all'aumentare del budget

Anche pochi PC legati insieme hanno probabilmente la prima proprietà. Tuttavia, scalare significherebbe permettere ad un numero ragionevolmente grande di PC di essere interconnessi.

Non è pratico avere più di circa cinque interfacce Ethernet in ogni PC, così la domanda diventa "quante macchine si possono interconnettere?" Beh, se si collega letteralmente ogni PC ad ogni altro PC, si ha quella che chiamiamo una rete diretta o completamente connessa... e le cinque interfacce per macchina significherebbe scalare fino a non più di sei PC:

main-qimg-52d8039eca35cb8cadc9ad464eb1294c.webp

Nel febbraio 1994, quando il mio gruppo di ricerca costruì il primo supercomputer cluster di PC Linux al mondo, quattro PC collegati via Ethernet si qualificavano davvero come supercomputer parallelo. Tuttavia, è passato molto tempo da quando quattro - o anche sei - PC erano abbastanza scalabili da giustificare la definizione di un sistema come supercomputer.

Ovviamente, ci sono altre topologie (schemi di cablaggio) che possono scalare usando solo poche interfacce per PC e cavi crossover. Per esempio, una maglia toroidale 1D - un anello - può scalare per connettere molte macchine:

main-qimg-96051720371626235393fedd03bafaa6.webp

La fregatura è che otterrete prestazioni pessime perché ci vogliono più salti per andare da una macchina alla maggior parte delle altre e il traffico tra le varie coppie dovrebbe condividere molti degli stessi percorsi dei cavi. Tecnicamente, avresti un'alta latenza (ritardo per inviare un messaggio) e una bassa larghezza di banda di bisezione (larghezza di banda tra coppie di PC quando tutti i PC stanno comunicando). Puoi fare meglio con una topologia come un mesh 2D:

main-qimg-944fad6cf19c11968926890373621e8a.webp

Il problema con queste topologie di soli cavi incrociati è che la latenza e la larghezza di banda di bisezione non sono ancora molto buone quando si scala a sistemi più grandi.

Quindi, la risposta moderna è di usare switch nella costruzione della topologia di rete. Uno switch permette a tutte le macchine connesse ad esso di parlare simultaneamente con una latenza minima e un'elevata larghezza di banda in bisezione. Il grande numero di porte su uno switch significa che possono essere costruite topologie che possono coprire un numero molto più grande di PC con bassa latenza e alta larghezza di banda in bisezione.

Molte topologie di rete switch sono possibili. Per esempio, ecco una piccola Flat Neighborhood Network (FNN) che può collegare otto PC usando solo tre interfacce per PC e switch con solo quattro porte ciascuno:

main-qimg-9665e9e7e99582837b6c447aead8b62f.webp

Utilizzando questo tipo di rete con commodity Ethernet switch (che comunemente hanno 32 o più porte ciascuno) si può scalare fino ad almeno centinaia di PC pur dando una larghezza di banda di bisezione molto alta e una latenza di un solo switch hop tra qualsiasi coppia di PC. Altre topologie, come Sparse Flat Neighborhood Networks (SFNNs) permettono di scalare a molte migliaia di PC mantenendo prestazioni di rete simili. Per esempio, KASY0 è stato il primo supercomputer SFNN al mondo, e ha usato switch Ethernet a 24 porte per costruire una rete ad alte prestazioni che interconnettesse 128 nodi PC:

main-qimg-1bbdb3bf47cd00de09c81f65bbff7394

KASY0 era una macchina piuttosto grande quando il mio gruppo di ricerca l'ha costruita nel 2003. I più grandi supercomputer ora hanno letteralmente milioni di nodi... ecco perché collegare direttamente sei PC non è più un vero supercomputing. 😉