Pular para o conteúdo principal

Programação Paralela e por que você deveria se preocupar com isso (Parte 2)

Como defini na parte 1 desta série de publicações, irei descrever, resumidamente, alguns tipos de conceitos e terminologias associados à Programação Paralela e a organização dos computadores que suportam este paradigma.
Supercomputador Janus na
Universidade do Colorado.
Pra começar, é conhecido que existem diferentes caminhos para se classificar computadores paralelos. Exemplos podem ser encontrados aqui. (Fonte: http://vedyadhara.ignou.ac.in/wiki/images/8/8e/B1U2mcse-011.pdf)
Nesta publicação iremos conhecer a classificação de computadores paralelos de acordo com a famosa Taxonomia de Flynn.

A Taxonomia de Flynn

Uma das classificações mais amplamente utilizadas, em uso desde 1966, é nomeada Flynn's Taxonomy. O nome é por causa do carinha da foto ao lado.
Michael J. Flynn, propôs a taxonomia
dos computadores paralelos em 1966.

A taxonomia de Flynn distingue arquiteturas de computadores multi-processadores de acordo com a maneira que eles podem ser classificados dentre duas dimensões independentes de Instruction Stream e Data Stream. Cada uma destas dimensões pode ter apenas um de dois possíveis estados: Single ou Multiple.

A matriz abaixo define os quatro possíveis estados de classificação de acordo com Flynn:

S I S D
Single Instruction Stream
Single Data Stream
M I S D
Multiple Instruction Stream
Single Data Stream
S I M D
Single Instruction Stream
Multiple Data Stream
M I M D
Multiple Instruction Stream
Multiple Data Stream
Lembra da calculadora
que você fez depois do
seu primeiro Hello World?

Single Instruction, Single Data (SISD):

  • Um computador serial;
  • Single Instruction: Somente um fluxo de instrução é acionado pela CPU durante qualquer ciclo de clock;
  • Single Data: Some um fluxo de dado é utilizado como entrada durante qualquer ciclo de clock;
  • Execução determinística;
  • Este é o modelo mais antigo de computador;
  • Exemplos: geração antiga de mainframes, minicomputadores, estações de trabalho e PCs de processador único.

Single Instruction, Multiple Data (SIMD):

Exemplo de execução de aplicação em computador
SIMD com matriz de processadores.
  • Um tipo de computador paralelo;
  • Single Instruction: Todas unidades de processamento executam a mesma instrução em qualquer instante do ciclo de clock;
  • Multiple Data: Cada unidade de processamento pode operar em um elemento de dado diferente;
  • Mais adequado para problemas especializados caracterizados por um alto grau de regularidade, tais como processamento de gráficos ou imagens;
  • Sincronização (bloqueante) e execução determinística;
    Exemplo de execução de aplicação em 
    computador SIMD com pipeline de vetores.

  • Duas variedades: Matriz de Processadores e Pipelines de Vetores;
  • Exemplos:
    • Matriz de Processadores: Thinking Machines CM-2, MasPar MP-1 & MP-2, ILLIAC IV;
    • Pipelines de Vetores: IBM 9000, Cray X-MP, Y-MP & C90, Fujitsu VP, NEC SX-2, Hitachi S820, ETA10.
  • Computadores mais modernos, particularmente aqueles com unidades de processadores gráficos (GPUs) que empregam instruções SIMD e unidades de execução.

Multiple Instruction, Single Data (MISD):

  • Um tipo de computador paralelo;
    Exemplo de execução MISD.
  • Multiple Instruction: Toda unidade de processamento opera em um dado independentemente através de fluxos de instrução separados;
  • Single Data: Um único fluxo de dados alimenta várias unidades de processamento;
  • Alguns (caso exista) exemplos atuais desta classe de computador paralelo nunca existiram;
  • Alguns usos possíveis podem ser:
    • filtros de frequência múltipla operando em um único sinal de fluxo;
    • múltiplos algoritmos de criptografia tentando quebrar uma única mensagem codificada.

Multiple Instruction, Multiple Data (MIMD): 

Exemplo de execução MIMD.

  • Um tipo de computador paralelo;
  • Multiple Instruction: Todo processador deve estar executando um fluxo de instrução diferente; 
  • Multiple Data: Todo processador deve estar trabalhando com um fluxo de dado diferente;
  • Execução pode ser síncrona ou assíncrona, determinística ou não-determinística;
  • Atualmente, o tipo mais comum de computador paralelo - os mais modernos supercomputadores se encaixam nessa categoria;
  • Exemplos: supercomputadores mais atuais, clusters de computadores paralelos em rede e gris, computadores SMP multi-processador, PCs multi-core;
  • Várias arquiteturas MIMD também incluem execução SIMD em sub-componentes.
Em resumo, a classificação MIMD é a que abrange os computadores que iremos executar as aplicações paralelas e os conceitos de paralelismo a serem vistos nesta série aqui no blog.

A próxima parte desta série fala sobre como avaliar a indicação do uso ou não da programação paralela em sistemas.

Comentários

Postagens mais visitadas deste blog

Utilizando o padrão de referências da ABNT no Word

Uma importante funcionalidade do Microsoft Word é o seu Gerenciador de Fontes Bibliográficas. Para aqueles que estão escrevendo algum trabalho acadêmico ou científico, é possível cadastrar todas as referências do trabalho e no final gerar a listagem já enumerada dos documentos que foram consultados na pesquisa. Essa postagem traz os arquivos necessários e as instruções para facilitar essa etapa da elaboração.

Como elaborar um TCC em Sistemas de Informação

Alguns meses atrás estive na tão conhecida saga de elaboração do Trabalho de Conclusão de Curso, o TCC, e somente comprovei aquilo que eu via em forma de desabafo nas redes sociais e que tantos outros colegas de faculdade me falavam. Uma das definições mais aceitas por mim sobre o que é um TCC é a citada pela minha orientadora: "é uma gestação". E realmente, apesar de ter feito o meu em cerca de 1 mês (não recomendo isso para ninguém, mas era minha única saída para não ficar desempregado e sem a possibilidade de cursar meu mestrado, mas essa é outra história), um TCC bem feito deve ter seu cronograma definido para 6 meses, no mínimo, e isso deveria ser uma recomendação do Ministério da Saúde para que os graduandos não percam sua saúde mental.

Mininet: Uma Rede Virtual Instantânea no Seu PC

Baseado no texto de introdução presente no site oficial do Mininet (www.mininet.org) apresento esta ferramenta que possibilita a desenvolvedores e pesquisadores a criação de uma rede virtual realista, executando um kernel real, switch e código de aplicação, em uma única máquina (VM, cloud ou nativa), em segundos, com comandos simples.

A rede virtual criada pelo Mininet é escalável, uma rede definida por software em um único PC utilizando processos do Linux. Isso possibilita um meio inteligente de realizar testes e simulações de uma rede antes de implementá-la em meio físico, caso esse seja o objetivo.