Eng. Thársis T. P. Souza

Tamanho: px
Começar a partir da página:

Download "Eng. Thársis T. P. Souza"

Transcrição

1 Introdução à Computação de Alto Desempenho Utilizando GPU Seminário de Programação em GPGPU Eng. Thársis T. P. Souza Instituto de Matemática e Estatística - Universidade de São Paulo

2 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 2

3 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 3

4 CPU Própria para tarefas sequenciais Cache eficiente Maior quantidade de memória principal Controle de fluxo Número de cores de 1 ordem de grandeza 1, 2 threads por core GPU Própria para tarefas com paralelismo de dados Múltiplas ULAs Maior (capacidade) operações de ponto flutuante por segundo Alto throughput de memória Dezenas de multiprocessors Múltiplas threads por multiprocessor 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 4

5 Figura 1: Número de operações de ponto flutuante por segundo 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 5

6 Figura 2: Throughput de memória CPU x GPU 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 6

7 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 7

8 General-purpose computing on Graphics Processing Units Técnica de uso de GPU para computação de propósito geral Linguagens/API s OpenGL DirectX Cg Brook Brook+ OpenCL CUDA 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 8

9 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 9

10 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 10

11 Código otimizado depende de conhecimento da arquitetura específica Shared memory / Cache configuráveis Quantos cores? Precisão de ponto flutuante depende da geração da arquitetura SFUs (Special Function Units): limitante de operações transcendentais Qual memória usar: Shared memory, Constant Memory, Global Memory, registradores, local memory, Host Memory? Quantas threads/bloco, blocos/sm, registradores/thread, threads/sm, Warps/SM, threads/warp???? 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 11

12 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 12

13 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 13

14 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 14

15 Define arquitetura base e features de uma GPU NVIDIA 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 15

16 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 16

17 Compute capability: 2.0 Single Precision Floating Point Performance : 1.03 TFlops Device copy overlap: Enabled Kernel timeout : Disabled Total dedicated memory: 3GB GDDR5 Constant mem: 64KB Numero de multiprocessadores: 14 Shared mem por mp: 48KB Registers por mp: Threads in warp: 32 Max threads per block: 1024 Max thread dimension: (1024, 1024, 64) Max grid dimension: (65535, 65535, 1) 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 17

18 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 18

19 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 19

20 Global memory de até 6GB Cache L2 (768KB) compartilhado entre todos os Cores 16 SMs Comunicação CPU-GPU via PCI-E GigaThread: distribui blocos de threads em escalonadores de SM 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 20

21 32 CUDA Cores por SM 1 CUDA Core executa 1 thread por ciclo 16 Load/Store Units Pode limitar execução a 16 threads por clock 4 Special Function Units Executa instruções transcedentais Pode limitar execução de warp a 8 ciclos 64kB (48kB/16kB) configuráveis para Shared Memory e L1 Cache 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 21

22 1 Warp = 32 threads 2 Warps (potencialmente) executados ao mesmo tempo Máximo de 48 Warps por SM Total de 1536 threads possíveis por SM 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 22

23 Fermi dual warp scheduler seleciona 2 warps e realiza uma instrução de cada warp em um grupo de 16 cores, 16 unidades de load/store ou 4 SFUs 48 warps/sm. Para quê? Latency hiding: warp com instrução de alta-latência é escalonado Muitos escalonamentos = queda de desempenho? Zero-overhead thread scheduling: seleção de warp para execução não introduz overhead 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 23

24 Modelo SIMT: Single Instruction Multiple Thread Apropriado quando todas threads em um mesmo warp seguem o mesmo caminho de fluxo de controle Quando threads em um warp seguem caminhos de fluxo de controle diferentes dizemos que elas divergem Em situação de divergência, um warp necessita de múltiplos passos para ser executado. Um para cada caminho de divergência. 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 24

25 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 25

26 Compute Unified Device Architecture Arquitetura paralela de propósito geral Tecnologia proprietária NVIDIA 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 26

27 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 27

28 Arquitetura de Computação Paralela para propósito geral Facilita computação heterogênea (CPU + GPU) Suporte a varias linguagens e APIs CUDA define: Modelo de programação Modelo de memória Modelo de execução 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 28

29 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 29

30 Porções paralelas da aplicação são executadas como kernels CUDA threads Lighweight Fast switching Milhares potencialmente executadas ao mesmo tempo 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 30

31 Um kernel é uma função executada em GPU Cada thread possui um identificador único Seleção de input/output Decisões de controle (cuidado!) Threads com decisões de controle distintas podem causar divergência em warp 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 31

32

33 Threads são agrupadas em blocos

34 Threads são agrupadas em blocos Blocos são agrupados em grid

35 Threads são agrupadas em blocos Blocos são agrupados em grid Um kernel é executado como um grid de blocos de threads

36 GPU Threads são agrupadas em blocos Blocos são agrupados em grid Um kernel é executado como um grid de blocos de threads

37 Um kernel executa um grid de blocos de threads Um bloco é formado por um conjunto de threads Cada thread pode ser unicamente endereçada 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 37

38 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 38

39 Thread Registradores 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 39

40 Thread Registradores Thread Local Memory 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 40

41 Thread Registradores Thread Local Memory Bloco Shared Memory 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 41

42 Thread Registradores Thread Local Memory Bloco Shared Memory Grid Global Memory 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 42

43 Registradores registradores são rápidos, porém escassos. Cada thread possui um conjunto privado de registradores. 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 43

44 Registradores registradores são rápidos, porém escassos. Cada thread possui um conjunto privado de registradores. Shared Memory threads em um mesmo bloco compartilham um espaço de memória, o qual funciona como um cache manipulado explicitamente pelo programa 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 44

45 Registradores registradores são rápidos, porém escassos. Cada thread possui um conjunto privado de registradores. Shared Memory threads em um mesmo bloco compartilham um espaço de memória, o qual funciona como um cache manipulado explicitamente pelo programa Local Memory cada thread possui acesso a um espaço de memória local, além de seus registradores. Essa área de memória está fora do micro-chip de processamento, junto à memória global, e portanto, ambas estas memórias possuem o mesmo tempo de acesso. 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 45

46 Registradores registradores são rápidos, porém escassos. Cada thread possui um conjunto privado de registradores. Shared Memory threads em um mesmo bloco compartilham um espaço de memória, o qual funciona como um cache manipulado explicitamente pelo programa Local Memory cada thread possui acesso a um espaço de memória local, além de seus registradores. Essa área de memória está fora do micro-chip de processamento, junto à memória global, e portanto, ambas estas memórias possuem o mesmo tempo de acesso. Global Memory esta memória está disponível para todas as threads em cada bloco e em todas as grades. Trata-se da única maneira de threads de diferentes blocos colaborarem. 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 46

47 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 47

48 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 48

49 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 49

50 Threads são executadas por cores Um bloco consiste de conjuntos de warps Um Warp é executado em em paralelo (SIMT) em um Multiprocessor Um Kernel é lançado como um grid Um grid é executado no device 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 50

51 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 51

52 Biblioteca e um compilador para criação de rotinas em GPUs NVIDIA API de mais alto nível em comparação com: Cg, OpenGL, DirectX Exige conhecimento de arquitetura para codificação Amplamente utilizada Possui grande comunidade e boa documentação Maioria de artigos publicados em programação em GPGPU utiliza CUDA C 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 52

53 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 53

54 #include <stdlib.h> #include <stdio.h> global void kernel(int *array) { //do work } int main(void) { int num_elements = 256; int num_bytes = num_elements * sizeof(int); int *host_array = 0; host_array = (int*)malloc(num_bytes); int *device_array = 0; cudamalloc((void**)&device_array, num_bytes); int block_size = 128; int grid_size = num_elements / block_size; kernel<<<grid_size,block_size>>>(de vice_array); cudamemcpy(host_array, device_array, num_bytes, cudamemcpydevicetohost); for(int i=0; i < num_elements; ++i) { printf("%d ", host_array[i]); } free(host_array); cudafree(device_array); } 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 54

55 #include <stdlib.h> #include <stdio.h> global void kernel(int *array) { //do work } // C function int main(void) { int num_elements = 256; int num_bytes = num_elements * sizeof(int); int *host_array = 0; host_array = (int*)malloc(num_bytes); int *device_array = 0; cudamalloc((void**)&device_array, num_bytes); int block_size = 128; int grid_size = num_elements / block_size; kernel<<<grid_size,block_size>>>(de vice_array); cudamemcpy(host_array, device_array, num_bytes, cudamemcpydevicetohost); for(int i=0; i < num_elements; ++i) { printf("%d ", host_array[i]); } free(host_array); cudafree(device_array); } 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 55

56 #include <stdlib.h> #include <stdio.h> global void kernel(int *array) { //do work } int main(void) { int num_elements = 256; int num_bytes = num_elements * sizeof(int); // ponteiro para host memory int *host_array = 0; // aloca espaço em host memory host_array = (int*)malloc(num_bytes); int *device_array = 0; cudamalloc((void**)&device_array, num_bytes); int block_size = 128; int grid_size = num_elements / block_size; kernel<<<grid_size,block_size>>>(de vice_array); cudamemcpy(host_array, device_array, num_bytes, cudamemcpydevicetohost); for(int i=0; i < num_elements; ++i) { printf("%d ", host_array[i]); } free(host_array); cudafree(device_array); } 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 56

57 #include <stdlib.h> #include <stdio.h> global void kernel(int *array) { //do work } int main(void) { int num_elements = 256; int num_bytes = num_elements * sizeof(int); int *host_array = 0; host_array = (int*)malloc(num_bytes); // Ponteiro para device memory int *device_array = 0; // Aloca espaço em device memory cudamalloc((void**)&device_array, num_bytes); int block_size = 128; int grid_size = num_elements / block_size; kernel<<<grid_size,block_size>>>(de vice_array); cudamemcpy(host_array, device_array, num_bytes, cudamemcpydevicetohost); for(int i=0; i < num_elements; ++i) { printf("%d ", host_array[i]); } free(host_array); cudafree(device_array); } 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 57

58 #include <stdlib.h> #include <stdio.h> global void kernel(int *array) { //do work } int main(void) { int num_elements = 256; int num_bytes = num_elements * sizeof(int); int *host_array = 0; host_array = (int*)malloc(num_bytes); int *device_array = 0; cudamalloc((void**)&device_array, num_bytes); // configuracao de bloco e grid int block_size = 128; int grid_size = num_elements / block_size; kernel<<<grid_size,block_size>>>(de vice_array); cudamemcpy(host_array, device_array, num_bytes, cudamemcpydevicetohost); for(int i=0; i < num_elements; ++i) { printf("%d ", host_array[i]); } free(host_array); cudafree(device_array); } 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 58

59 #include <stdlib.h> #include <stdio.h> // extensao global define kernel global void kernel(int *array) { //do work } int main(void) { int num_elements = 256; int num_bytes = num_elements * sizeof(int); int *host_array = 0; host_array = (int*)malloc(num_bytes); int *device_array = 0; cudamalloc((void**)&device_array, num_bytes); int block_size = 128; int grid_size = num_elements / block_size; // lancamento do kernel kernel<<<grid_size,block_size>>>(de vice_array); cudamemcpy(host_array, device_array, num_bytes, cudamemcpydevicetohost); for(int i=0; i < num_elements; ++i) { printf("%d ", host_array[i]); } free(host_array); cudafree(device_array); } 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 59

60 #include <stdlib.h> #include <stdio.h> global void kernel(int *array) { //do work } int main(void) { int num_elements = 256; int num_bytes = num_elements * sizeof(int); int *host_array = 0; host_array = (int*)malloc(num_bytes); int *device_array = 0; cudamalloc((void**)&device_array, num_bytes); int block_size = 128; int grid_size = num_elements / block_size; kernel<<<grid_size,block_size>>>(de vice_array); // transfere resultado da GPU para CPU cudamemcpy(host_array, device_array, num_bytes, cudamemcpydevicetohost); for(int i=0; i < num_elements; ++i) { printf("%d ", host_array[i]); } free(host_array); cudafree(device_array); } 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 60

61 #include <stdlib.h> #include <stdio.h> global void kernel(int *array) { //do work } int main(void) { int num_elements = 256; int num_bytes = num_elements * sizeof(int); int *host_array = 0; host_array = (int*)malloc(num_bytes); int *device_array = 0; cudamalloc((void**)&device_array, num_bytes); int block_size = 128; int grid_size = num_elements / block_size; kernel<<<grid_size,block_size>>>(de vice_array); cudamemcpy(host_array, device_array, num_bytes, cudamemcpydevicetohost); // inspecao do resultado for(int i=0; i < num_elements; ++i) { printf("%d ", host_array[i]); } free(host_array); cudafree(device_array); } 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 61

62 #include <stdlib.h> #include <stdio.h> global void kernel(int *array) { //do work } int main(void) { int num_elements = 256; int num_bytes = num_elements * sizeof(int); int *host_array = 0; host_array = (int*)malloc(num_bytes); int *device_array = 0; cudamalloc((void**)&device_array, num_bytes); int block_size = 128; int grid_size = num_elements / block_size; kernel<<<grid_size,block_size>>>(de vice_array); cudamemcpy(host_array, device_array, num_bytes, cudamemcpydevicetohost); for(int i=0; i < num_elements; ++i) { printf("%d ", host_array[i]); } // desaloca memoria free(host_array); cudafree(device_array); } 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 62

63 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 63

64 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 64

65 Definido por extensão global Configurado por sintaxe <<<grid_size, block_size>>> 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 65

66 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 66

67 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 67

68 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 68

69 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 69

70 Todas as threads em um mesmo grid executam o mesmo kernel Necessidade de haver coordenadas únicas para distinção 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 70

71 Todas as threads em um mesmo grid executam o mesmo kernel Necessidade de haver coordenadas únicas para distinção Coordenadas criadas pelo CUDA Runtime System: 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 71

72 Todas as threads em um mesmo grid executam o mesmo kernel Necessidade de haver coordenadas únicas para distinção Coordenadas criadas pelo CUDA Runtime System: blockidx índice do bloco 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 72

73 Todas as threads em um mesmo grid executam o mesmo kernel Necessidade de haver coordenadas únicas para distinção Coordenadas criadas pelo CUDA Runtime System: blockidx índice do bloco threadidx índice da thread 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 73

74 Todas as threads em um mesmo grid executam o mesmo kernel Necessidade de haver coordenadas únicas para distinção Coordenadas criadas pelo CUDA Runtime System: blockidx índice do bloco threadidx índice da thread griddim dimensão do grid 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 74

75 Todas as threads em um mesmo grid executam o mesmo kernel Necessidade de haver coordenadas únicas para distinção Coordenadas criadas pelo CUDA Runtime System: blockidx índice do bloco threadidx índice da thread griddim dimensão do grid blockdim dimensão dos blocos 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 75

76 Kernel é bidimensional 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 76

77 Kernel é bidimensional Indexação de bloco blockidx.x blockidx.y 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 77

78 Kernel é bidimensional Indexação de bloco blockidx.x blockidx.y Blocos são tridimensionais 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 78

79 Kernel é bidimensional Indexação de bloco blockidx.x blockidx.y Blocos são tridimensionais Indexação de thread threadidx.x threadidx.y threadidx.z 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 79

80 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 80

81 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 81

82 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 82

83 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs Comunidade GPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 83

84 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 84

85 Universidades brasileiras ensinando CUDA 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 85

86 Centro Nacional de Processamento de Alto Desempenho 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 86

87 Introdução CPU X GPU GPGPU Arquitetura GPU moderna Compute Capability NVIDIA Fermi CUDA Arquitetura Modelo de programação Modelo de memória Modelo de execução CUDA C ModeIo de Computação Heterogênea Kernels CUDA Memories CUDA Threads Libs ComunidadeGPGPU Referências 01/04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 87

88 CUDA by example, an introduction to General-Purpose GPU Programming, J. Sanders and E. Kandrot, Addison Wesley. CUDA Zone ( home new.html), Março GPUBrasil ( Março Optimization principles and application performance evaluation of a multithreaded gpu using cuda. Shane Ryoo, Christopher I. Rodrigues, Sara S. Baghsorkhi, Sam S. Stone, David B. Kirk, and Wen mei W. Hwu. In PPoPP, pages ACM, NVIDIA CUDA C Best Practices Guide. NVIDIA, Version 3.2, 20/8/2010. NVIDIA CUDA C Programming Guide. NVIDIA, Version 3.2, 11/9/2010. Programming Massively Parallel Processors: A Hands-on Approach, D. Kirk, W. Hwu, Morgan Kaufman. The GPU Computing Era. J. Nickolls and W. Dally. IEEE Micro, 30(2):56 69, The Top 10 Innovations in the New NVIDIA Fermi Architecture, and the Top 3 Next Challenges. David Patterson, September 30, NVIDIA's Next Generation CUDA Compute Architecture: Fermi. NVIDIA Whitepaper, Version /04/2011 Instituto de Matemática e Estatística - Universidade de São Paulo 88

89 Introdução à Computação de Alto Desempenho Utilizando GPU Seminário de Programação em GPGPU Eng. Thársis T. P. Souza Instituto de Matemática e Estatística - Universidade de São Paulo

5 Unidades de Processamento Gráfico GPUs

5 Unidades de Processamento Gráfico GPUs 5 Unidades de Processamento Gráfico GPUs As GPUs são processadores maciçamente paralelos, com múltiplos elementos de processamento, tipicamente utilizadas como aceleradores de computação. Elas fornecem

Leia mais

Patrício Domingues Dep. Eng. Informática ESTG Instituto Politécnico de Leiria Leiria, Maio Programação Genérica de GPUs

Patrício Domingues Dep. Eng. Informática ESTG Instituto Politécnico de Leiria Leiria, Maio Programação Genérica de GPUs Patrício Domingues Dep. Eng. Informática ESTG Instituto Politécnico de Leiria Leiria, Maio 2012 http://bit.ly/patricio Programação Genérica de GPUs 1 CUDA Teaching Center A ESTG/IPLeiria é um CUDA Teaching

Leia mais

Processamento de Alto Desempenho utilizando Unidade de Processamento Gráfico - GPU

Processamento de Alto Desempenho utilizando Unidade de Processamento Gráfico - GPU Processamento de Alto Desempenho utilizando Unidade de Processamento Gráfico - GPU Francisco Ribacionka e Ettore Enrico (STI ) USP/STI/InterNuvem internuvem@usp.br Março -2016 Processamento de Alto Desempenho

Leia mais

Uma introdução para computação paralela de modelos massivos. Adriano Brito Pereira inf.puc-rio.br

Uma introdução para computação paralela de modelos massivos. Adriano Brito Pereira inf.puc-rio.br Uma introdução para computação paralela de modelos massivos Adriano Brito Pereira 1021752 apereira @ inf.puc-rio.br Departamento de Informática Novembro / 2010 1 Resultados obtivos com Manta Framework

Leia mais

PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1

PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1 PARALELIZAÇÃO DE APLICAÇÕES NA ARQUITETURA CUDA: UM ESTUDO SOBRE VETORES 1 DUTRA, Evandro Rogério Fruhling 2 ; VARINI, Andre Luis 2 ; CANAL, Ana Paula 2 1 Trabalho de Iniciação Científica _UNIFRA 2 Ciência

Leia mais

Celso L. Mendes LAC /INPE

Celso L. Mendes LAC /INPE Arquiteturas para Processamento de Alto Desempenho (PAD) Aula 9 Celso L. Mendes LAC /INPE Email: celso.mendes@inpe.br Aula 9 (3/5): E. Aceleradores Estrutura Planejada i. Estruturas mais Populares ii.

Leia mais

What is? Eduardo Viola Nicola Disciplina de IPPD

What is? Eduardo Viola Nicola Disciplina de IPPD What is? Eduardo Viola Nicola evnicola@inf.ufpel.edu.br Disciplina de IPPD Sumário 1)Introdução 2)Princípio Geral de Funcionamento 3)Exemplos de Aplicações 4)Modelo de Programação 5)Linguagens Suportadas

Leia mais

GPU Computing: Implementação do método do Gradiente Conjugado utilizando CUDA

GPU Computing: Implementação do método do Gradiente Conjugado utilizando CUDA UNIVERSIDADE DE CAXIAS DO SUL CENTRO DE COMPUTAÇÃO E TECNOLOGIA DA INFORMAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO MAURÍCIO GRISA GPU Computing: Implementação do método do Gradiente Conjugado

Leia mais

Arquitetura e Programação de GPU. Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973

Arquitetura e Programação de GPU. Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973 Arquitetura e Programação de GPU Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973 Agenda Primeiras Placas de Vídeo Primeira GPU Arquitetura da GPU NVIDIA Arquitetura

Leia mais

Análise de desempenho e eficiência energética de aceleradores NVIDIA Kepler

Análise de desempenho e eficiência energética de aceleradores NVIDIA Kepler Análise de desempenho e eficiência energética de aceleradores NVIDIA Kepler Emilio Hoffmann, Bruno M. Muenchen, Taís T. Siqueira, Edson L. Padoin e Philippe O. A. Navaux Universidade Regional do Noroeste

Leia mais

Waldemar Celes. 25 de Agosto de 2014

Waldemar Celes. 25 de Agosto de 2014 Introdução a CUDA INF2062 Tópicos em Simulação e Visualização Waldemar Celes celes@inf.puc-rio.br Tecgraf, DI/PUC-Rio 25 de Agosto de 2014 W. Celes Introdução a CUDA 1 GPGPU Programação de propósito geral

Leia mais

PARALELIZAÇÃO DO ALGORITMO AES E ANÁLISE SOBRE GPGPU 1 PARALLELIZATION OF AES ALGORITHM AND GPU ANALYSIS

PARALELIZAÇÃO DO ALGORITMO AES E ANÁLISE SOBRE GPGPU 1 PARALLELIZATION OF AES ALGORITHM AND GPU ANALYSIS Disciplinarum Scientia. Série: Naturais e Tecnológicas, Santa Maria, v. 16, n. 1, p. 83-94, 2015. Recebido em: 11.04.2015. Aprovado em: 30.06.2015. ISSN 2176-462X PARALELIZAÇÃO DO ALGORITMO AES E ANÁLISE

Leia mais

EXPERIMENTOS EM GPU PARA O MODELO DE PREVISÃO AMBIENTAL CCATT-BRAMS. RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA (PIBIC/CNPq/INPE)

EXPERIMENTOS EM GPU PARA O MODELO DE PREVISÃO AMBIENTAL CCATT-BRAMS. RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA (PIBIC/CNPq/INPE) EXPERIMENTOS EM GPU PARA O MODELO DE PREVISÃO AMBIENTAL CCATT-BRAMS RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA (PIBIC/CNPq/INPE) Leandro dos Santos Lessa (FATEC, Bolsista PIBIC/CNPq) E-mail: leandroicinpe@gmail.com

Leia mais

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva Introdução à Programação Paralela através de Padrões Denise Stringhini Calebe Bianchini Luciano Silva Sumário Introdução: conceitos de paralelismo Conceitos básicos sobre padrões de programação paralela

Leia mais

Patricia Akemi Ikeda

Patricia Akemi Ikeda Um estudo do uso eficiente de programas em placas gráficas Patricia Akemi Ikeda Dissertação apresentada ao Instituto de Matemática e Estatística da Universidade de São Paulo para obtenção do título de

Leia mais

GPU (Graphics Processing Unit) Bruno Padilha Gregory De Bonis Luciana Kayo

GPU (Graphics Processing Unit) Bruno Padilha Gregory De Bonis Luciana Kayo GPU (Graphics Processing Unit) Bruno Padilha - 5745282 Gregory De Bonis - 6431180 Luciana Kayo - 6430992 O que é? O que é? - Processador auxiliar responsável principalmente por operações de ponto flutuante

Leia mais

Simulações nanceiras em GPU

Simulações nanceiras em GPU Simulações nanceiras em GPU Thársis Tuani Pinto Souza Dissertação de Mestrado apresentada ao Instituto de Matemática e Estatística da Universidade de São Paulo para obtenção do título de Mestre em Ciências

Leia mais

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core RSS-Verão-01/08 p.1/36 Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7 Escola de Verão 2008 Arquiteturas Multi-Core Renato S. Silva LNCC - MCT Janeiro de 2008 RSS-Verão-01/08 p.2/36 Objetivo:

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Classificação de Flynn Fonte: Professoras. Sarita UFRJ e Thais V. Batista - UFRN Arquiteturas Paralelas Computação Paralela Conceitos Permite a execução das tarefas em menor tempo,

Leia mais

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela Arquitetura de Computadores Paralelos Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela Por que estudar Computação Paralela e Distribuída? Os computadores sequenciais

Leia mais

Análise da Hierarquia de Memórias em GPGPUs

Análise da Hierarquia de Memórias em GPGPUs UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO DANILO FUKUDA CONRAD Análise da Hierarquia de Memórias em GPGPUs Trabalho de Conclusão apresentado

Leia mais

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013 Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2012/2013 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 23 CUDA "Compute Unified Device Architecture" Parte 2

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES RCM00014 Haswell wafer ARQUITETURA DE COMPUTADORES Prof. Luciano Bertini Site: http://www.professores.uff.br/lbertini/ Objetivos do Curso Entendimento mais aprofundado do funcionamento

Leia mais

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011 Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2010/2011 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 11 CUDA Parte 2 N. Cardoso & P. Bicudo Programação em

Leia mais

UNIVERSIDADE ESTADUAL PAULISTA Júlio de Mesquita Filho Pós-Graduação em Ciência da Computação

UNIVERSIDADE ESTADUAL PAULISTA Júlio de Mesquita Filho Pós-Graduação em Ciência da Computação UNIVERSIDADE ESTADUAL PAULISTA Júlio de Mesquita Filho Pós-Graduação em Ciência da Computação Thiago Alexandre Domingues de Souza Uma Solução Paralela de Agrupamento de Dados em GPU UNESP 2017 Souza, Thiago

Leia mais

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013 Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2012/2013 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 19 CUDA "Compute Unified Device Architecture" Parte 1

Leia mais

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011

Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011 Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2010/2011 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 12 CUDA Parte 3 N. Cardoso & P. Bicudo Programação em

Leia mais

de petróleo. Um novo domínio chamado computação de propósito geral em processadores gráficos (GPGPU) surgiu quando os pipelines de gráficos de

de petróleo. Um novo domínio chamado computação de propósito geral em processadores gráficos (GPGPU) surgiu quando os pipelines de gráficos de 12 1 1.1. Motivações Dentre os tipos de técnicas de Inteligência Artificial existentes, as técnicas de Programação Genética (PG) continuam mudando rapidamente conforme os pesquisadores e profissionais

Leia mais

Computadores e Programação (DCC/UFRJ)

Computadores e Programação (DCC/UFRJ) Computadores e Programação (DCC/UFRJ) Aula 3: 1 2 3 Abstrações do Sistema Operacional Memória virtual Abstração que dá a cada processo a ilusão de que ele possui uso exclusivo da memória principal Todo

Leia mais

Otimizando o uso do Subsistema de Memória de GPUs para Aplicações Baseadas em Estênceis

Otimizando o uso do Subsistema de Memória de GPUs para Aplicações Baseadas em Estênceis Otimizando o uso do Subsistema de Memória de GPUs para Aplicações Baseadas em Estênceis Ricardo K. Lorenzoni, Matheus S. Serpa, Edson L. Padoin,, Jairo Panetta Philippe O. A. Navaux, Jean-François Méhaut

Leia mais

Análise de desempenho da paralelização do cálculo da matriz de correlação com tamanho arbitrário, utilizando GPU

Análise de desempenho da paralelização do cálculo da matriz de correlação com tamanho arbitrário, utilizando GPU Análise de desempenho da paralelização do cálculo da matriz de correlação com tamanho arbitrário, utilizando GPU Íris A. Santos 1, Chaina S. Oliveira 1, Carlos A. Estombelo-Montesco 1 1 Departamento de

Leia mais

Exploração de Paralelismo em Criptografia Utilizando GPUs

Exploração de Paralelismo em Criptografia Utilizando GPUs Renan Corrêa Detomini Exploração de Paralelismo em Criptografia Utilizando GPUs Monografia apresentada ao Departamento de Ciências de Computação e Estatística do Instituto de Biociências, Letras e Ciências

Leia mais

VirtCUDA: Possibilitando a execução de aplicações CUDA em Máquinas Virtuais

VirtCUDA: Possibilitando a execução de aplicações CUDA em Máquinas Virtuais UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA ENGENHARIA DA COMPUTAÇÃO ALAN DIEGO SANTOS VirtCUDA: Possibilitando a execução de aplicações CUDA em Máquinas Virtuais Trabalho de Conclusão

Leia mais

Faculdade de Computação 3 a Prova de Arquitetura e Organização de Computadores 2 Parte I Prof. Cláudio C. Rodrigues

Faculdade de Computação 3 a Prova de Arquitetura e Organização de Computadores 2 Parte I Prof. Cláudio C. Rodrigues Faculdade de Computação 3 a Prova de Parte I Prof. Cláudio C. Rodrigues Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Problemas: P1. Qual o

Leia mais

Introdução à Computação Heterogênea

Introdução à Computação Heterogênea Capítulo 7 Introdução à Computação Heterogênea Denise Stringhini, Rogério A. Gonçalves, Alfredo Goldman Resumo Diversos tipos de coprocessadores tem sido utilizados a fim de acelerar a execução de aplicações

Leia mais

Disciplina de Arquitetura de Computadores

Disciplina de Arquitetura de Computadores USP - ICMC - SSC SSC 0510 - Informática - 2o. Semestre 2009 Disciplina de Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

1 Padrões de Implementação em Processamento de Imagens. 2 Resumo. 4 Computação paralela. 1.1 Relátório final para PIBIC/CNPq

1 Padrões de Implementação em Processamento de Imagens. 2 Resumo. 4 Computação paralela. 1.1 Relátório final para PIBIC/CNPq 1 Padrões de Implementação em Processamento de Imagens 1.1 Relátório final para PIBIC/CNPq Victor M. de A. Oliveira, Rubens Campos Machado Centro de Tecnologia da Informação Renato Archer CTI Divisão de

Leia mais

Edison Gustavo Muenz. Estudo e implementação de um algoritmo de processamento de imagens com técnicas GPGPU

Edison Gustavo Muenz. Estudo e implementação de um algoritmo de processamento de imagens com técnicas GPGPU Edison Gustavo Muenz Estudo e implementação de um algoritmo de processamento de imagens com técnicas GPGPU Florianópolis SC Agosto / 2008 Edison Gustavo Muenz Estudo e implementação de um algoritmo de

Leia mais

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado Multiprocessadores - A evolução tecnológica dos processadores iria diminuir drasticamente. 2- O caminho para o aumento de desempenho é de unir mais de um processador para realizar a mesma tarefa em menos

Leia mais

Universidade Federal do ABC. Dissertação de Mestrado. Aderbal de Morais Junior

Universidade Federal do ABC. Dissertação de Mestrado. Aderbal de Morais Junior Universidade Federal do ABC Curso de Pós Graduação em Ciência da Computação Dissertação de Mestrado Aderbal de Morais Junior UMA BIBLIOTECA PARA DESENVOLVIMENTO DE APLICAÇÕES CUDA EM AGLOMERADOS DE GPUS

Leia mais

Universidade Nova de Lisboa Faculdade de Ciências e Tecnologia Departamento de Informática

Universidade Nova de Lisboa Faculdade de Ciências e Tecnologia Departamento de Informática Universidade Nova de Lisboa Faculdade de Ciências e Tecnologia Departamento de Informática Dissertação de Mestrado em Engenharia Informática 2º Semestre, 2008/2009 Paralelização de Algoritmos de Filtragem

Leia mais

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel Processadores 8086 Registradores: 16 bits 1978 Data bus:

Leia mais

Impacto da Arquitetura de Memória de GPGPUs na Velocidade da Computação de Estênceis

Impacto da Arquitetura de Memória de GPGPUs na Velocidade da Computação de Estênceis Impacto da Arquitetura de Memória de GPGPUs na Velocidade da Computação de Estênceis Thiago C. Nasciutti 1, Jairo Panetta 1 1 Divisão de Ciência da Computação Instituto Tecnológico de Aeronáutica (ITA)

Leia mais

The future is parallel but it may not be easy

The future is parallel but it may not be easy The future is parallel but it may not be easy Adriano Tabarelli, Alex Morinaga, Caio Silva, Cássia Ferreira, Daniel Santos, Eduardo Apolinário, Hugo Posca, Thiago Batista, Paulo Floriano Universidade de

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Arquitetura de Computadores Componentes básicos de um computador Memória Processador Periféricos Barramento O processador (ou microprocessador) é responsável pelo tratamento de informações armazenadas

Leia mais

Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas

Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas Claudio André claudio.andre@correios.net.br Motivação Seu computador

Leia mais

Taxonomia de Flynn. Procura classificar todas as arquitecturas de computadores com base no processamento das instruções e dos dado.

Taxonomia de Flynn. Procura classificar todas as arquitecturas de computadores com base no processamento das instruções e dos dado. Multi-processamento Taxonomia de Flynn Arquitecturas SIMD Instruções vectoriais Arquitecturas MIMD Tipos de arquitectura MIMD Memória partilhada Multi-cores Taxonomia de Flynn Procura classificar todas

Leia mais

O Problema do Fractal de Mandelbrot como Comparativo de Arquiteturas de Memória Compartilhada GPU vs OpenMP

O Problema do Fractal de Mandelbrot como Comparativo de Arquiteturas de Memória Compartilhada GPU vs OpenMP O Problema do Fractal de Mandelbrot como Comparativo de Arquiteturas de Memória Compartilhada GPU vs OpenMP Bruno P. dos Santos, Dany S. Dominguez, Esbel V. Orellana Departamento de Ciências Exatas e Tecnológicas

Leia mais

1. Conceitos Básicos de Computação

1. Conceitos Básicos de Computação Introdução à Computação I IBM1006 1. Conceitos Básicos de Computação Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 1.Conceitos Básicos de Computação 1.1.

Leia mais

Introdução à Programação de Propósito Geral em Hardware Gráfico

Introdução à Programação de Propósito Geral em Hardware Gráfico Introdução à Programação de Propósito Geral em Hardware Gráfico Cristina Nader Vasconcelos 1 Paulo Cezar Carvalho 2 Marcelo Gattass 1 Resumo: A Unidade de Processamento Gráfico do inglês Graphics Processing

Leia mais

GPUs : Arquitetura e Programação. Bruno Cardoso Lopes Instituto de Computação - UNICAMP

GPUs : Arquitetura e Programação. Bruno Cardoso Lopes Instituto de Computação - UNICAMP GPUs : Arquitetura e Programação Bruno Cardoso Lopes Instituto de Computação - UNICAMP Agenda Introdução Stream processors programáveis Imagine stream processor Programação para GPUs NVIDIA CUDA Conclusão

Leia mais

Uma Proposta de Aumento de Desempenho na Simulação de Árvores Trinomiais para Precificação de Opções

Uma Proposta de Aumento de Desempenho na Simulação de Árvores Trinomiais para Precificação de Opções Uma Proposta de Aumento de Desempenho na Simulação de Árvores Trinomiais para Precificação de Opções Marcelo Lisboa Rocha Curso de Ciência da Computação UFT 109 Norte, Av. NS 15, ALCNO 14. Bloco II, Sala

Leia mais

William Stallings Organização de computadores digitais. Capítulo 11 Estrutura e função da CPU

William Stallings Organização de computadores digitais. Capítulo 11 Estrutura e função da CPU William Stallings Organização de computadores digitais Capítulo 11 Estrutura e função da CPU Encruzilhada na arquitetura de computadores 2004/2005 Antiga opinião Nova visão a energia é de graça, os transistores

Leia mais

Técnicas de Computação de Alto Desempenho para o Processamento e Análise de Imagens Complexas da Cavidade Pélvica Feminina

Técnicas de Computação de Alto Desempenho para o Processamento e Análise de Imagens Complexas da Cavidade Pélvica Feminina Técnicas de Computação de Alto Desempenho para o Processamento e Análise de Imagens Complexas da Cavidade Pélvica Feminina Carlos Alex S. J. Gulo Orientador: Prof. Dr. João Manuel R. S. Tavares Co-Orientador:

Leia mais

Análise de algoritmo de modelagem 2D em problemas de sísmica utilizando GPU

Análise de algoritmo de modelagem 2D em problemas de sísmica utilizando GPU UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMÁTICA Trabalho de Graduação Análise de algoritmo de modelagem 2D em problemas de sísmica utilizando GPU Aluno: Bruno Correia da Silva (bcs2@cin.ufpe.br)

Leia mais

Arquitetura de Sistemas Operativos

Arquitetura de Sistemas Operativos Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Threads Conceito Um processo é um programa em execução. A execução de um processo é sequencial: pode-se caracterizar um processo pelo

Leia mais

SSC510 Arquitetura de Computadores. 12ª aula

SSC510 Arquitetura de Computadores. 12ª aula SSC510 Arquitetura de Computadores 12ª aula EVOLUÇÃO DA ARQUITETURA INTEL PROFA. SARITA MAZZINI BRUSCHI 1 Pentium - Modelos 2 Pentium - Arquiteturas Netburst P7 Sétima geração dos processadores da arquitetura

Leia mais

Multiprogramação leve em arquiteturas multi-core

Multiprogramação leve em arquiteturas multi-core Multiprogramação leve em arquiteturas multi-core Prof. Dr. Departamento de Informática Universidade Federal de Pelotas Sumário Arquiteturas multi-core Programação multithread Ferramentas de programação

Leia mais

Aula 10 - Streams (Parte I)

Aula 10 - Streams (Parte I) Disciplina de TICs 1 - Introdução a Programação em GPGPU Aula 10 - Streams (Parte I) Introdução Até então foi visto como engenho de processamento paralelo massivo de dados nas GPUs pode aumentar assombrosamente

Leia mais

29/3/16. Informações gerais. Carga horária semestral total: 60 horas Horário: Processamento Paralelo Arquitetura de Sistemas Paralelos e Distribuídos

29/3/16. Informações gerais. Carga horária semestral total: 60 horas Horário: Processamento Paralelo Arquitetura de Sistemas Paralelos e Distribuídos Processamento Paralelo Arquitetura de Sistemas Paralelos e Distribuídos Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) 2016/01 Informações gerais Página web: http://nemo.inf.ufes.br/jpalmeida/ensino

Leia mais

CUDA. José Ricardo da Silva Jr.

CUDA. José Ricardo da Silva Jr. CUDA José Ricardo da Silva Jr. Medialab Ins1tuto de Computação Universidade Federal Fluminense CUDA Research Center & CUDA Teaching Center Centro de excelência da NVIDIA desde julho 2012 Perfil Bacharel

Leia mais

Alocação Dinâmica em C

Alocação Dinâmica em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara

Leia mais

Processador. Processador

Processador. Processador Departamento de Ciência da Computação - UFF Processador Processador Prof. Prof.Marcos MarcosGuerine Guerine mguerine@ic.uff.br mguerine@ic.uff.br 1 Processador Organização básica de um computador: 2 Processador

Leia mais

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO LÓGICA DE PROGRAMAÇÃO PROFª. M.Sc. JULIANA H Q BENACCHIO Primeiro programa em C #include int main() { int num1, num2, result; scanf("%d",&num1); scanf("%d",&num2); result = num1 + num2; printf("%d",

Leia mais

Unidade Central de Processamento UCP (CPU)

Unidade Central de Processamento UCP (CPU) Unidade Central de Processamento UCP (CPU)! Arquitetura Convencional (Von Neumann) UCP BARRAMENTO MEMÓRIA PRINCIPAL ENTRADA E SAÍDA ! Visão geral da CPU UC - UNIDADE DE CONTROLE REGISTRADORES A B C D ALU

Leia mais

CUDA VS. OPENCL: UMA COMPARAÇÃO TEÓRICA E TECNOLÓGICA RESUMO

CUDA VS. OPENCL: UMA COMPARAÇÃO TEÓRICA E TECNOLÓGICA RESUMO PAULA, L. C. M. CUDA vs. OpenCL: uma comparação teórica e tecnológica 31 CUDA VS. OPENCL: UMA COMPARAÇÃO TEÓRICA E TECNOLÓGICA Lauro Cássio Martins de Paula 1 RESUMO Apresenta-se neste trabalho uma comparação

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 4: Programação Concorrente Diego Passos Últimas Aulas Processos Compostos por: Código (programa). Estado (memória, registradores). Em um sistema com multiprogramação:

Leia mais

Análise Comparativa de Algoritmos NP-Completo Executados em CPU E GPU Utilizando CUDA

Análise Comparativa de Algoritmos NP-Completo Executados em CPU E GPU Utilizando CUDA Computer on the Beach 2013 - Artigos Completos 79 Análise Comparativa de Algoritmos NP-Completo Executados em CPU E GPU Utilizando CUDA Elcio Arthur Cardoso, Rafael de Santiago Curso de Ciência da Computação

Leia mais

SSC0611 Arquitetura de Computadores

SSC0611 Arquitetura de Computadores SSC0611 Arquitetura de Computadores 7ª Aula Pipeline Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Arquitetura CISC CISC Complex Instruction Set Computer Computadores complexos devido a: Instruções

Leia mais

Sistemas Distribuídos e Paralelos

Sistemas Distribuídos e Paralelos Sistemas Distribuídos e Paralelos Aula #6: Programação paralela em sistemas de memória compartilhada. ISUTIC - 2016 Eng. Alexander Rodríguez Bonet Aula de hoje Regiões paralelas. Cláusulas de âmbito. Partilha

Leia mais

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06 Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação COMO UM PROGRAMA ESCRITO

Leia mais

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Arquitetura e Organização de Processadores Aula 1 Introdução Arquitetura e Organização 1. Arquitetura

Leia mais

Gerência de Recursos. Gerência do Processador

Gerência de Recursos. Gerência do Processador Gerência de Recursos Gerência do Processador Introdução Com o surgimento dos sistemas multiprogramáveis, onde múltiplos processos poderiam permanecer na memória principal compartilhando o uso da CPU, a

Leia mais

Técnicas de Otimização de Código para Placas de Processamento Gráfico

Técnicas de Otimização de Código para Placas de Processamento Gráfico Técnicas de Otimização de Código para Placas de Processamento Gráfico Fernando Magno Quintão Pereira Abstract The low cost and the increasing programmability of graphics processing units, popularly know

Leia mais

Linguagem de Programação II

Linguagem de Programação II Linguagem de Programação II Carlos Eduardo Ba6sta Centro de Informá6ca - UFPB bidu@ci.ufpb.br Mo6vação Adaptar a estrutura lógica de um problema (Ex.: Servidores Web). Lidar com disposi6vos independentes

Leia mais

Micro-Arquiteturas de Alto Desempenho. Introdução. Ementa

Micro-Arquiteturas de Alto Desempenho. Introdução. Ementa DCC-IM/NCE UFRJ Pós-Graduação em Informática Micro-Arquiteturas de Alto Desempenho Introdução Gabriel P. Silva Ementa Revisão de Organização de Computadores Hierarquia de Memória Memória Virtual Memória

Leia mais

Impacto do Subsistema de Memória em Arquiteturas CPU e GPU

Impacto do Subsistema de Memória em Arquiteturas CPU e GPU Impacto do Subsistema de Memória em Arquiteturas CPU e GPU Matheus S. Serpa, Eduardo H. M. Cruz, Francis B. Moreira, Matthias Diener, Philippe O. A. Navaux 1 Instituto de Informática Universidade Federal

Leia mais

Arquitetura SUN UltraSPARC III Cu

Arquitetura SUN UltraSPARC III Cu Arquitetura SUN UltraSPARC III Cu Tasso Gomes de Faria 1 1 Instituto de Informática Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15.064 91.501-970 Porto Alegre RS Brazil tfaria@inf.pucrs.br

Leia mais

Desempenho. Sistemas de Computação

Desempenho. Sistemas de Computação Desempenho Definição Medidas de desempenho utilizadas Tempo de resposta ou tempo de execução: tempo decorrido entre o início da execução de um programa e o seu final Quantidade de trabalho realizada em

Leia mais

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register PROCESSADORES Um computador digital consiste em um sistema interconectado de processadores, memória e dispositivos de entrada e saída. A CPU é o cérebro do computador. Sua função é executar programas armazenados

Leia mais

http://www.ic.uff.br/~debora/fac! 1 Capítulo 4 Livro do Mário Monteiro Introdução Hierarquia de memória Memória Principal Organização Operações de leitura e escrita Capacidade 2 Componente de um sistema

Leia mais

Carlos Alex Sander Juvêncio Gulo. Técnicas de paralelização em GPGPU aplicadas em algoritmo para remoção de ruído multiplicativo

Carlos Alex Sander Juvêncio Gulo. Técnicas de paralelização em GPGPU aplicadas em algoritmo para remoção de ruído multiplicativo Carlos Alex Sander Juvêncio Gulo Técnicas de paralelização em GPGPU aplicadas em algoritmo para remoção de ruído multiplicativo São José do Rio Preto 2012 Carlos Alex Sander Juvêncio Gulo Técnicas de paralelização

Leia mais

Análise e Testes de Algoritmos Utilizando Sistemas de Arquiteturas Híbridas CPU/GPU

Análise e Testes de Algoritmos Utilizando Sistemas de Arquiteturas Híbridas CPU/GPU Análise e Testes de Algoritmos Utilizando Sistemas de Arquiteturas Híbridas CPU/GPU Danilo, Silva Maciel Univem - Marília, Brasil danilo.maciel@univem.edu.br Mauricio Duarte maur.duarte@gmail.com Univem

Leia mais

Computação Heterogênea Programação paralela, clusters e GPUs

Computação Heterogênea Programação paralela, clusters e GPUs Computação Heterogênea Programação paralela, clusters e GPUs Profa. Dra. Denise Stringhini (ICT- Unifesp) Primeiro Encontro do Khronos Chapters Brasil Belo Horizonte, 20/09/2013 Conteúdo Computação heterogênea:

Leia mais

Aula 03. Componentes Básicos de um Computador, Dispositivos de Entrada e Saída, Dispositivos de Armazenamento de Dados, Periféricos.

Aula 03. Componentes Básicos de um Computador, Dispositivos de Entrada e Saída, Dispositivos de Armazenamento de Dados, Periféricos. Aula 03 Componentes Básicos de um Computador, Dispositivos de Entrada e Saída, Dispositivos de Armazenamento de Dados, Periféricos. Máquina de Von Neuman Memória Entrada Unidade Central de Processamento

Leia mais

Programação Paralela e Distribuída

Programação Paralela e Distribuída Curso de Informática DCC-IM / UFRJ Programação Paralela e Distribuída Um curso prático Mario J. Júnior Gabriel P. Silva Colaboração: Adriano O. Cruz, Julio S. Aude Ementa Paradigma de Troca de Mensagens

Leia mais

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO4: MEMÓRIAPRINCIPAL

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO4: MEMÓRIAPRINCIPAL ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO4: MEMÓRIAPRINCIPAL MEMÓRIA Componente de um sistema de computação cuja função é armazenar informações que são manipuladas pelo sistema para que possam ser recuperadas

Leia mais

Paralelização do Método de Jacobi em Memória Compartilhada 1

Paralelização do Método de Jacobi em Memória Compartilhada 1 Paralelização do Método de Jacobi em Memória Compartilhada 1 Claudio Schepke cschepke@inf.ufrgs.br 1 PPGC - Instituto de Informática - UFRGS Introdução ao Processamento Paralelo e Distribuído Professor

Leia mais

Sistemas Operacionais Aula 3

Sistemas Operacionais Aula 3 Sistemas Operacionais Aula 3 Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Curso de Análise e Desenvolvimento de Sistemas de Informação Recife - PE O que fazer

Leia mais

Programação Paralela em Ambientes Computacionais Heterogêneos com OpenCL

Programação Paralela em Ambientes Computacionais Heterogêneos com OpenCL Programação Paralela em Ambientes Computacionais Heterogêneos com OpenCL César L. B. Silveira Prof. Dr. Luiz G. da Silveira Jr. Prof. Dr. Gerson Geraldo H. Cavalheiro 28 de outubro de 2010 contato@v3d.com.br

Leia mais

Introdução à Computação: Sistemas de Computação

Introdução à Computação: Sistemas de Computação Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

Leia mais

Organização de Sistemas de Computadores

Organização de Sistemas de Computadores Organização de Sistemas de Computadores Cap. 2 (Tanenbaum), Cap. 3 (Weber) 2.1 Processadores 1 CPU UC = buscar instruções na memória principal e determinar o seu tipo ULA = adição e AND Registradores =

Leia mais

Hardware Conceitos Básicos. Introdução*à*Informática 14

Hardware Conceitos Básicos. Introdução*à*Informática 14 Hardware Conceitos Básicos Introdução*à*Informática 14 Hardware Conceitos Básicos Componentes principais de um computador Introdução*à*Informática 15 Hardware Conceitos Básicos CPU (Unidade Central de

Leia mais

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído Arquitetura de Computadores Sistemas computacionais para processamento paralelo e distribuído Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO Processamento

Leia mais

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos Conceito de Processo Módulo 4: Processos Um Sistema Operacional executa uma variedade de programas: Sistemas de processamento em lotes (batch) processa jobs Sistemas de tempo partilhado (time shared) roda

Leia mais

28/8/13. Processadores. Introdução

28/8/13. Processadores. Introdução Processadores 1 Introdução 2 1 Data path 3 Data Path Composto pelo conjunto de registradores e o ULA Instruções register-memory Operações diretamente na memória Transferências entre memória e registrador

Leia mais

Investigando a Influência da Organização de Caches L2 no Desempenho de Processadores Multicore Superescalares

Investigando a Influência da Organização de Caches L2 no Desempenho de Processadores Multicore Superescalares Investigando a Influência da Organização de Caches L2 no Desempenho de Processadores Multicore Superescalares Pedro H. Penna, Henrique C. Freitas 1 Grupo de Arquitetura de Computadores e Processamento

Leia mais

ESTUDO SOBRE O IMPACTO DOS PROCESSADORES HOSPEDEIROS SPARC V8 E NIOS II NO DESEMPENHO DA ARQUITETURA RECONFIGURÁVEL HÍBRIDA RoSA

ESTUDO SOBRE O IMPACTO DOS PROCESSADORES HOSPEDEIROS SPARC V8 E NIOS II NO DESEMPENHO DA ARQUITETURA RECONFIGURÁVEL HÍBRIDA RoSA ESTUDO SOBRE O IMPACTO DOS PROCESSADORES HOSPEDEIROS SPARC V8 E NIOS II NO DESEMPENHO DA ARQUITETURA RECONFIGURÁVEL HÍBRIDA RoSA Alba S. B. Lopes Departamento de Informática e Matemática Aplicada da UFRN

Leia mais

ULA (ALU) - UNIDADE DE ARITMÉTICA E LÓGICA

ULA (ALU) - UNIDADE DE ARITMÉTICA E LÓGICA FATEC SP - Análise e Desenvolv. De Sistemas - Ambiente Operacional PÁG. 1 II) ELEMENTOS DE HARDWARE: DIAGRAMA DE BLOCOS DE UM COMPUTADOR 1) CPU - UNIDADE CENTRAL DE PROCESSAMENTO RESPONSÁVEL PELA EXECUÇÃO

Leia mais

RT 1. Routers IP. Manuel P. Ricardo. Faculdade de Engenharia da Universidade do Porto

RT 1. Routers IP. Manuel P. Ricardo. Faculdade de Engenharia da Universidade do Porto RT 1 Routers IP Manuel P. Ricardo Faculdade de Engenharia da Universidade do Porto RT 2 Bibliografia» Aula preparada com base seguinte bibliografia S. Keshav, An Engineering Approach to Computer Networking,

Leia mais