E4 Workshop 2010, l'HPC parla italiano

E4 Workshop 2010, l'HPC parla italiano

Bologna ha ospitato, nelle giornate del 16 e 17 Settembre, un importante workshop organizzato da E4 Computer Engineering, incentrato sull'HPC con il coinvolgimento dei principali player di settore in ambito hardware: AMD, ATI, NVIDIA e Intel.

di pubblicato il nel canale Server e Workstation
NVIDIAATIIntelAMD
 

Core, Multicore, Many-core

In ambiente HPC al crescere del numero dei core incrementano le prestazioni velocistiche, con una relazione che tende a livello teorico essere tanto più lineare quanto il codice che viene eseguito è in grado di scalare su tutti i core a disposizione. E' proprio con questa logica che le installazioni di calcolo per ambito HPC prevedono l'utilizzo di un elevato numero di sistemi in cluster, ciascuno dei quali vanta una complessità non eccessiva ma che abbinato ad altri simili o identici assicura una elevata scalabilità delle prestazioni.

A partire da tale considerazione è evidente come in ambito HPC si è assistita alla diffusione prima di sistemi dual socket, in seguito dei sistemi cosiddetti twin che abbinano in uno chassis rack a 1 unità due distinti server ciascuno dual socket, condividendo sistemi di raffreddamento e alimentatore in modo da massimizzare la potenza elaborativa diminuendo il costo. Ed è sempre in quest'ottica che i sistemi con più di 2 socket sono di fatto scomparsi in ambito HPC, salvo specifiche applicazioni, dovendo scontare un costo d'acquisto ben più elevato a motivo di alcune peculiarità tecniche.

Negli ultimi anni le architetture di processore sono passate da un approccio single core a quelli dual, quad, hexa, octa per giungere sino a 12 core; detto in altri termini, ad un singolo socket sono associati un numero crescente di core indipendenti che possono operare in parallelo tra di loro. La disponibilità di tecnologie di SMP, Symmetric Multi Processing, come quella Hyperthreading di Intel ha incrementato il numero di core logici a disposizione di ogni sistema, con interessanti aumenti prestazionali in quelle condizioni di utilizzo che permettono di sfruttare al meglio il parallelismo dei dati senza un aggravio eccessivo in termini di complessità dell'architettura.

In ambito HPC la frequenza di clock delle CPU ha quindi assunto un ruolo marginale, sostituita dall'abbinamento tra numero di core e consumo complessivo del processore. Quest'ultimo elemento è divenuto di notevole importanza negli ultimi anni, a motivo dei costi crescenti nella gestione di centri di calcolo legati alla elevata densità di elaborazione, all'alimentazione dei numerosi server presenti e alle richieste di raffreddamento degli ambienti. Per i produttori di CPU utilizzate in ambito HPC, di fatto riconducibili alle soluzioni x86 di Intel e AMD, lo sforzo tecnologico è quindi quello di immettere in commercio processori che ad un livello di consumo predefinito mettano a disposizione un numero sempre più elevato di core, con ogni core sempre più efficiente di quello di precedente generazione.

Crescita nel numero di core, mantenendo i consumi sempre più sotto controllo: questa è la strategia adottata da AMD e Intel in ambito professionale, approccio che soddisfa i produttori di sistemi HPC in quanto viene incontro alle particolari esigenze di questo mercato. La condizione affinché questo approccio tecnologico sia efficiente è quella di fare in modo che il codice eseguito sia il più possibile scalabile su un elevato numero di core; questo implica non tanto che il codice esegua piccoli threads, ciascuno associato ad uno specifico core, quanto che possa venir parallelizzato su un elevato numero di core.

slide_1.jpg (65663 bytes)

Sulla carta l'evoluzione del software verso una parallelizzazione estrema è semplice, ma all'atto pratico ogni contesto è un caso a se stante. Un esempio concreto viene dalla testimonianza del Dr Helge Meinhard del dipartimento IT del CERN, struttura nel quale il codice principale è di fatto composto da numerosi threads di ridotte dimensioni e complessità che vengono fatti eseguire dedicandoli ad un singolo core. Il sistema può essere reso molto più efficiente con una opportuna e attesa rielaborazione del codice che ne permetta l'applicabilità a sistemi di tipo many-core, con i quali quindi i core di elaborazione per ogni sistema sono nell'ordine del centinaio, ma questo implica un lavoro di riscrittura del codice da zero che impegna molte risorse oltre a richiedere un periodo di tempo lungo.

La strategia dei produttori di processori rimane quindi quella di mettere a disposizione un numero sempre più elevato di core per l'elaborazione parallela, confidando sull'utilizzo di codice che possa beneficiare di queste risorse di calcolo incrementate. E' quindi fondamentale che il codice segua di pari passo quanto proposto dalla componente hardware, attraverso continue ottimizzazioni che possano sfruttare al meglio la pura potenza di calcolo a disposizione.

[HWUVIDEO="771"]Intel: il punto sulle CPU per HPC[/HWUVIDEO]

Nell'intervista Claudio Bellini, Business Developer Manager di Intel, delina quello che è il punto di vista dell'azienda americana legato all'aumento nel numero dei core, lasciando prevedere quelle che saranno le future evoluzioni Intel nel mercato HPC sia con riferimento alle tradizionali architetture di CPU sia a quelle GPU. Per l'azienda americana continueranno ad essere sviluppate le soluzioni cosiddette multicore, cioè quelle che prevedono per ogni CPU un numero variabile di core ma che possiamo limitare come massimo indicativo a 20, portando avanti un programma di ricerca parallelo che prevede lo sviluppo di architetture many-core con le quali ad ogni socket siano abbinati core in quantitativo che può anche raggiungere un centinaio. Soluzioni di questo tipo, è evidente, abbinano un elevato numero di core ad un'archtiettura che necessariamente deve essere per sua natura semplice così da mantenere i livelli di consumo su standard predefiniti, permettendo in questo modo di gestire in modo efficiente il livello di utilizzo di ciascun core e da questo il consumo dell'intero sistema.

Per Intel la linea guida fontamentale rimane in ogni caso quella dell'utilizzo di codice x86, elemento alla base dei due approcci multicore e many-core che facilita il porting delle applicazioni su differenti tipologie di piattaforme e quindi velocizza l'applicabilità del software all'hardware a disposizione. Contrarie a questa filosofia, almeno per il momento, sono ovviamente AMD e NVIDIA: per entrambe queste aziende il concetto di Many-core passa attraverso GPU che utilizzino linguaggio dedicato, e che agli occhi degli operatori nell'ambito HPC altro non sono che potentissimi coprocessori matematici.

 
^