Perché gli algoritmi fanno schifo e i computer analogici sono il futuro

So che il titolo di questo articolo può sembrare leggermente provocatorio, ma è vero: Il calcolo algoritmico semplicemente non scala troppo bene quando si tratta di problemi che richiedono immense quantità di potenza di elaborazione.

Basta dare un’occhiata all’ultima Top500-list dei computer ad alte prestazioni. Attualmente, il supercomputer più potente è il Sunway TaihuLight al National Supercomputing Center di Wuxi, in Cina. Questo colosso fornisce un enorme 93 petaflop (un petaflop equivale a un quadrilione di operazioni in virgola mobile al secondo), che è davvero insondabile.

Supercomputer e consumo di energia

Tuttavia, una tale enorme potenza di elaborazione ha un costo. In questo caso richiede 10.649.600 unità di elaborazione, i cosiddetti core, che consumano 15.371 megawatt – una quantità di elettricità che potrebbe alimentare una piccola città di circa 16.000 abitanti sulla base di un consumo energetico medio pari a quello di San Francisco.

Se spostiamo la nostra attenzione dai supercomputer più potenti e ci concentriamo invece su quelli più efficienti dal punto di vista energetico, troviamo il sistema TSUBAME3.0 del Tokyo Institute of Technology in cima alla Green500-list. Fornisce 14,11 gigaflops/watt con un consumo energetico complessivo di “soli” 142 kilowatt richiesti dai suoi 36288 core. In termini di efficienza energetica, questo è circa 2 volte meglio di TaihuLight. Ma 142 kilowatt sono ancora un sacco di energia elettrica.

Ma non ci sono supercomputer che non richiedono così tanta energia per funzionare? In effetti ci sono: Il cervello umano è un grande esempio – la sua potenza di elaborazione è stimata in circa 38 petaflop, circa due quinti di quella di TaihuLight. Ma tutto ciò di cui ha bisogno per funzionare sono circa 20 watt di energia. Watt, non megawatt! E tuttavia esegue compiti che – almeno fino ad ora – nessuna macchina è mai stata in grado di eseguire.

“Non ci sono supercomputer che non richiedono tutta questa energia per funzionare? In effetti ci sono: Il cervello umano ne è un grande esempio”

Cosa causa questa differenza? Prima di tutto, il cervello è un computer specializzato, per così dire, mentre sistemi come TaihuLight e TSUBAME3.0 sono macchine molto più generiche, capaci di affrontare una grande varietà di problemi.

Macchine come queste sono programmate per mezzo di un algoritmo, un cosiddetto programma. Fondamentalmente si tratta di una sequenza di istruzioni che ogni processore esegue leggendole da un sottosistema di memoria, decodificando le istruzioni, recuperando gli operandi, eseguendo l’operazione richiesta, memorizzando i risultati ecc.

Un supercomputer economico: Il cervello umano

Tutte queste richieste di memoria richiedono una notevole quantità di energia e rallentano notevolmente le cose. Avere centinaia di migliaia di core individuali richiede anche un intricato tessuto di interconnessione per scambiare dati tra i core come richiesto, che aggiunge anche il tempo e la potenza necessari per eseguire un calcolo.

Un cervello, d’altra parte, lavora con un approccio completamente diverso. Non c’è nessun programma coinvolto nel suo funzionamento. È semplicemente “programmato” dalle interconnessioni tra i suoi componenti attivi, per lo più i cosiddetti neuroni.

Il cervello non ha bisogno di recuperare istruzioni o dati da alcuna memoria, decodificare istruzioni ecc. I neuroni ricevono dati in ingresso da altri neuroni, operano su questi dati e generano dati in uscita che vengono dati ai neuroni riceventi. OK – questo è un po’ troppo semplificato ma è sufficiente per portarci alle seguenti domande:

  1. 1. Non c’è un equivalente elettronico di una tale architettura di computer?
  2. 2. Abbiamo davvero bisogno di supercomputer general-purpose?
  3. 3. Un sistema specializzato potrebbe essere migliore per affrontare alcuni problemi?

La risposta alla prima domanda è: Sì, c’è un equivalente elettronico di una tale architettura.

Si chiama computer analogico.

Entrare computer analogici

“Analogico” deriva dalla parola greca “analogon” che significa “modello”. Ed è esattamente quello che è un computer analogico: Un modello per un certo problema che può poi essere usato per risolvere quello stesso problema simulandolo.

I cosiddetti analoghi diretti – che si basano sullo stesso principio di base del problema in esame – formano la classe più semplice di tali metodi analogici. Le bolle di sapone usate per generare superfici minime sono un esempio classico per questo.

“Un computer analogico è un modello per un certo problema che può poi essere usato per risolvere quello stesso problema simulandolo.”

Una classe più generalmente utilizzabile contiene analogie indirette che richiedono una mappatura tra il problema e il dominio del calcolo. Tipicamente tali analogie sono basate su circuiti elettronici analogici come sommatori, integratori e moltiplicatori. Ma possono anche essere implementati usando componenti digitali, nel qual caso sono chiamati analizzatori differenziali digitali.

Entrambi gli approcci condividono una caratteristica: non c’è un programma memorizzato che controlla il funzionamento di un tale computer. Invece, lo si programma cambiando l’interconnessione tra i suoi molti elementi di calcolo – un po’ come un cervello.

Dai computer analogici a quelli ibridi

Considera il mio prototipo di computer analogico, che è un esempio di un classico computer analogico-elettronico. L’incrocio di fili può essere descritto come il programma della macchina. In questo caso è impostato per simulare il flusso d’aria intorno a un cosiddetto profilo di Joukowsky – un compito non banale.

Questa foto è stata scattata da Tibor Florestan Pluto e mostra il prototipo di computer analogico dell’autore.

Tutti gli elementi di calcolo della macchina lavorano in completo parallelismo senza memoria centrale o distribuita a cui accedere e da aspettare. Si programma il computer collegando i cavi patch in e out. Questo può essere abbastanza utile per un singolo ricercatore e per scopi didattici, ma per un vero computer analogico di uso generale ci si dovrebbe sbarazzare di questa procedura di patch manuale.

Per fortuna, con la tecnologia elettronica di oggi è possibile costruire circuiti integrati che contengono non solo gli elementi di calcolo di base ma anche una barra trasversale che può essere programmata da un computer digitale collegato, eliminando così il nido di topi di fili del tutto.

Questi computer analogici raggiungono una potenza di calcolo estremamente elevata per certe classi di problemi. Tra gli altri, sono insuperabili per affrontare problemi basati su equazioni differenziali e loro sistemi – che si applica a molti se non la maggior parte dei problemi più rilevanti di oggi nella scienza e nella tecnologia.

Per esempio, in un documento del 2005, Glenn E. R. Cowan ha descritto un Very-Large-Scale-Integrated Analog Computer (VLSI), cioè un computer analogico su un chip, per così dire. Questo chip ha fornito ben 21 gigaflops per watt per una certa classe di equazioni differenziali, che è meglio del sistema più efficiente di oggi nella lista Green500.

Il futuro analogico del calcolo

Il calcolo analogico, che era la forma predominante di calcolo ad alte prestazioni fino agli anni ’70, è stato ampiamente dimenticato da quando i computer digitali a programma memorizzato hanno preso il sopravvento. Ma i tempi sono maturi per cambiare questa situazione.

“Le applicazioni di domani richiedono potenze di calcolo più forti a livelli di consumo energetico molto più bassi. I computer digitali non possono fornirlo.”

Le applicazioni di domani richiedono una potenza di calcolo più forte a livelli di consumo energetico molto più bassi. Ma i computer digitali semplicemente non possono fornire tutto questo. Quindi è ora di iniziare a sviluppare moderni co-processori analogici che tolgono il carico di risolvere complesse equazioni differenziali dai computer tradizionali. Il risultato sarebbero i cosiddetti computer ibridi.

Queste macchine potrebbero offrire una potenza di calcolo più alta dei supercomputer di oggi con un consumo di energia comparabile o potrebbero essere usate in aree dove sono disponibili solo piccole quantità di energia, come i controller impiantati in medicina e altri sistemi embedded.

Sfide future

E’ chiaro che l’informatica analogica ha grandi promesse per il futuro. Uno dei principali problemi da affrontare sarà che la programmazione dei computer analogici differisce completamente da tutto ciò che gli studenti imparano oggi all’università.

Nei computer analogici non ci sono algoritmi, nessun ciclo, niente come lo conoscono loro. Invece ci sono un paio di elementi di calcolo di base, ma potenti, che devono essere interconnessi abilmente per impostare un analogo elettronico di qualche problema matematicamente descritto.

Sfide tecnologiche come interconnessioni potenti o elementi di calcolo altamente integrati ma precisi sembrano minori in confronto a questa sfida educativa. Alla fine, cambiare il modo in cui le persone pensano alla programmazione sarà l’ostacolo più grande per il futuro dell’informatica analogica.

Il futuro dell’informatica analogica.