PROCESSAMENTO
PARALELO
Grupo Avengers
O processo paralelo é um sistema de
interligação de vários nós de processamento.
Esse sistema distribui tarefas para cada
processador envolvido nessa interligação de nós.
O objetivo é a rapidez, agilidade, e a
redução de tempo para execução de uma tarefa.
Tipos de
Processamento
Paralelo
Consiste em utilizar a tecnologia MMX
disponibilizadas em processadores Pentium (Pentium MMX).
Processamento paralelo feito em uma única
máquina, em um único processador.
O processador Pentium MMX trabalha com 32 bits. A tecnologia MMX agrupa cálculos que utilizam 8
ou 16 bits em uma única instrução que é
executada normalmente, como uma instrução 32 bits.
Requer programação em baixo nível.
Processamento paralelo em
Swar (Simd Withn a Register)
Consiste em dividir o processamento em dois ou
mais processadores, com características
semelhantes, que compartilham da mesma
memória e são gerenciados por um único sistema operacional.
Antigamente, placas-mães com soquetes para mais
de um processador eram necessárias para o SMP.
Com a atual tecnologia, os vários núcleos de
processamento são integrados em um único
componente de hardware também chamados de processadores multi-core.
O sistema operacional gerencia o processamento
SMP
Processamento paralelo com SMP
(Symmetric Multi-Processing)
Exemplos de processadores multi-core:
Intel Xeon;
Intel Core (2,2 Duo,i3,i5,i7) Intel Pentium D;
Intel Itanium;
AMD Athlon 64 ou X2;
Opteron 200 e 2000 processadores da série; UltraSPARC da Sun Microsystems;
Exemplos de processadores
multi-core:
Beowulf é o nome de um projeto para
aglomerados do computadores (ou
Clusters), usando computadores pessoais.
Foi criado por Donald Becker da NASA.
Possui uma máquina principal, chamada de
servidor e várias outras máquinas escravas, sem teclado, sem mouse e sem monitor.
Geralmente utiliza GNU/Linux para
configurar o processamento.
Processamento paralelo com
cluster Beowulf
Baixo custo, pois utiliza componentes
domésticos.
Fácil manutenção.
Não há limite definido para o tamanho do
cluster.
A grande maioria do hardware de rede não
foi criada para funcionar em processamento paralelo.
Mesmo com a popularidade crescendo,
existem ainda poucos softwares que suportem e tratem este tipo de cluster como um sistema único.
Consistem em um conjunto de
computadores completos (com teclado, monitor e mouse) conectados em rede.
Cumprem duas funções:
•1 - Permitir o uso diário (processamento de
texto, planilhas e aplicativos em geral).
•2 - Realizar processamento paralelo pesado
no final do dia ou em finais de semana.
Processamento paralelo com
cluster workstation
Possibilita o uso das máquinas por
diferentes usuários para realização de suas tarefas rotineiras.
Vantagem
Desvantagem
Como vários usuários estão utilizando os
processadores para outras tarefas, o
desempenho do sistema é reduzido.
o MOSIX é um complemento ao kernel do
GNU/LINUX que adiciona ao mesmo
capacidades de computação com cluster. O Mosix pode ser obtido no site oficial do
desenvolvedor (http://www.mosix.org ), onde está disponível uma versão para
estudos com suporte para até seis nodos.
Processamento paralelo em um
cluster com MOSIX
O trabalho de programação é reduzido,
exigindo apenas a implementação dos
mecanismos de troca de mensagens entre os diferentes processos;
Vantagem
Desvantagem
EXEMPLOS DE
PROCESSAMENTO
PARALELO
JAGUAR
Fabricado: Cray no EUA
Processamento: 45000 processadores Quad – Core da AMD
atingindo 1.64 petaflops
Roadrunner Fabricado: IBM
Processamento:12.960
processadores power xcell8i, rodando a 3.2 ghz, junto com outros 6480 AMD opteron x2, de 1.8 ghz atingindo 1 petaflops
K – cluster Fabricado: Fujitsu e Riken
Processamento: 8,2 milhões de calculo por segundo.
Para efeito de comparação, o poder desta maquina equivale ao de 1 milhão de desktops.
Conheça os computadores que fazem
cálculos astronômicos usando mais de
2300 núcleos.
Conheça também o supercomputador
brasileiro que faz o trabalho de 10 mil desktops reunidos
Permite a execução de tarefas em paralelo,
em menor tempo
Vários processadores
Múltiplos processadores simétricos (SMP) e
agregados (clusters)
MIND múltiplos fluxos de instruções e de
dados
Processadores de capacidade compatível Podem realizar as mesmas funções (daí o
termo simétrico)
Compartilham a mesma memória ,
facilidades de Entrada e Saída,
Vantagens do Multiprocessador sobre
Monoprocessador
Desempenho
Disponibilidade se um falha, não para tudo Crescimento acréscimo de processadores Escalabilidade produtos com diferentes
Níveis de paralelismo podem ser definidos pela
forma com que o processador esta trabalhando com as informações. Os mesmos podem ser obtidos com base na quantidade de código que esta sendo paralelizada.
Os níveis de paralelismo são: • Nível de instrução
• Nível de dados • Nível de tarefa
Vejamos abaixo os níveis de paralelismo, a
unidade de código e a granularidade de
Código.
Em uma mesma aplicação o paralelismo
pode ser detectado em diferentes níveis.
Nível do Paralelismo
Unidade de Código
Granularidade
Instrução Instrução Pequena Dados Bloco de instrução Média
Podemos definir de uma forma geral:
A nível de Instrução (Granularidade pequena): Alta
comunicação / Menor Performance. Exemplo: O ato de digitar.
A nível de Dados (Granularidade média): Média
comunicação / Media performance. Exemplo: Navegar em uma pagina simples da internet.
A nível de Tarefa (Granularidade grande): Pouca
Comunicação / Maior Performance. Exemplo: Executar um programa pesado.
Escalonamento de
Multiprocessos e
Escalonamento
de
O conceito de escalonamento tem como objetivo a otimização da utilização de hardwares dos
computadores.
É uma forma para ordenar e organizar o que será executado no momento e posteriormente.
O uso de escalonamento de processos pode trazer uma maior produtividade e ganho de tempo sem alterações significativas de maquinas e hardwares.
Há alguns conceitos de escalonamento o qual pode atribuído para tal otimização.
Apresentaremos alguns dos tipos de escalonamento de multiprocessamento: • Estático • Fila Única; • Multiprocessamento simétrico • Multiprocessamento assimétrico • Dinâmico
Fila Única: Uma Requisição para vários
processadores
Fila Única
As requisições passam por uma CPU que irá
fazer a seleção de distribuição.
Escalonamento
Assimétrico
As requisições passam diretamente para
cada CPU.da CPU
Escalonamento Dinâmico – Não segue um
O Balanceamento de carga vem com uma
solução para atingir de forma integra a capacidade de processos em sistemas distribuídos.
Por vezes, dependendo da utilização e
transferências de informações, um só
computador não pode dar conta de todas as solicitações de processos. Isso pode
ocasionar lentidão ou inutilização de um computador especifico.
O conceito de balanceamento pode ser usado
para distribuir a capacidade de um computador especifico com utilização próxima do limite para outros que estão ociosos.
Pode-se também fazer divisão de tarefas, por
exemplo:
• Um servidor que recebe cadastros e
formulários;
• Um servidor para e-commerce;
Processos
e
O que é um processo?
Um processo é um parte de um programa
em execução dado um contexto com alguns tipos de recursos. Ou seja, um processo
como um banco de dados onde se guarda informações necessárias para executar um programa.
O que é um programa?
Um programa é um arquivo onde se guarda as
informações de como construir um processo. Essas informações podem ser:
- Identificação do formato binário.
- Instruções da linguagem da maquina. - Endereço de entrada do programa.
- Dados.
- Tabelas de símbolos e relocação. - Informações de bibliotecas
compartilhadas e linkagem dinâmica.
O que é multiprogramação?
Multiprogramação é nada mais que um
rápido chaveamento entre processos onde se pode criar um ilusão de paralelismo.
Estados de um processo
Todo o processo tem que passar por certas
“rotinas” para rodar, pois há uma necessidade de sincronização.Pois pode ocorrer um
bloqueio se a entrada do processo não estiver disponível. O escalonador fica responsável por decidir qual processo ou thread que vai rodar. 1 . O escalonador escolhe o processo para
executar.
2. O escalonador entrega o processo ao processador.
3. O processo foi bloqueado para fazer a entrada de dados ou outras situações onde não tem condições lógicas para o programa rodar.
4. Operação de entrada e saída concluída ou o processo pode ter condições de rodar
Implementação do modelo de
processos
Quando precisa implementar um modelo, o
sistema operacional utiliza uma tabela de
processos com uma entrada para cada processo.
Cada entrada possui algumas informações: - O estado do processo.
- Memória Alocada.
- Valores do contador + ponteiro de pilha. - Estado do arquivo aberto.
- E tudo que for necessário para o processo
retomar sua execução mais tarde do ponto onde parou.
Comunicação entre processos
(IPC)
A comunicação entre processos é um grupo de
mecanismos que permite que os processos
troquem informações entre si. Alguns meios de
comunicação: arquivos, copiar e colar, mensagens, memórias compartilhadas, pipes, sockets.
Pode-se apontar 4 tipos de comunicações:
1.Condições de Corrida
2.Regiões Criticas
3.Exclusão mútua com espera ocupada
4.Exclusão mútua com bloqueio e
1.Condições de Corrida
Há uma condição de corrida quando dois ou
mais processos estão acessando dados
compartilhados. E o resultado depende de qual processo roda primeiro que o outro.
2.Regiões Criticas
A função da região criticas é impedir que dois ou
mais processos acessem dados simultaneamente. E também impedir que dois ou mais processos
entrem simultaneamente em suas regiões criticas correspondentes.
Condições para uma boa solução ao problema da condição de corrida:
- Dois ou mais processos não podem estar
simultaneamente dentro de suas regiões críticas correspondentes.
- Nenhum processo rodando fora de sua região
3.Exclusão mútua com espera
ocupada
Uma outra maneira de impedir que
dois ou mais processos acessem dados compartilhados ao mesmo tempo é por exclusão, dentre das diversas maneiras irei citar 2:
3.Exclusão mútua com espera
ocupada
4.Exclusão mútua com bloqueio
e desbloqueio
O problema com a exclusão mútua de
bloqueio e desbloqueio é que ele gasta um tempo desnecessário do
processador. Para isso existem dois comandos básicos:
- sleep - wakeup
Escalonamento de
processos
Quando dois ou mais processos têm condições
de rodar, é o escalonador que decide qual será o próximo a receber tempo de CPU. Esta
decisão é baseada em um algoritmo de escalonamento.
Relógio ("clock"): fornece interrupções. As
decisões de escalonamento podem ocorrer a cada enésima interrupção de relógio.
Existem dois tipos de escalonamentos:
1.Escalonamento não-preemptivo
Escalonamento de
processos
Existem 3 categorias de algoritmos de
escalonamento:
Em lote:
Exemplo First-come, first-served (FCFS)
Interativo: preempção é essencial.
Exemplo Round-robin
Em tempo-real
Existem dois tipos de sistemas de tempo real: - Sistema de tempo real críticos
Escalonamento de
processos
O que é um Thread?
Um thread é um fluxo de execução dentro de um
mesmo processo compartilhando dados e recursos de tal processo. Os threads usam e existem dentro
desses recursos mas são capazes de rodar sozinhos dentro de um processo. Um thread pode ocorrer de ter um fluxo de controle e ser escalonado pelo fato de ter:
- O seu próprio contador de programa. - O seu próprio ponteiro de pilha.
- Os seus próprios registradores.
- As suas propriedades de escalonamento.
- O próprio conjunto de sinais pendentes e bloqueados - E os dados que lhe são específicos.
O que é um Thread?
Processo com um único thread
Demonstração: Sequencial,
Threads e Cluster
O processo sequencial
se dá quando é
respeitada a ordem
que foi dada, seguindo para o próximo ou
para a próxima parte quando a primeira foi concluída.
Uma vez passado o
comando para a máquina, o usuário não interage mais com o processo.
Um cluster é um sistema que compreende
dois ou mais computadores conectados em rede para o desenvolvimento de
processamento paralelo. Ou seja, as
máquinas são conectadas via rede para formar um “único computador”.
Em 1994, a NASA, agência espacial
norte-americana, necessitava de um equipamento com alto poder de processamento. Uma
máquina com tal nível de desempenho
custava em torno de um milhão de dólares.
O primeiro Cluster Beowulf foi criado por
Donald Becker da NASA.
Como surgiu a ideia de se
utilizar um cluster Beowulf?
O objetivo de um cluster é possibilitar o uso
de computadores ligados em rede para execução de processamento com alto
desempenho, permitindo a realização de
simulações e processamentos o mais rápido possível. Assim como vamos demonstrar.
Qual o objetivo de se utilizar um
cluster?
O campo de aplicações de um Cluster
Beowulf e clusters em geral é imenso, temos como exemplo:
Astrofísica;
Exploração de petróleo; Biotecnologia;
Simulações de mercado financeiro; Tratamento de imagens, jogos e até
renderização de efeitos visuais para o
cinema, como a renderização das cenas de filmes como StarWars, Final Fantasy, Avatar e muitas outras produções.
Campo de utilização de um
Cluster?
3 notebooks com processadores core i5
cada um;
Roteador para interligação entre as
máquinas;
Sistema Linux Knoppix em cada máquina,
com openMosix;
Blender 2.34;
O que foi utilizado para a
montagem do Cluster
Vantagens do Multiprocessador sobre
Monoprocessador:
• Poder de Alto Desempenho;
• Disponibilidade: se um falhar, o outro assume
o processamento;
• Crescimento: acréscimo de processadores,
conforme a necessidade;
• Escalabilidade: produtos com diferentes
• Permite a execução de tarefas em paralelo,
em menor tempo;
• Podem realizar as mesmas funções (daí o
termo simétrico);
• Não há limite definido para o tamanho do