Ir para o conteúdo principal
Painel lateral
Disciplinas »
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
AACCs/FFLCH
Pró-Reitoria de Pós-Graduação
Outros
Suporte »
Acesso
Perfis
Ouvintes
Docentes
Criação de Disciplinas da USP
Documentação
HelpDesk e Contato
Guia de uso
Sobre
Português - Brasil (pt_br)
Deutsch (de)
English (en)
Español - Internacional (es)
Français (fr)
Italiano (it)
Português - Brasil (pt_br)
Buscar
Fechar
Buscar
Alternar entrada de pesquisa
Acessar
SFI5822 - Introdução à Programação Paralela (2020)
Início
Ambientes
2020
IFSC
SFI
SFI5822--2020
3 dezembro - 9 dezembro
Vídeo, parte 2: Mandelbrot dinâmico gerente/trabal...
Vídeo, parte 2: Mandelbrot dinâmico gerente/trabalhador
Vídeo, parte 2: Mandelbrot dinâmico gerente/trabalhador
◄ Vídeo, parte 1: Mandelbrot estático 2D
Seguir para...
Seguir para...
Avisos
Slides da apresentação
Slides da aula
Vídeo, parte 1: Sobre o material da semana
Vídeo, parte 2: Complexidade
Vídeo, parte 3: Sobre os exemplos
Vídeo, parte 4: Bubblesort e Quicksort
Vídeo, parte 5: Código bubblesort
Vídeo, parte 6: Código quicksort
Vídeo, parte 7: Códigos usando qsort e std::sort
Vídeo, parte 8: Execução
Código do bubblesort
Código do quicksort
Código usando qsort da biblioteca C
Código usando std::sort da STL
Slides
Vídeo, parte 1: Sobre o material da semana
Vídeo, parte 2: Estrutura básica de um computador
Vídeo, parte 3: Barramentos
Vídeo, parte 4: Hierarquia de memória
Vídeo, parte 5: Cache
Vídeo, parte 6: Mapeamento direto
Vídeo, parte 7: Mapeamento associativo
Vídeo, parte 8: Mapeamento associativo por conjuntos
Vídeo, parte 9: Outros fatores associados a cache
Vídeo, parte 1: Experimento com soma de matrizes
Vídeo, parte 2: Explicação dos resultados anteriores
Vídeo, parte 3: Experimento com multiplicação de matrizes
Vídeo, parte 4: Multiplicação de matrizes com troca de loops
Vídeo, parte 5: Explicação dos resultados da troca de loops
Vídeo, parte 6: Usando cachegrind
Vídeo, parte 7: Explicação do número de acessos
Vídeo, parte 8: Entradas e saídas
Vídeo, parte 9: Multiprogramação
Vídeo, parte 10: Gerenciamento de memória, particionamento fixo
Vídeo, parte 11: Gerenciamento de memória, particionamento variável
Vídeo, parte 12: Encerramento
Código: soma de matrizes por linhas
Código: soma de matrizes por colunas
Código: multiplicação de matrizes, ingênuo
Código: multiplicação de matrizes, com transposição
Código: mulitiplicação de matrizes, inversão de ordem dos loops
Vídeo, parte 1: Memória virtual
Vídeo, parte 2: Mais sobre memória virtual
Vídeo, parte 3: Continuação de memória virtual
Vídeo, parte 4: Pipeline de instruções
Vídeo, parte 5: Execução superescalar
Vídeo, parte 6: Execução superescalar, continuação
Vídeo, parte 7: Encerramento
Lista de exercícios de revisão
Teste 1: Revisão de Arquiteturas
Slides da apresentação
Vídeo, parte 1: Introdução a máquinas paralelas
Vídeo, parte 2: Estrutura de controle
Vídeo, parte 3: Estrutura de comunicação
Vídeo, parte 4: Redes de interconexão
Vídeo, parte 5: Redes dinâmicas
Vídeo, parte 6: Redes estáticas
Vídeo, parte 7: Coerência de cache
Vídeo, parte 8: Snooping e diretório
Vídeo, parte 9: Custo de comunicação
Lista de exercícios de revisão de arquiteturas paralelas
Vídeo, parte 1: Introdução aos exemplos
Vídeo, parte 2: Produto matriz-vetor
Código do produto matriz-vetor
Vídeo, parte 3: Mandelbrot
Código do fractal de Mandelbrot
Vídeo, parte 4: Propagação de calor 2D
Código da propagação de calor numa chapa
Slides da apresentação sobre processos e threads
Vídeo, parte 5: Processos e threads
Vídeo, parte 6: Estrutura de dados na memória
Vídeo, parte 7: Compartilhamento
Vídeo, parte 8: Disputa
Material extra (C++), constantes e referências
Material extra (C++), arranjos lineares
Material extra (C++), tuplas
Material extra (C++), loops
Material extra (C++), parâmetros de funções
Material extra (C++), struct e class
Material extra (C++), construtores e destruidores
Material extra (C++), sobrecarga de operadores
Material extra (C++), push_back e emplace_back
Material extra (C++), funções anônimas (lambda)
Material extra (C++), código dos exemplos
Teste 2: Revisão de arquiteturas paralelas
Vídeo, parte 1: Introdução a threads de C++
Vídeo, parte 2: Compartilhamento com disputa
Vídeo, parte 3: Compartilhamento sem disputa
Vídeo, parte 4: Retorno de valores de threads e futuros
Vídeo, parte 5: Exemplo com produto escalar
Hello world com 2 threads
Hello world com múltiplas threads
Disputa a variável global compartilhada
Disputa a variável local compartilhada
Máximo e mínimo de dois valores
Máximo e mínimo de um array
Soma dos elementos de um vetor, com disputa
Soma dos elementos de um vetor usando futuros
Trabalho 1: Implementação sequencial
Vídeo, parte 1: Produtores e consumidores
Vídeo, parte 2: Código com disputa
Vídeo, parte 3: Execução do código com disputa
Vídeo, parte 4: Execução com depuração
Vídeo, parte 5: Exclusão mútua
Vídeo, parte 6: Execução com exclusão mútua
Vídeo, parte 7: Explicação sobre mutex
Vídeo, parte 8: Variáveis de condição
Vídeo, parte 9: Execução com variáveis de condição
Código: Produtores e consumidores, com disputa
Código: Produtores e consumidores, sem disputa, mas com espera ocupada
Código: Produtores e consumidores, sem disputa e sem espera ocupada
Vídeo, parte 1: Multiplicação matriz-vetor: descrição
Vídeo, parte 2: Multiplicação matriz-vetor: código
Vídeo, parte 3: Multiplicação matriz-vetor: execução
Vídeo, parte 4: Mandelbrot: descrição
Vídeo, parte 5: Mandelbrot: código
Vídeo, parte 6: Mandelbrot: execução
Vídeo, parte 7: Propagação de calor: descrição
Vídeo, parte 8: Propagação de calor: código
Vídeo, parte 9: Propagação de calor: execução
Código: Produto matriz-vetor
Código: Mandelbrot
Código: Propagação de calor
Vídeo, parte 1: OpenMP, introdução
Vídeo, parte 2: Fork e join
Vídeo, parte 3: Hello world OpenMP
Vídeo, parte 4: Compilação e execução
Vídeo, parte 5: Disputa na atribuição
Vídeo, parte 6: Máximo e mínimo
Vídeo, parte 7: Máximo e mínimo de array
Vídeo, parte 8: Soma de array com disputa
Vídeo, parte 9: Soma de array sem disputa, versão ruim
Vídeo, parte 10: Soma de array, estilo OpenMP
Vídeo, parte 11: Produto escalar
Todos os códigos de OpenMP (parte 1 e parte 2)
Vídeo, parte 1, Produtores-consumidores, com disputa
Vídeo, parte 2: Produtores-consumidores, sem disputa
Vídeo, parte 3: Produto matriz-vetor
Vídeo, parte 4: Mandelbrot
Vídeo, parte 5: Propagação de calor
Vídeo, parte 6: Propagação de calor, segunda variante
Vídeo, parte 7: Merge sort (sequencial)
Vídeo, parte 8: Mergesort (OpenMP, com tasks)
Cheat sheet do OpenMP
Vídeo, parte 1: Introdução a MPI
Vídeo, parte 2: Conceitos básicos de MPI
Vídeo, parte 3: MPI, envio e recepção de mensagens
Vídeo, parte 4: MPI, envio e recepção de mensagens, continuação
Vídeo, parte 5: MPI, envio em uma estrutura linear
Vídeo, parte 6: MPI, comunicações não-bloqueantes
Códigos dos exemplos de comunicação ponto a ponto
Trabalho 2: Programação com memória compartilhada
Vídeo, parte 1: Broadcast
Vídeo, parte 2: Gather
Vídeo, parte 3: Scatter com tamanhos distintos e redução
Vídeo, parte 4: Tipos de dados e compatibilidade
Vídeo, parte 5: Struct
Códigos dos exemplos de operações coletivas e tipos de dados
Vídeo, parte 1: Comunicadores
Vídeo, parte 2: Topologias
Vídeo, parte 3: Produto matriz-vetor
Vídeo, parte 4: Mandelbrot, divisão estática, 1D
Códigos dos exemplos
Vídeo, parte 1: Mandelbrot estático 2D
Vídeo, parte 3: Propagação de calor
Códigos dos exemplos
Trabalho 3: Implementação com passagem de mensagens
Vídeo, parte 3: Propagação de calor ►