INE 5645 - Programação Paralela e Distribuída


Tarefas Teóricas e de Programação

Material Didático
Plano de Ensino     Introdução
Processos e Threads     Tarefa (Teórica)
Programação com Threads
Material da Unidade 0

Unidade 0 - Concorrência em Java
         (a)  Semáforos, Locks (visto em Sistemas Operacionais)
            (b)  Sincronização de Threads com Monitor
            (c)  Monitor e Leitores e Escritores

Laboratório 0 - Threads e Monitor  LEITORES x ESCRITORES  (18/03/2019)

Buffer (interface),   Buffer (implementação),  Leitor,    Escritor,    Main (package principal)

Exemplo 1 - Leitores x Escritores (Java)  (Não mostra a terminação das threads)

Exemplo 2 - Leitores x Escritores (Java)  (Cuida da terminação das threads, implementa 1 escritor no pool e escreve e 4 leitores)


Exemplos para Escalonamento de Threads em Diferentes Formas em Java

Transações - O Problema da Atualização Perdida (Sicronização com Locks)
 

 ==================================================================================================

Unidade 1  -   Programação Paralela com OpenMP   

Verificando Instalação

       Apresentação 1 (AULA)          Apostila Introdução ao OpenMP (AULA) 

OpenMP Diretivas (Primeiras Diretivas)

Exemplo1 - Cláusula Schedule       
Exemplo2
 - Cláusula Dynamic Schedule      
Exemplo3
- Cláusula Reduction

            Exemplos - Outras Diretivas (atomic, critical, single, master, section) e Cláusula (nowait)

Apostila de Treinamento OpenMP

Conceitos em OpenMP    
Conceitos de Processamento Paralelo     

Introduction to OpenMP        Introdução ao OpenMP

OpenMP Tutorial      
Paralelização com OpenMP

Laboratório 1: Tarefas Práticas OpenMP 

Realizar testes com exemplos contendo diretivas, cláusulas e funçoes OpenMP (as mais importantes). O ambiente mais fácil de excutar OpenMP é Ubuntu 16.04.

Usar as seguintes diretivas: parallel, for, sections, barrier, atomic, critical, master
Usar as seguintes cláusulas private, shared, sheduled, reduction, nowait, num_threads
Usar as seguintes
funções:omp_set_num_threads     omp_get_thread_num
omp_get_num_threads
omp_get_wtime
Postar no Moodle um só arquivo  <.....>*.txt, contendo seus 10 exemplos testados.
Para a Prova 1, as questões serão feitas sobre as tarefas práticas.

(*) Para_Prova_OpenMP     Prova 1   (29/04/2019)       Sala CTC-207

AULA OMP PRATICA 1  

AULA OMP PRATICA 2  


Links Didáticos:

    
(1) Programação em Memória Compartilhada com o OpenMP  (Por Ricardo Rocha, DCC, Universidade do Porto)

     
      (2)
A partir deste link  Microsoft OpenMP Directives pode-se obter:  
                                       Microsoft Clauses
                                       Microsoft Library Reference contendo
                                          (Bibliotecas,   Tipos de Dados,   Variáveis de ambientes,   Funções)

      Obs: Caso estes links (2) estejam lentos via a página, procurem copiar o link e entrar no navegador para acessá-lo.
                                                   

        (3) Exemplo OpenMP Scheduling
      (4) OpenMP-intro-v5
      (5) OpenMP by Examples
                                      
   Exemplo que pode ser testado:

    (a) Multiplicação de matrizes -  Multiplicar duas matrizes A(NRA, NCA) e B(NCA, NCB). Lembre que para
    multiplicar duas matrizes, o número de colunas de A deve ser igual ao número de linhas de B, e a matriz resultante de
    ter a dimensão (NRA, NCB), onde NRA é o número de linhas de A e NCB é o número de colunas de B.
    Consequentemente, NCA é o número de colunas de A. Você pode estudar este código OpenMP no final do arquivo   
    em OpenMP Tutorial .

 
     (b)
Você pode sugerir para outra tarefa de OpenMP, aproveitar sua implementação que você fez em PThreads. Tarefas opcionais,
      acrescentadas ao que é obrigatório, ao final do período, valem mais 0,5 na média final no CAGR.
  
           Arquivo Parte A da Prova 1 
           Arquivo Parte B da Prova 1    

=================================================================================================

Unidade 2 - Programação Paralela Heterogênea (CPU+GPU)

(*) Apresentação OpenCL   (apresentado em aula)

Introdução em OpenCl - Uma introdução prática    (Sua Primeira Experiência               

Calling the Kernel

List-4-8-List-4.9    -    List-4-10-List-4-11

(*) PARALELISMO DE DADOS,     PARALELISMO DE TAREFA

TÉCNICA DE PROGRAMAÇÃO PARALELA EM PIPELINING

Introdução ao OpenCL - Douglas Adriano Augusto - LNCC - 2012

CUDA x OpenCL (Modelos de Plataforma, Memória e Programação similares)

Multiplicação de Matrizes em CUDA

OpenCL - AMD Processor
OpenCL - The open standard for parallel programming of heterogeneous
OpenCL - Exemplos Interessantes
OpenCL - Software Intel OpenCL


OpenCL precisa de placas GPUs:   Nvidia GeForce
                                                       AMD Radeon
                                                       Intel GPUs

Arquiteturas Paralelas Hibridas

TAREFAS PARA AVALIAÇÃO DA UNIDADE 3

Lab 2.1 - Tarefa Teórica Lab 3 - Parte 1 (Conceitos OpenCL)
(Obrigatória para os que tratarem a Unidade 3, do ponto de vista teórico.)


Lab 2.2 - Tarefa Teórica Lab 3 - Parte 2 (Um programa CUDA simples)

 
CUDA C/C++ Basics Supercomputing 2011 Tutorial - Cyril Zeller, NVIDIA Corporation
  
   (*) Introdução ao OpenCL - LNCC

   (*) Introduction to OpenCL™ Programming (Ver 
size_t get_global_id(dimidx), onde dimidx = 0, 1, 2, pg. 65)
                                                                               
Por exemplo, size_t  id  = get_global_id(0)
 
  
__kernel void square(__global int *input, __global int *output)
  
{
      
int  id  =  get_global_id(0);  // retorna o id único de um work-item global; (0) indica a dimesão 1.
      
output[id] = input[id] * input[id];
  
}
  
    (*) Explicando get_global_id(dimidx)

 
Paralelismo de Dados x Paralelismo de Tarefas: Um Exemplo

   OpenCL Programming Guide

    Book Heterogeneus Computing wtith OpenCL  (Gaster at ali)

    Livro em português sobre CUDA
 PROGRAMANDO PARA PROCESSADORES PARALELOS   Por WEN-MEI W. HWU,DAVID B. KIRK  2011

    (*) OpenCL Basics

               
How to Install CUDA on Ubuntu 18.04

Lab 3 - Tarefa Prática -   Estudar e explicar as partes de exemplos de programas CUDA. Caso você tenha condiçoes de máquina adequada (uma placa de vídeo Nvidia) é conveniente executar o programa CUDA. Voce pode utilizar Ubuntu. Usar um dos exemplos explicados em Introdução a CUDA - Programando threads em paralelo . Um programa com o modelo de paralelismo de dados.


Palestra CUDA -  " Paralelismo: Você Está Fazendo Isso Errado "  -   Iury Krieger    (Fullstack Developer  -   Chaordic Systems

Palestra AMBIENTE DE PROGRAMAÇÃO PARA GAMES - Denis Coelho

PROVA 1 - 29/04/2019 (sala CTC 207)


Programação Paralela com CUDA 

                 (computação heterogênea CPU + GPU)

Caracterizando CUDA
Programando com CUDA C
Exemplos de Programas CUDA
    Heterogeneous Computing (1 Bloco + 1 Thread)
    Usando Threads ( 1 Bloco + N threads)
   
Usando Blocks (N threads + 1 Block)
   
Combinando Blocks e Threads
Introdução a CUDA - Programando threads em paralelo
Caracterizando Elementos de Programaçao CUDA
Computação Paralela usando CUDA-COPPE
MINI-CURSO: Introdução à Programação em CUDA Prof. Raphael Y. de Camargo Centro de Matemática, Computação e Cognição Universidade Federal do ABC (UFABC)
Nvidia CUDA - Programming Guide
Instalação de Driver
Treinamento em CUDA
PROGRAMANDO_COM_GPUs_PARALELIZANDO_LATTICE_COM_CUDA

=================================================================================================

Prova 1 resolvida 
(2019.1)

PROVA 1 DE RECUPERAÇÃO   (Entregar de forma impressa e manuscrita (2019.1)

PROVA 2 -   Comunicação por Sockets    Prova 2 Resolvida      Prova em branco para correção de seus erros

PROVA 2 -   Prova em branco para correção de seus erros      Prova 2 Resolvida (segunda chamada)

===============================================================

Unidade 3 - Programação Distribuida com Hadoop

Hadoop - Conceitos e Exemplo Didático
(Texto Completo)
Hadoop - Slides Daniel Cordeiro

Questionário Hadoop - Fazer antes de iniciar a tarefa prática ! (pdf)
Questionário Hadoop - Fazer antes de iniciar a tarefa prática ! (docx)


Exemplo Didático Hadoop - Tarefa Prática
(Com links para instalação e outros conceitos e figuras)

Big Data e a implementação de um Sistema Distribuído com Apache Hadoop

Hadoop MapReduce: Introdução a Big Data

 

==============================================================                                          
Slides da Palestra

Tarefa 5 (Palestra) : 


Baixe o projeto, do link dado nos slides e altere o código para que o algoritmo conte as ocorrências de 3 palavras especificadas de sua escolha. Use um texto de 300 palavras. Ver no último link dos slides:   https://goo.gl/TNnQMv

Hadoop Wikipedia
                                                                                 

================================================================================================= 

Unidade 4 - Programação Paralela e Distribuída com Spark

 

PROVA 2 - 26/06/2019-Resolvida


-------------------------------------------------------------------------------------------