Openmp
O OpenMP (do inglês Open Multi-Processing, ou Multi-processamento aberto) é uma aplication programming interface (API) que suporta multi-plataforma memória compartilhada para programação em C, C++ e Fortran em várias arquiteturas, incluindo plataformas Unix e Microsoft Windows. É constituída por um conjunto de compiler directives, rotinas de biblioteca e variável de ambiente que influenciam na execução do programa. Conjuntamente definido por um grupo de computador principal (ou computadores principais) fornecedor(es) de software, OpenMP é um modelo portátil e otimizado que dá aos programador(es) uma interface simples e flexível para o desenvolvimento de aplicações paralelas para plataformas que vão desde um computador pessoal até um supercomputador. Uma aplicação construída com o modelo híbrido de programação paralela pode ser executada em um cluster usando tanto OpenMP, Interface de transmissão de informação), ou mais claramente através da utilização das extensões OpenMP para sistemas de memória não partilhada (por exemplo, o Intel Cluster OpenMP).
Introdução
OpenMP é uma implementação de multithreading, um método de paralelização no qual o "master thread"(uma série de instruções executadas consecutivamente) forks ("bifurca") um específico número de threads escravos e uma tarefa é dividida entre eles. Os thread são então executados simultaneamente, com ambiente de execução distribuindo as threads para diferentes processadores. A parte de código que é criada para funcionar em paralelo é marcada de acordo com uma diretriz pré-processador que criará os thread para formar a secção antes de ser executada. Cada thread tem um "id" (endereço) anexado a ele, que pode ser obtido através de uma função (chamada omp_get_thread_num() em C / C + + e OMP_GET_THREAD_NUM() em Fortran). O thread "id" é um número inteiro e o master thread possui o id "0". Após a execução do código em paralelo, os "threads" retornam ao master thread, o qual continua progressivo até o fim