Il software di elaborazione parallela gestisce l'esecuzione di un programma su hardware di elaborazione parallela con l'obiettivo di ottenere una scalabilità illimitata (poter gestire contemporaneamente un numero crescente di interazioni) e ridurre i tempi di esecuzione. Le applicazioni che traggono vantaggio dall'elaborazione parallela si dividono grosso modo in elaborazione dei dati aziendali e elaborazione tecnico / scientifica.
Le applicazioni di elaborazione dei dati aziendali sono caratterizzate dall'elaborazione dei record e la dimensione dei dati crea in genere significativi problemi di prestazioni di I / O nonché la necessità di calcoli rapidi. Il software di elaborazione parallela assiste le applicazioni aziendali in due modi significativi:
quadri - I framework di flusso di dati forniscono le massime prestazioni e il metodo più semplice per esprimere le applicazioni di elaborazione dei record in modo che siano in grado di raggiungere un'elevata scalabilità e un throughput totale. I framework di flusso di dati sono alla base degli interni della maggior parte dei sistemi di gestione di database relazionali (RDBMS) oltre ad essere disponibili per l'uso diretto nella costruzione di applicazioni di data warehouse, business intelligence e CRM analitico (gestione delle relazioni con i clienti). I framework nascondono la maggior parte o tutti i dettagli delle comunicazioni tra processi e tra processori agli sviluppatori di applicazioni, rendendo più semplice la creazione di queste applicazioni rispetto al passaggio di messaggi di basso livello.
RDBMS - Essendo i repository più comuni per dati commerciali orientati ai record, i sistemi RDBMS si sono evoluti in modo che lo Structured Query Language (SQL) utilizzato per accedervi venga eseguito in parallelo. La natura del linguaggio SQL si presta a un'elaborazione più rapida utilizzando tecniche parallele.
Le applicazioni tecniche e scientifiche tendono ad essere "legate al calcolo" (richiedono molto calcolo del processore) e hanno avuto la tendenza ad essere associate al supercomputer. Esistono due tecniche principali utilizzate nella creazione della maggior parte di queste applicazioni: il passaggio di messaggi e il parallelizzazione dei compilatori.
Passaggio del messaggio - È possibile creare programmi applicativi utilizzando meccanismi per la comunicazione tra un processore che opera contemporaneamente ad altri. Questo è il meccanismo di livello più basso disponibile e può portare alle massime prestazioni possibili al massimo dei costi e della complessità di implementazione. (Si noti che il passaggio di messaggi per il calcolo parallelo non deve essere confuso con il termine messaggistica, utilizzato anche per descrivere i sistemi di comunicazione transazionale per applicazioni aziendali distribuite client-to-server e inter-server.)
Compilatori in parallelo - Per le applicazioni tecniche e matematiche dominate dall'algebra matriciale, ci sono compilatori che possono creare un'esecuzione parallela da codice sorgente del programma apparentemente sequenziale. Questi compilatori possono scomporre un programma e inserire automaticamente le strutture di passaggio di messaggi necessarie e altri costrutti paralleli.