CUDA vs OpenCL Introdução.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Sistemas Operacionais Aula II
Paralelismo em Máquinas Multiprocessadas
IC - UFF Sistemas Operacionais Threads. IC - UFF Processos e threads Vimos o conceito de processo englobando duas características básicas: propriedade.
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Sistemas Operacionais
Sistemas Cliente/Servidor Introdução
OpenMP.
Threads (Linha de execução )
Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Coerência de Memórias Cache e Modelos de Consistência de Memória
Arquiteturas Superescalares
Chapter 4: Threads.
CISC e RISC.
GPGPU.
Sistemas Operacionais
Aula 8 01/09/10 (Turmas 1 e 2) Profa. Sarita
SSC144 Arquitetura de Computadores Introdução
Silberschatz and Galvin Operating System Concepts Unidade 1: Introdução O que é um sistema operacional? Systemas simples em lote (batch) Sistemas.
Computing Unified Device Architecture (CUDA)
Threads.
Arquitetura de Computadores
Sistemas Operacionais I
Prof. André Leon S. Gradvohl, Dr.
Unidade 1-1 Processos e Threads
SISTEMAS OPERACIONAIS
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Introdução a GPGPU CUDA: arquitetura de computação paralela para GPGPU.
Fundamentos de programação CUDA
Tópicos em redes e sistemas distribuídos B
Sistemas Distribuídos
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Programação Paralela em OpenCL
César L. B. Silveira Prof. Dr. Luiz G. da Silveira Jr.
Sistemas Operacionais I
Conteúdo 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.
GESTÃO DE SISTEMAS OPERACIONAIS II
Computação de Alto Desempenho Utilizando Placas Gráficas Divino César S. Lucas Universidade Católica de Goiás
Sistemas Operacionais
Computação L1: Infra-Estrutura Básica
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Uma Análise das plataformas CUDA e OpenCL usando MetaHeurísticas aplicadas no Problema do Caixeiro Viajante Aluno: Hedley Luna Gois Oriá Disciplina: Introdução.
Sistemas Operacionais
Sistemas Operacionais
SISTEMAS OPERACIONAIS I
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
S ISTEMAS OPERACIONAIS PROCESSOS Horácio Ribeiro.
Microprocesadores x Microcontroladores
Perspectivas NVidia para Desktop Tiago Carneiro Pessoa
SISTEMAS OPERACIONAIS MACH EPOS
Linux em Máquinas Paralelas
SISTEMAS OPERACIONAIS
Engenharia de Sistemas Embarcados Aula 5: Um Conjunto Básico de Ferramentas.
Estrutura de Interconexão
Redes e Sistemas Distribuídos II – Cód Prof. MSc. Ronnison Reges Vidal.
Processadores.
Arquitetura de computadores
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.
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads
Jorge Zavaleta PVM vs MPI. Introdução Objetivos do MPI Implementações e definições processos dinâmicos Contextos Operações não bloqueantes Portabilidade,heterogeneidade.
Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot Bruno Pereira dos Santos Dany Sanchez Dominguez Universidade Estadual de Santa.
Sistemas Operacionais Processo
Estruturas de Sistemas Operacionais. Componentes Comuns do Sistema Administração de Processos Administração da Memória Principal Administração do Armazenamento.
Bruna Cavallero Martins Universidade Católica de Pelotas.
Anderson Braga de Avila 1.  Usar todos os recursos computacionais no sistema — CPUs, GPUs e outros processadores  Modelo de programação paralela eficiente.
OpenCL Eliane Siegert. Estrutura – Princípio Geral de Funcionamento – Exemplos de Aplicações – Modelo de Programação – Linguagens Suportadas – Exemplos.
Transcrição da apresentação:

CUDA vs OpenCL Introdução

Fornecedores CUDA: OpenCL: Nvidia AMD: Nvidia: suporta OpenCL 1.1 ATI Stream: CPUs e GPUs Nvidia: suporta OpenCL 1.1 Apple: Suporta placas Nvidia suporta CPUs Intel IBM: suporta CPUs PowerPC

Capacidades Funcionalidades de sincronização CUDA não são tão flexíveis como as do OpenCL. Em OpenCL, qualquer operação em fila de espera pode esperar por qualquer outro conjunto de operações em fila. No CUDA 3.2 foi introduziada a função StreamWaitEvent(), entretanto CUDA ainda não possuir capacidade de executar filas for a de ordem como o OpenCL. OpenCL suporta sincronização entre vários dispositivos.

Capacidades CUDA possui ferramentas mais maduras, incluindo um debugger e profiler, como também CUBLAS, CUFTT e outras. CUDA permite construtores C++ em modo GPU, OpenCL é baseado em C99. OpenCL pode enfileirar ponteiros de função de CPU em sua fila de comandos, CUDA não. OpenCL possui geração de código em tempo real embutido, para CUDA é necessário usar, por exemplo, PyCUDA.

OpenCL na Arquitetura CUDA ELC139 - Cícero Augusto de Lara Pahins

Arquitetura CUDA A arquitetura CUDA é semelhante a arquitetura do OpenCL Um dispositivo CUDA é construído em torno de um conjunto escalonável de multithreaded Streaming Multiprocessors (SMs). Um multiprocessador corresponde a uma unidade de computação OpenCL.

Arquitetura CUDA Um multiprocessador executa uma thread CUDA para cada item de trabalho OpenCL e um bloco de thread para cada grupo de trabalho OpenCL. Um kernel é executado ao longo de um NDRange OpenCL por uma grade de blocos de threads.

Cada bloco de thread que executar um kernel é, portanto, unicamente identificado por seu ID de grupo de trabalho, e cada thread pelo seu ID global ou por uma combinação de seu ID local e ID do grupo de trabalho.

Arquitetura CUDA Quando um programa OpenCL no host invoca um kernel, os grupos de trabalho são enumerados e distribuídos como blocos de thread para o multiprocessadores com capacidade de execução disponíveis. As threads de um bloco de threads executam simultaneamente em um multiprocessador. A medida que blocos de threads terminam, novos blocos são lançados nos multiprocessadores desocupados.

Arquitetura CUDA - SIMT SIMT: Single Instruction, Multiple Thread A arquitetura SIMT é semelhante a SIMD(Single Instruction, Multiple Data) na organização de vetores em que uma única instrução controla múltiplos elementos de processamento.

Arquitetura CUDA - SIMT A organização SIMD de vetores expõe a largura SIMD para o software, enquanto que as instruções SIMT especificam a execução e o comportamento de de desvio de uma única thread. Em contraste com máquinas vetorias SIMD, a arquitetura SIMT permite aos programadores escreverem código paralelo a nível de thread para threads escalares independentes, bem como código de dado paralelo para threads coordenadas.

Arquitetura CUDA – Hardware Multithread Cada multiprocessador possui um conjunto de registradores 32-bit que são particionados entre os warps*, e um cache de dados paralelo ou memória compartilhada que é particionado entre os blocos de threads e é utilizado para implementar a memória local do OpenCL. *Warps: grupo de 32 threads paralelas, criadas e gerenciadas por um multiprocessador

OpenCL na Arquitetura CUDA – Compilação: PTX Kernels escritos em C OpenCL são compilados em PTX(Parallel Thread Execution), que é o conjunto de instruções CUDA. Exemplo: A representação intermediára PTX pode ser obitida pela chamada clGetProgramInfo() with CL_PROGRAM_BINARIES

OpenCL na Arquitetura CUDA – Compilação: Volatilidade Somente após a execução de barrier(), mem_fence(), read_mem_fence() ou write_mem_fence() são feitas escritas para uma memória global ou compartilhada de uma thread garantindo ser visível para outras threads.

OpenCL na Arquitetura CUDA – Compilação: Volatilidade Exemplo: A primeira referência a myArray[tid] compila em uma instrução de leitura global ou compartilhada, mas a segunda referência não, já que o compilador simplesmente reutiliza o resultado da primeira

OpenCL na Arquitetura CUDA – Troca de Modo GPUs dedicam memória para a superfície primária, a qual é usada para atualizar a saída do dispositivo de visualização. Trocas de Modo são executadas, por exemplo, quando o usuário muda a resolução ou bit depth da visualização, ou quando aplicações gráficas são exibidas.

OpenCL na Arquitetura CUDA – Troca de Modo Se uma Troca de Modo aumentar o tamanho de memória necessária para a superfície primária o sistema irá canabalizar mémoria alocada por aplicações OpenCL. Isso resultada em uma chamada ao runtime do OpenCL para falhar e retornar um erro de contexto inválido.

Referências Nvidia Compute – PTX: Parallel Thread Execution ISA Version 2.0 Nvidia OpenCL Programming Guide for the CUDA Architecture GPU Computing with MATLAB® & C/C++ [blog.accelereyes.com/blog/2010/05/10/nvidia-fermi-cuda-and-opencl/] CUDA vs OpenCL: Which should I use? [wiki.tiker.net/CudaVsOpenCL]