Programacao Paralela

Programação paralela é aquela que usa diversos processadores que executam código concorrentemente a fim de se aproveitar do poder computacional para acelerar a computação de algo.

Pthreads
OpenMP
GPGPU

Conceitos

Comunicação

Conceito referente ao compartilhamento de informações que ocorrem entre cada atividade que ocorre em paralelo.

Sincronização

Conceito referente ao momento de execução das tarefas de modo que o programa exiba resultados corretos. A sincronização é a forma pela qual decidir como quando que cada unidade computacional acessa as variáveis compartilhadas. (REVER para verificar se é isso mesmo)

Granularidade

A granularidade no contexto de programação paralela se refere ao quão frequente a comunicação ocorre entre as diversas atividades paralelads do sistema. Se há muita comunicação então podemos dizer que há paralelismo de grão fino. Se não há muita comunicação então o paralelismo é de grão esparso. Caso não haja praticamente comunicação dizemos que o programa é embaraçosamente paralelos.

Paralelismo a nivel de bit

Paralelismo a nivel de instrução

Paralelismo a nivel de tarefa

Paralelismo a nivel de dado

Taxonomia de Flynn

Classificação dos programas paralelos em relacão ao paralelismo de instruções e dados

SISD SIMD
MISD MIMD

SISD

SISD (Single Instruction Single Data) é a tradicional programação sequencial, na qual uma única instrução é emitida por vez e esta instrução age sobre um único dado.

SIMD

SIMD (Single Instruction Multiple Data) é a abreviatura das instruções que apesar de serem especificadas individualmente agem sobre um conjunto de dados. Exemplo: Tenhho 4 números inteiros e executo uma instrução Duplicar que age sobre os quatro números. Ou seja uma única instrução afeta mais de um dado.

SPMD

SPMD (Single Program Multiple Data) é relacionada a SIMD. Enquanto um programa pode executar diversos estilos de instruções, há certos que apenas exedutam instruções SIMD. Tais programas são muito utilizados pelas GPU, por exemplo.

MISD (Multiple Instruction Single Data) é uma arquitetura onde um único dado pode estar sobre o controle de diversas operações por vez.

MIMD (Multiple Instruction Multiple Data) é uma arquitetura onde mais de uma instrução podem agir sobre mais de um dado por vez.

Pesquisadores/pessoas

http://www.oscarbg.blogspot.com/

Materiais fora do reinado dos videogames

http://gpgpu.org/2011/06/26/intel-ispc-release
http://brendaneich.com/2011/09/capitoljs-rivertrail/ Javascript e o ambiente multi-core/manycore
http://en.wikipedia.org/wiki/Parallel_computing

Page tags: paralelismo
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.