OpenMP
OpenMP (Open Multiprocessing) è un API multipiattaforma per la creazione di applicazioni parallele su sistemi a memoria condivisa. E' supportata da vari linguaggi di programmazione come il C/C++ e il Fortran e su varie architteture di elaboratori e sistemi operativi tra cui Solaris, AIX, HP-UX, Linux, Mac OS X e la piattaforma Windows. OpenMP è composto da un insieme di direttive di compilazione, routine di librerie e variabili d'ambiente che ne definiscono il funzionamento a run-time.[1][1][2][3]
OpenMP è gestito dal consorzio no profit OpenMP Architecture Review Board (or OpenMP ARB) assieme ad un gruppo di produttori di Hardware e di sviluppatori di software come AMD, IBM, Intel, Cray Inc., Hewlett-Packard, Fujitsu, NVIDIA Corporation, NEC Corporation, Microsoft Corporation, Texas Instruments, Oracle ed altri.
OpenMP usa un modello scalabile e portabile che fornisce al Programmatore un interfaccia semplice e flessibile per sviluppare applicazioni di calcolo parallele che possono essere eseguire da uno standard Computer desktop fino ai Supercomputer[4].
Un applicazione sviluppata con il modello ibrido di programmazione parallela può essere eseguito su un Computer cluster utilizzando OpenMP e Message Passing Interface (MPI) oppure in modo trasparente utilizzando le estensioni OpenMP per i sistemi con memoria non condivisa.
Introduzione
OpenMP è un implementazione del concetto di multithreading ovvero di un metodo di parallelizzazione per cui un master thread (una serie di istruzioni eseguite consecutivamente) crea un certo numero di slave thread ed un task (processo) è diviso tra i vari slave thread. I thread vengono eseguiti in modo concorrente mentre il Run-time system alloca i thread su processori disponibili.
La sezione di codice che si intende eseguire in parallelo viene marcata attraverso una apposita direttiva che causa la creazione dei thread prima della esecuzione. Ogni thread è identificato tramite un id che può essere ottenuto tramite la funzione omp_get_thread_num(). Tale valore è di tipo intero e per il master thread vale 0. Al termine della esecuzione del codice parallelizzato gli slave thread ritornano il controllo al master thread il quale continua l'esecuzione fino al termine del programma.
Note
- ^ a b http://openmp.org/wp/openmp-compilers/ OpenMP Compilers
- ^ http://openmp.org/wp/2008/10/openmp-tutorial-at-supercomputing-2008/ OpenMP Tutorial at Supercomputing 2008
- ^ http://openmp.org/wp/2009/04/download-book-examples-and-discuss/ Using OpenMP - Portable Shared Memory Parallel Programming - Download Book Examples and Discuss
- ^ http://openmp.org/wp/2008/11/openmp-30-status/ OpenMP 3.0 Status
Collegamenti esterni
- [1], sito ufficiale con le specifiche.
- GOMP is GCC's OpenMP implementation, part of GCC
- IBM Octopiler with OpenMP support
- Blaise Barney, Lawrence Livermore National Laboratory site on OpenMP
- ompca, an application in REDLIB project for the interactive symbolic model-checker of C/C++ programs with OpenMP directives