Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Gli strumenti Intel per la programmazione parallela in C++: Intel ArBB (1/3)
Scritto da Ciro Fiorillo il 23-12-2010 ore 10:02
Intel Parallel Studio XE 2015 Cluster Edition
Proseguiamo il tutorial sugli strumenti offerti da Intel per la programmazione parallela in C++ introducendo Intel Array Building Blocks (ArBB). Si tratta di una libreria, che implementa un particolare sistema, il quale consente di ottenere soluzioni scalabili sulle piattaforme Intel già disponibili sul mercato, ma anche su quelle che verranno proposte in futuro.

Prima di specificare le caratteristiche di questa tecnologia e presentare qualche esempio, è utile chiarire la differenza fra data-parallelism e vectorization: nel primo caso si parla di parallelismo dei dati, ossia dell'applicazione dello stesso codice a più frammenti di dati, senza dover specificare un particolare ordine di esecuzione delle operazioni rispetto ai dati stessi. Il secondo caso riguarda invece l'applicazione contemporanea di uno stesso operatore o funzione a più dati, utilizzando operandi costituiti da vettori invece che da scalari. Quest'ultima operazione è resa possibile dalla disponibilità di apposite istruzioni della CPU, che consentono l'elaborazione su un numero di operandi maggiore di uno.

Uno degli ostacoli alla diffusione dell'utilizzo delle operazioni vettoriali è dato dalle differenti operazioni supportate dalle CPU sul mercato, per cui spesso si è adottata una politica conservativa, rilasciando codice ottimizzato solo per alcune famiglie di processori – oppure non ottimizzate – per una più semplice politica di deploy.

Intel ArBB è un'API supportata da una libreria, che estende il linguaggio di programmazione C++ senza l'utilizzo di un pre-processore. La piattaforma è portabile e consente di implementare delle soluzioni di calcolo parallelo indipendenti dall'hardware, come vedremo a breve. La semantica utilizzata nella scrittura delle applicazioni, inoltre, rimane sequenziale, consentendo una maggiore leggibilità del codice prodotto e mantenendo la stessa semplicità dello sviluppo sequenziale classico, offrendo però un'ottima data-locality e una sicurezza by default, che esenta lo sviluppatore dal doversi preoccupare di problematiche legate all'accesso concorrente ai dati come deadlock e race condition.

Un programma sviluppato con Intel ArBB è, in pratica, compilato due volte: una prima volta dal nostro compilatore, che genera il codice binario dal nostro sorgente C++. La seconda compilazione avviene invece in fase di esecuzione del software nella macchina sulla quale è avvenuto il deploy dell'applicazione: viene generato dinamicamente il codice per l'esecuzione ad alta performance specifico per l'architettura della macchina, grazie ad Intel ArBB Dynamic Engine.
Precedente: Guida ai cavi e connettori: connettori N (1/2)
Successiva: JavaScript Patterns
Copyright Programmazione.it™ 1999-2014. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.19 secondi.