Documente Academic
Documente Profesional
Documente Cultură
2 Quadrimestre / 2017
Aula 1
Introduo
Introduo Disciplina
Objetivos da Disciplina
Obter fluncia na programao paralela e concorrente,
permitindo o desenvolvimento de programas que utilizam
mltiplos processadores, computadores e GPUs
Aprendizado ser composto por:
- Aulas tericas (2h)
- Aulas de laboratrio (2h)
- Exerccios prticos
- Projeto
- Estudo individual
Aulas de laboratrio no L408-2 do bloco A, torre II
Programa Preliminar
Paralelizao de Programas
Programas multi-threaded
Sincronizao e comunicao entre threads
Modelos de programas paralelos
Programao com OpenMP e Pthreads
Programao em GPUs
Arquitetura e programao de GPUs
Programao em CUDA
Conhecimentos Esperados
So esperados conhecimentos em:
Parte I - Apresentao
Avaliaes
Listas:
8
Parte 1
Pthreads e OpenMP
Paralelizao de algoritmos
Sincronizao de threads
GPUs e CUDA
Bibliografia
Ser cobrado o que for dado em aula, incluindo o contedo
de slides e documentos fornecidos, alm das explicaes
na lousa
Os slides so apenas uma referncia, no servindo como
material de estudo para a prova
http://tidia4.ufabc.edu.br
12
Por que estudar Programao Paralela?
Computadores para Usurios Finais
Desempenho dos processadores historicamente dobrou a
cada 18 meses (Lei de Moore). Aumento em:
- Velocidade do relgio
- Nmero de transistores
Mas chegou-se ao limite
da miniaturizao
do transistor
Fonte: en.wikipedia.org
CPUs com Mltiplos Ncleos
Aumentos de frequncia geram consumo maior e mais calor
Diminuio do tamanho de transistores est chegando no limite
Soluo utilizada atualmente para processadores
Ao invs de fazer processadores de 30GHz, utilizar 10 de 3GHz
Desempenho terico igual (mas na prtica no )
No incio, utilizados
em servidores de
alto-desempenho
Hoje, computador
pessoais possuem
processadores com
pelo menos 2 ncleos
CPUs com Mltiplos Ncleos
Vantagens
Maior velocidade sem aumento da frequncia do relgio
Menor consumo energtico e gerao de calor
Desvantagens
No caso de aplicaes isoladas, o processador com 2 ncleos
til apenas se a aplicao utilizar pelo menos 2 threads
Mais difcil de programar
Exemplo: Intel Core
Arquitetura modular
Permite a composio de diferentes tipos de processador
De notebook a servidores de alto desempenho
Suporte a hyperthreading at 16 threads simultneas
Memria Compartilhada
Processadores compartilham uma memria comum
Comunicao e sincronizao de tarefas feitos pela memria
Memria compartilhada modelo fcil de programar
Aglomerados (Clusters)
Construdos conectando um
conjunto de PCs convencionais
atravs de uma rede
Permitem obter um grande poder
computacional com um baixo custo
Neurocientistas querem
fazer simulaes de
todo o crebro humano
Fonte: https://computing.llnl.gov/tutorials/parallel_comp/
Parte II
Introduo Pthreads
Processos
28
Retirado de https://computing.llnl.gov/tutorials/pthreads/
Threads
29
Retirado de https://computing.llnl.gov/tutorials/pthreads/
Exemplo
Programa de processamento de imagens, onde se deseja
encontrar as faces nela presente.
Mltiplas threads:
- Um processo com a imagem da memria
- Cada thread trabalha com uma parte da imagem
Mltiplos processos:
- Cada processo armazena uma parte da imagem em sua
memria
- Respostas so comunicadas atravs de mensagens
para o processo pai
30
Threads
Em um nico computador, usar threads vantajoso, pois:
- So mais leves
- Possuem memria compartilhada
- Comunicao e sincronizao mais fcil
31
Biblioteca Pthreads
Disponvel no Linux, UNIX e MacOS X
Linux: Verses no GNU CC (GCC) e Intel CC (ICC)
32
Biblioteca Pthreads
33
#include <pthread.h> Exemplo Pthreads
#include <stdio.h>
#define NUM_THREADS 4
35
Passagem de parmetros em Pthreads
Ponteiro do tipo void *
Pode apontar para tipos primitivos ou estruturas
int *aves = (int *)malloc(sizeof(int));
void *dados = aves;
pthread_create(&threads[t], NULL, teste, dados);
alocao na pilha
#define NUM_THREADS 5
https://computing.llnl.gov/tutorials/pthreads/
http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
40