Qual é a diferença entre OpenMP e Open MPI?


Melhor resposta

OpenMP é uma plataforma de programação que permite paralelizar o código em um sistema de memória compartilhada homogêneo (por exemplo, um processador multi-core). Por exemplo, pode-se paralelizar um conjunto de operações em um processador multi-core em que os núcleos compartilham memória entre si. Esta memória inclui memória cache, RAM, memória de disco rígido, etc., e a comunicação é fácil e relativamente barata.

Open MPI (baseado na Message Passing Interface ) também é uma plataforma de programação, mas em vez disso oferece a capacidade de paralelizar o código em uma sistema distribuído (por exemplo, um supercomputador). Por exemplo, é possível paralelizar um programa inteiro em uma rede de computadores, ou nós, que se comunicam na mesma rede. Como esses nós são essencialmente computadores , eles têm seu próprio layout de memória e seu próprio conjunto de núcleos (consulte a descrição do OpenMP). A comunicação entre os nós, quando comparada aos sistemas de memória compartilhada, pode ser difícil e geralmente cara.

Resposta

OpenMP é uma extensão de linguagem para expressar operações paralelas de dados (comumente arrays paralelizados em loops). MPI é uma biblioteca para passagem de mensagens entre processos sem compartilhamento.

OpenMP é um nível superior de abstração, já que seu propósito é expor a concorrência e o fluxo de dados do programa para o compilador. Em contraste, a simultaneidade MPI é implícita (todos os processos são paralelos) e as mensagens estabelecem a estrutura de fluxo de dados da computação.

Embora É comum pensar no OpenMP como sendo apenas sobre memória compartilhada, não há nada que impeça uma implementação do OpenMP de usar MPI para operar em processos e hosts. OTOH, a dualidade de memória compartilhada e passagem de mensagem significa que as implementações MPI muitas vezes tiram vantagem da memória compartilhada para classificações no mesmo nó …

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *