La tecnologia
Intel Cilk propone alcuni strumenti per la parallelizzazione delle operazioni con il supporto del compilatore: il costrutto
cilk_for, ad esempio, semanticamente equivalente alla classica operazione
for sequenziale di C, utilizza una strategia di partizionamento del tipo
divide and conquer, valutando la condizione di uscita dal loop una sola volta all'inizio del ciclo; sono messi a disposizione dello sviluppatore, inoltre, anche i costrutti
cilk_spawn e
cilk_sync, per eseguire operazioni in multitasking nello stile
fork/join.
Dal punto di vista delle novità riguardanti le iniziative di ricerca, i tre settori in cui ci saranno novità nel futuro prossimo sono l'introduzione delle
Intel Concurrent Collections, le estensioni
Intel Cluster OpenMP e le
Software Transactional Memory.
Nella conclusione del suo intervento,
James Reinders sottolinea come nel prossimo futuro sarà importante anche l'utilizzo di differenti modelli di programmazione parallela all'interno dello stesso progetto software, ad esempio in un modello
multi-tier si potrebbe avere un'architettura di tipo
task-parallel per quanto riguarda le logiche di controllo, ed una
data-parallel per affrontare le situazioni di forte parallelismo nei dati con semantica sequenziale o con parallelismo spinto.
Dopo l'intervento di
James Reinders, è stato il turno di
Hugo R. Falter,
Chief Operating Officer per il
ParTec Cluster Competence Center; egli ha illustrato le caratteristiche e il progetto che hanno portato alla costruzione nel
Supercomputing Center di Julich di
JuRoPA, una macchina basata su processori Intel e middleware
ParaStation Cluster, evidenziando come nello sviluppo del progetto abbia giocato un ruolo determinante lo spirito collaborativo instaurato tra le diverse società che hanno preso parte all'iniziativa.
L'intervento successivo di
Christian Terboven,
HPC Team Lead,
Aachen University, ha focalizzato l'attenzione sull'importanza di avere a disposizione dei tool per la misurazione e l'analisi delle performance. Viene proposto un processo incrementale di
performance tuning, che parte dall'analisi a runtime del programma sequenziale, l'identificazione degli hotspot, ossia delle parti di programma
compute-intensive, la parallelizzazione degli hotspot stessi (se non è possibile un
tuning sequenziale), l'analisi del comportamento a runtime della versione parallela del programma.
Viene proposta da
Terboven anche una comparazione dei profiler utilizzati dal
Center for Computing and Communication per un caso di studio riguardante la simulazione numerica del comportamento di una goccia di silicone in un fluido:
Visual Studio 2008 e
gprof,
Intel Parallel Amplifier e
Intel VTune.
Dall'analisi si evince come con la seconda soluzione vi è una più semplice attivazione del profiler, un'identificazione immediata degli hotspot con collegamenti al codice sorgente, mancanti nella prima soluzione illustrata, mentre viene sottolineata la mancanza di misurazioni degli
Hardware Counter, disponibili invece con l'ultimo prodotto provato.
Una seconda analisi comparativa riguarda invece il
parallel profiling, utilizzando come strumenti
Intel Parallel Inspector e
Intel VTune, per completare la disamina con gli strumenti di verifica della correttezza del codice, ossia il debugger integrato in
Visual Studio con e senza
Allinea DDTlite,
Intel Parallel Inspector e
Intel Parallel Composer.