MÉTODOS NUMÉRICOS UTILIZANDO GNU/OCTAVE E GPGPU
|
|
|
- Gabriel da Costa Prada
- 9 Há anos
- Visualizações:
Transcrição
1 REDUÇÃO DO TEMPO DE EXECUÇÃO DE MÉTODOS NUMÉRICOS UTILIZANDO GNU/OCTAVE E GPGPU ANDRÉ LUIS TIBOLA, VINÍCIUS MENEZES DE OLIVEIRA Resumo No presente trabalho é apresentada uma proposta para solução do problema da diminiuição do tempo de execução de scripts Octave, de forma transparente ao usuário programador. Nesta utilizamos computação em GPU com placas gráficas NVIDIA e o toolkit CUDA, a diminuição do tempo de execução no Octave é obtida pela modificação de bibliotecas utilizadas pelo mesmo, e por substituição de algumas das suas extensões. Palavras-Chave: BLAS, Computação de Alto Desempenho, CUDA, GPGPU, GNU/Octave, Nvidia TRANSPARENTLY OPTIMIZATING GNU/OCTAVE WITH GPGPU Abstract This paper present an alternative to optimize GNU/Octave Numerical Methods, in a transparent way to the programer user. For this we used GPU computing with a NVIDIA s graphics card through the CUDA toolkit, overlapped the BLAS library and also few OCT extensions. Key words: BLAS, CUDA, High Performance Computing, GPGPU, GNU/Octave, NVIDIA Vetor, Rio Grande, v.20, n.1, p ,
2 1 INTRODUÇÃO Mesmo com a rápida evolução no desempenho dos processadores convencionais, emprega-se na computação de alto desempenho, arquiteturas alternativas com melhor relação preço por Gigaflop, como é o caso mais recentemente do Cell e das GPU. A utilização de hardware dedicado para processamento gráfico é impulsionada pela proeminente demanda computacional das aplicações do gênero, em especial, na indústria do entreterimento. Segundo dados apresentados pela fabricante NVIDIA em [1], o aumento observado no poder computacional das GPU, quando comparado as CPU convencionais, é notoriamente maior nos últimos anos. Dado o baixo custo desse tipo de equipamento, logo surgiu o interesse na aplicação do mesmo para computação de propósito geral. As GPU atuais são compostas por aglomerados de processadores, sendo geralmente integradas numa placa de expansão com memória dedicada de alta velocidade. Podem ser enquadradas pela taxonomia de Flynn (Flynn [2]) como processadores MIMD (Multiple Instruction Multiple Data) no entanto, essa fabricante (NVIDIA) as classifica como Single Instruction Multiple Thread (SIMT)[1], pois podem expressar paralelismo em nível de thread, mas alcança maior performance quando todas threads executam o mesmo código num dado instante no tempo. Essa estreita ligação com o processamento paralelo expõe a natureza da tarefa que desempenha, onde conjutos de pixels são processados por algoritimos data-parallel (Hillis e Steel [3] discorrem detalhes sobre os algoritimos data-parallel), são esses algoritmos que podem ser executados com melhores resultados em GPU. Após a adoção da arquitetura de shaders unificados em VGAs, a fabricante NVIDIA lançou um toolkit para programação de GPUs denominado CUDA (Compute Unified Device Architeture). O advento deste representa uma mudança no modo de programação das placas gráficas, pois anteriormente era necessário o mapeamento do problema para alguma API (Application Programming Interface) gráfica, enquanto agora é possível programá-las com código regular, de forma tão conveniente quanto outras tecnologias para HPC. Uma característica importante das GPU é o grande poder para executar operações de ponto flutuante, o que desperta o interesse em diversas áreas, inclusive básicas como a Álgebra Linear Computacional. Dentro desta área um software amplamente utilizado é o GNU/Octave (ou simplesmemnte Octave). Vetor, Rio Grande, v.20, n.1, p ,
3 O Octave é um software livre majoritariamente compatível com o Mathworks Matlab R, de modo geral, este software interpreta uma linguagem matricial própria e possui diversas rotinas já implementadas para uso em variadas áreas, a disposição em seu ambiente, o que faz ele lograr muitos usuários das Ciências e Engenharias. O Octave pode ser estendido a fim de tornar disponíveis mais funcionalidades em seu ambiente, podem ser desenvolvidas extensões utilizando os scripts próprios da linguagem, através de uma sofisticada API e classes C++, e ainda através de arquivos MEX (API em C utilizada pelo Matlab), como mostra Eaton em [4]. Sendo cada vez mais frequente a utilização desse aplicativo em computadores convencionais (desktops e notebooks), é especialmente atrativo buscar soluções que explorem essas capacidades no intuito de beneficiar os usuários de Octave provendo melhoras no desempenho. 2 MOTIVAÇÃO Somos constantemente inclidados a utilizar tecnologias imaturas, no entanto, muitas inscursões malfadadas acabam por penalizar os adeptos quando da descontinidade destas tecnologias. Devido essas circunstâncias os usuários tendem a resistir quando se trata da utilização de novas ferramentas. Podemos facilmente reconhecer a necessidade de soluções que permitam a boa utilização da tecnologia sem incorrer em grandes riscos aos adeptos, é com essa motivação que desenvolvemos este trabalho a fim de acelerar de forma transparente ao usuário scripts de Octave. Uma das características das linguagens interpretadas, é a habilidade para desenvolvimento de aplicações, de maneira ágil, e como diferencial do Octave o grande ferramental já disponível o torna excelente para aplicações numéricas. Algumas das operações do Octave são executadas externamente utilizando bibliotecas como BLAS (Basic Linear Algebra Subprograms), LAPACK (Linear Algebra PACKage) e FFTW (Fastest Fourier Transform in the West); como consequência em aplicações com grandes volumes de dados por operação (e que utilizem dessas biliotecas), observaremos pouca diferença no tempo total de execução quando comparado com implementações utilizando linguagens compiladas. Dessa forma o Octave mostra-se uma poderosa ferramenta para o tratamento numérico de dados, mesmo em grandes volumes. Vetor, Rio Grande, v.20, n.1, p ,
4 3 METODOLOGIA Mais precisamente, este trabalho consiste em otimizar chamadas com características específicas realizadas pelo Octave durante a execução de scripts. Para isso podemos utilizar fundamentalmente três técnicas: estender os comandos disponíveis no ambiente do Octave (citado anteriormente); modificar o Octave; ou alterar as bibliotecas que ele utiliza. O maior problema em utilizar extensões do Octave é que não podemos com elas sobrepor operações da linguagem (ja que não é uma mudança transparente ao Octave) como, por exemplo, o operador de multiplicação * sendo necessário uma nova função multiplicar(x,y) para prover essa funcionalidade, disso decorrem dois novos problemas: são necessárias alterações nos scripts existentes para utilizar o novo recurso; e outras funções que utilizem multiplicação (como a inversão de matrizes) não se valeriam dessa otimização. Modificações no Octave são potencialmente as com maior ganho, pois podem gerenciar a memória em CPU e em GPU e eliminam a necessidade de modificações dos scripts existentes, entretanto é bastante custoso manter o fork atualizado em relação ao branch principal e mais difícil ainda ter essas modificações incluídas oficialmente. Além disso, os ganhos principais estão em fazer a gerência das transferências de memória entre CPU e GPU, sendo que os ganhos em cenários mais gerais, provavelmente, não são expressivos a ponto de justificar tais alterações. A modificação nas bibliotecas utilizadas pelo Octave, tem como maior problema a necessidade de copiar-se os dados da memória principal para a memória de vídeo a cada chamada da biblioteca, pois não é possível assim gerenciar a memória operada pelo Octave, o que no caso de não haver modificações nos dados torna-se uma penalidade considerável. Além disso, torna-se oneroso customizar (e manter) diversas bibliotecas para modificar apenas algumas rotinas. Em nossa proposta optamos por uma abordagem híbrida de modificações nas bibliotecas do Octave e extensões dele. As bibliotecas são escolhidas pela possibilidade de reutilização das mesmas em outros aplicativos e por serem um método totalmente transparente ao usuário para otimizar as aplicações já existentes. As extensões são utilizadas para as funções que são normalmente (i.e. na distribuição padrão do Octave) implementadas em arquivos externos, como o caso das Transformadas de Fourier que são implementadas em uma extensão do tipo oct. Vetor, Rio Grande, v.20, n.1, p ,
5 Outra característica da otimização em nível de biblioteca é que ao selecionar um conjunto mais próximo da base na hierarquia das mesmas (ou seja, bibliotecas com rotinas de base), poderemos ter bons ganhos em cenários mais gerais já que serão utilizadas tanto pelo próprio Octave como por outras bibliotecas utilizadas por ele, neste caso, a BLAS é utilizada tanto pelo Octave quanto pelo LAPACK. Poderemos assim ter ganhos mais modestos em cenários mais gerais providos pela otimização das bibliotecas e ganhos mais expressivos para casos mais específicos otimizando as rotinas chave através de extensões. Especificamente neste trabalho visamos à utilização de GPGPU em placas gráficas da NVIDIA com o toolkit disponibilizado pela mesma, o CUDA. O toolkit CUDA é composto por compiladores e bibliotecas, sendo duas voltadas para aplicações específicas: a CUBLAS e a CUFFT que são respectivamente uma implementação parcial da BLAS em espaço de GPU e a implementação de Transformadas de Fourier também em espaço de GPU. Para a arquitetura proposta realizamos a otimização pela substituição de rotinas da BLAS utilizada em CPU por versões com a habilidade de fazer as transferências necessárias para a GPU e executar versões em GPU dessas rotinas; também otimizamos as Transformadas de Fourier utilizando extensões do tipo oct valendo-se da mesma abordagem. Figura 1: Estrutura do Octave após modificações Na figura 1 apresentamos a organização do Octave após nossas alterações. Nela Vetor, Rio Grande, v.20, n.1, p ,
6 explicitamos as extensões, que rodam no topo do Octave, e a possibilidade das extensões binárias utilizarem GPGPU (as Transformadas de Fourier estão inseridas nas.oct ). Observamos ainda, bibliotecas pertinentes da base do Octave e destacamos a substituição da BLAS por nossa implementação. Assim, as modificações nas bibliotecas são transparentes ao Octave - como consequência também às extensões - e as alterações como um todo, transparentes ao usuário. Figuramos dessa forma uma implementação que atende aos critérios estabelecidos anteriormente. Devemos também considerar nas arquiteturas atuais a possibilidade de executar computação apenas em GPU ou simultâneamente em CPU e GPU. A computação híbrida é a forma com maior aproveitamento dos recursos, entretanto exige um delicado controle dos mesmos, demandam mais tempo de desenvolvimento e tem maiores complicações para depuração (acarretando em maiores custos de software); a grande vantagem dessa abordagem é em pequenas instâncias e em rotinas com menor número de cálculos, entretanto os ganhos mais expressivos em cenários com maior carga de cálculos é provido pela GPU. Tomov e Dongarra demonstram em [5] resultados da aplicação de computação híbrida para álgebra linear computacional em sistemas atuais. 4 ANÁLISE DOS RESULTADOS E DESDOBRAMENTOS DO TRABALHO Os resultados apresentados são tomados diretamente no Octave com o propósito de agregar todos os overheads envolvidos nas operações, tendo um cenário mais próximo da aplicação. Expomos uma comparação da implementação BLAS, as BLAS utilizadas são a reference, a ATLAS (Auto Tuned Linear Algebra System) que é uma BLAS para CPU altamente otimizada, e nossa implementação em GPU. O cenário utilizado para os testes foi composto por processador AMD Athlon 64 X (SSE3) e VGA XFX Geforce 8800 GS. A figura 2 demonstra o speedup (relativo) observado quando utilizada a operação de multiplicação de matrizes no Octave ( * ), o qual expressa a relação do número de vezes que uma implementação é mais rápida que outra, dado pela da equação 1. S p = T s T p (1) Vetor, Rio Grande, v.20, n.1, p ,
7 A base para a comparação é a implementação reference compilada com GCC e nível de otimização -O2. A versão utilizada do Octave foi a e a de ATLAS foi com suporte a todas instruções SIMD ativadas. Figura 2: SpeedUP Observado no operador multiplicação Devemos observar que a multiplicação de matrizes vale-se da operação GEMM da BLAS, apresentada na equação 2 (Sendo A,B e C matrizes e α e β escalares): C = α A B + β C (2) Podemos notar pela Equação 2 que a multiplicação de matrizes (α=1, β=0) subutiliza as capacidades da operação, entretanto ela (a GEMM) é o principal bloco de construção e o primeiro ponto a ser focado quando deseja-se uma BLAS com alto desempenho. Temos dessa forma ela como referência, e devido aos overheads envolvidos o speedup atingido na GEMM é possívelmente o máximo speedup alcançável. A variação no speedup com o crescimento da instância deve-se ao atenuamento dos overheads da implementação. Como observamos pouca degradação de performance, podemos evidenciar a previsibilidade do processo a fim de reforçar a confiabilidade para aplicação da arquitetura mostrada. Vetor, Rio Grande, v.20, n.1, p ,
8 A continuidade do trabalho foca consolidar a BLAS proposta e realizar avaliações sistemáticas do desempenho da mesma quando utilizada indiretamente por funções do LAPACK. Como aparato vislumbra-se o auto-tunning da biblioteca afim de utilizar de forma mixada GPU e CPU no intuito de contornar instâncias pequenas nas quais os overheads tornam mais lenta a execução em GPU e nas grandes onde a memória gráfica disponível não é capaz de comportar a computação. REFERÊNCIAS BIBLIOGRÁFICAS [1] NVIDIA, NVDIA CUDA Programming Guide, 2009 [2] M. Flynn, Some Computer Organizations and Their Effectiveness, IEEE Trans. Comput., 1792, Volume C-21, 948p. [3] Daniel W. Hillis, Guy L. Steele, Data Parallel Algorithms, 1986, Communications of the ACM, Volume 29, p. [4] John W. Eaton, GNU Octave Manual, 2002, Network Theory Limited. [5] S. Tomov, J. Dongarra, M. Baboulin, Towards Dense Linear Algebra for Hybrid GPU Accelerated Manycore Systems, 2008, University of Tennessee, Computer Science Technical Report, Note 210 UT-CS AGRADECIMENTOS Agradecemos ao Programa Institucional de Bolsas de Iniciação Científica da Universidade Federal do Rio Grande - PROBIC-FURG, financiadora da bolsa de pesquisa do aluno André Luis Tibola. Vetor, Rio Grande, v.20, n.1, p ,
Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot
Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot Bruno Pereira dos Santos Dany Sanchez Dominguez Esbel Tomás Evalero Orellana Universidade Estadual de Santa Cruz Roteiro Breve introdução
Processamento de áudio em tempo real utilizando dispositivos não convencionais:
Processamento de áudio em tempo real utilizando dispositivos não convencionais: Processamento paralelo com Pure Data e GPU. André Jucovsky Bianchi [email protected] Departamento de Ciência da Computação Instituto
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
Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)
Paralelismo de dados (execução de simultaneidade) Em métodos tradicionais de programação (processamento sequencial), uma grande quantidade de dados é processada em um único núcleo de uma CPU, enquanto
Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)
Paralelismo de dados (execução de simultaneidade) Em métodos tradicionais de programação (processamento sequencial), uma grande quantidade de dados é processada em um único núcleo de uma CPU, enquanto
Comparação de eficiência entre OpenCL e CUDA
Aluno: Thiago de Gouveia Nunes Orientador: Prof. Marcel P. Jackowski GPGPU O que é GPGPU? É programação de propósito geral em GPUs. =D GPGPU Existem 2 linguagens populares no mercado para GPGPU, o CUDA
Computação Paralela (CUDA)
Universidade Federal do Amazonas Faculdade de Tecnologia Departamento de Eletrônica e Computação Computação Paralela (CUDA) Hussama Ibrahim [email protected] Notas de Aula Baseado nas Notas de
AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA
Processamento Paralelo Utilizando GPU
Processamento Paralelo Utilizando GPU Universidade Estadual de Santa Cruz Bruno Pereira dos Santos Dany Sanchez Dominguez Esbel Evalero Orellana Cronograma Breve introdução sobre processamento paralelo
INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO
INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (2.0) (a) (Verdade/Falso) A comunicação entre processos consiste em transmitir uma mensagem entre
SISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Introdução a Sistemas Operacionais Andreza Leite [email protected] Plano de Aula Introdução aos Sistemas Operacionais Fundamentação Teórica Evolução Histórica Características
Benchmarks. 1. Introdução
Benchmarks 1. Introdução Um Benchmark é um programa de teste de desempenho que analisa as características de processamento e de movimentação de dados de um sistema de computação com o objetivo de medir
Fabrício Gomes Vilasbôas
Fabrício Gomes Vilasbôas Apresentação Placas Arquitetura Toolkit e Ferramentas de Debug Pensando em CUDA Programação CUDA Python Programação PyCUDA 1) Grids( padrão Globus) 2) Clusters ( padrão MPI) 3)
Introdução ao CUDA. Material elaborado por Davi Conte.
Introdução ao CUDA Material elaborado por Davi Conte. O objetivo deste material é que o aluno possa iniciar seus conhecimentos em programação paralela, entendendo a diferença da execução de forma sequencial
CUDA: Compute Unified Device Architecture. Marco Antonio Simões Teixeira
CUDA: Compute Unified Device Architecture Marco Antonio Simões Teixeira Sumário Introdução; CUDA: História; CUDA: programando; CUDA e deep learning; Links úteis; Considerações finais. 2 INTRODUÇÃO 3 O
DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES
DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES João Ricardo Kohler Abramoski (PAIC/FUNDAÇÃO ARAUCÁRIA), Sandra Mara Guse Scós Venske (Orientadora), e-mail: [email protected]
Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER
COMPARAÇÃO DE DESEMPENHO NA PROGRAMAÇÃO PARALELA HÍBRIDA (MPI + OPENMP) NA BUSCA DE TEXTO EM ARQUIVOS 1 COMPARISON OF PERFORMANCE IN HYBRID PARALLEL PROGRAMMING (MPI + OPENMP) IN SEARCH OF TEXT IN FILES
COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1
COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1 Márcia Da Silva 2, Igor Gamste Haugg 3, Eliézer Silveira Prigol 4, Édson L. Padoin 5, Rogério S. M. Martins
A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES
A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES Euzébio da Costa Silva 1, Victor Pereira Ribeiro 2, Susana Brunoro Costa de Oliveira 3 1 29520-000, [email protected] 2 29520-000, [email protected]
ENGENHARIA DE SISTEMAS MICROPROCESSADOS
ENGENHARIA DE SISTEMAS MICROPROCESSADOS Prof. Pierre Vilar Dantas Turma: 0040-A Horário: 4N Aula 01-26/07/2017 Plano de ensino Professor www.linkedin.com/in/pierredantas/ TÓPICOS Conceitos gerais. Evolução
Arquiteturas paralelas Parte 1
Arquiteturas paralelas Parte 1 Processamento Paralelo Prof. Oberlan Romão Departamento de Computação e Eletrônica DCEL Centro Universitário Norte do Espírito Santo CEUNES Universidade Federal do Espírito
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
Introdução OpenMP. Nielsen Castelo Damasceno
Introdução OpenMP Nielsen Castelo Damasceno Computação de auto desempenho Processamento Paralelo Memória Distribuída e Compartilhada Modelo de programação OpenMP Métricas de Desempenho Computação de auto
USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO DE IMAGENS
Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO
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
Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais. Referências Bibliográfica. Referências Bibliográfica
DCA-108 Sistemas Operacionais Luiz Affonso Guedes www.dca.ufrn.br/~affonso [email protected] Apresentação Disciplina básica do curso de Engenharia de Computação Carga-horária: 60h teóricas Associadas
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
Unidade 12: Introdução ao Paralelismo:
Arquitetura e Organização de Computadores 1 Unidade 12: Introdução ao Paralelismo: Processadores Superescalares Prof. Daniel Caetano Objetivo: Apresentar os conceitos fundamentais da arquitetura superescalar
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:
SSC510 Arquitetura de Computadores. 6ª aula
SSC510 Arquitetura de Computadores 6ª aula PARALELISMO EM NÍVEL DE PROCESSOS PROFA. SARITA MAZZINI BRUSCHI Tipos de Paralelismo Instrução (granulosidade fina) Paralelismo entre as instruções Arquiteturas
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
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,
COMPUTAÇÃO PARALELA E DISTRIBUÍDA
COMPUTAÇÃO PARALELA E DISTRIBUÍDA Aluno: Alessandro Faletti Orientadora: Noemi Rodriguez Introdução O objetivo inicial no projeto era aplicar a possibilidade de processamento em paralelo no sistema CSBase
Sistemas Operacionais
Sistemas Operacionais Aula 2 Introdução: conceitos, máquinas de níveis. Prof.: Edilberto M. Silva http://www.edilms.eti.br SO - Prof. Edilberto Silva O que é um sistema operacional? um provedor de abstrações
ARQUITETURA DE SISTEMAS OPERACIONAIS. VISÃO GERAL DE UM SISTEMA OPERACIONAL Prof. André Luís Alves E. M. DR. LEANDRO FRANCESCHINI
ARQUITETURA DE SISTEMAS OPERACIONAIS VISÃO GERAL DE UM SISTEMA OPERACIONAL Prof. André Luís Alves E. M. DR. LEANDRO FRANCESCHINI INTRODUÇÃO Programas computacionais (ou software) constituem o elo entre
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
Arquitetura de Computadores. Prof. João Bosco Jr.
Arquitetura de Computadores Prof. João Bosco Jr. (CPU) Modelo do Computador Von Neumann Processador Memórias E/S Barramentos Simulação Contador http://courses.cs.vt.edu/csonline/machinearchitecture/lessons/cpu/countprogram.html
Introdução à Computação
Introdução à Computação Jordana Sarmenghi Salamon [email protected] [email protected] http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda
Programação de Alto Desempenho - 2. Prof: Carla Osthoff
Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: [email protected] 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda
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
Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór
Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Filipo Mór WWW.FILIPOMOR.COM - REVISÃO ARQUITETURAS PARALELAS Evolução das Arquiteturas Evolução das Arquiteturas Entrada CPU Saída von
Organização de Computadores I
Organização de Computadores I Aula 2 Material: Diego Passos http://www.ic.uff.br/~debora/orgcomp/pdf/parte2.pdf Organização de Computadores I Aula 2 1/29 Tópicos de Computação. de um Sistema de Computação..
Organização e Arquitetura de Computadores I
Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de
Informática Aplicada. Introdução
Informática Aplicada Introdução Breve histórico da computação moderna Principais eventos 1000ac - Ábaco 1614 - Logaritmos (John Napier) 1623 - Sistema Binário (Francis Bacon) 1642 - Máquina de Turing 1946
Sistema Computacional
Algoritmos e Lógica de Programação Conceitos Básicos Abstração Reinaldo Gomes [email protected] O que é um? Integração de componentes atuando como uma entidade, com o propósito de processar dados, i.e.
Arquitetura do SET de instruções Instruction SET. CISC vs RISC. What s assembly as to do with it?
Arquitetura do SET de instruções Instruction SET CISC vs RISC What s assembly as to do with it? Low-level - high-level programming language Assambley CODE section.text global _start ;must be declared for
Estrutura do Sistema Operacional
Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Aula 04 Estrutura do Sistema Operacional 2 1 Estrutura do Sistema Operacional
Paralelismo em Computadores com Tecnologia Multicore
IFRN - Pau dos Ferros Pau dos Ferros/RN, 25 de fevereiro de 2016 O minicurso Descrição: Para se utilizar os vários núcleos de processamento disponíveis nos computadores atuais de forma eficiente, faz necessário
Softwares livres e sua utilização no ensino de engenharia
Softwares livres e sua utilização no ensino de engenharia Ana Flávia Marques Martins, Frederico Ferreira Alvim de Aguiar, Giordano Moyses Temponi, Luciano Rubinger Júnior, Victor Rangel de Carvalho Resumo
COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto
COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES Adão de Melo Neto 1 INTRODUÇÃO Desde 1950, houveram poucas inovações significativas nas áreas de arquitetura e organização de computadores. As principais
Sistemas Operacionais. Visão Geral
Sistemas Operacionais P R O F. B R U N O A L B U Q U E R Q U E S C R I G N O L I Visão Geral Organização da Apresentação Introdução Componentes de um Sistema de Computação Conceito de SO Objetivos de um
Bruno Ribeiro da Silva. A adaptação de um sistema operacional para a execução em uma diferente arquitetura
Bruno Ribeiro da Silva A adaptação de um sistema operacional para a execução em uma diferente arquitetura Universidade Federal de Santa Catarina Florianópolis, Fevereiro de 2007 1 Bruno Ribeiro da Silva
Sistemas Operacionais Aula 3
Sistemas Operacionais Aula 3 Anderson L. S. Moreira [email protected] http://dase.ifpe.edu.br/~alsm Curso de Análise e Desenvolvimento de Sistemas de Informação Recife - PE O que fazer
Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação. Arquitetura de Computadores I. RISC versus CISC
Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação Arquitetura de Computadores I RISC versus CISC Gabriel P. Silva 04.11.2014 Introdução Um dos objetivos de uma arquitetura de
ANNCOM Biblioteca de Redes Neurais Artificiais para Alto Desempenho Utilizando Placas de Vídeo
Daniel Salles Chevitarese ANNCOM Biblioteca de Redes Neurais Artificiais para Alto Desempenho Utilizando Placas de Vídeo Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção
Implementação da Especificação de Tempo Real Java para o EPOS
UNIVERSIDADE FEDERAL DE SANTA CATARINA Curso de Ciências da Computação Implementação da Especificação de Tempo Real Java para o EPOS ANDERSON LUIS ZAPELLO Florianópolis, julho de 2005 ANDERSON LUIS ZAPELLO
a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1.
a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1. Estruturada 2. Orientada a eventos 3. Orientada a objetos d) Sistemas Operacionais
AULA 03: FUNCIONAMENTO DE UM COMPUTADOR
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?
OpenMP: Variáveis de Ambiente
Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de
Organização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Memória Cache Slide 1 Introdução Tamanho Função de Mapeamento Política de Escrita Tamanho da Linha Número de Memórias Cache Cache em Níveis Slide 2 Introdução
Computação de Alto Desempenho com Placas Gráficas para Acelerar o Processamento da Teoria do Funcional da Densidade
Cleomar Pereira da Silva Computação de Alto Desempenho com Placas Gráficas para Acelerar o Processamento da Teoria do Funcional da Densidade Dissertação de Mestrado Dissertação apresentada como requisito
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES Prof. Dr. Daniel Caetano 2012-2 Lembretes Compreender o funcionamento da Arquitetura Superpipeline Compreender
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 =
Caracterização de Sistemas Distribuídos
Caracterização de Sistemas Distribuídos Roteiro Conceitos de Hardware Conceitos de Software Classificação de Flynn Classificação baseada no acesso a memória 2 Conceitos de HW Múltiplas CPUs Diferentes
Arquiteturas RISC e CISC. Adão de Melo Neto
Arquiteturas RISC e CISC Adão de Melo Neto 1 Arquitetura RISC Arquitetura RISC. É um das inovações mais importantes e interessantes. RISC significa uma arquitetura com um conjunto reduzido de instruções
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
Brilliant Solutions for a Safe World
IDENTIFICAÇÃO DE FACE E RASTREAMENTO DE MOVIMENTO PARA SISTEMAS DE GERENCIAMENTO DE VÍDEO (VMS) SentiVeillance Server é um software de identificação biométrica de faces e rastreamento de movimento pronto
Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores
Ciência da Computação Arq. e Org. de Computadores Processadores Prof. Sergio Ribeiro Composição básica de um computador eletrônico digital: Processador Memória Memória Principal Memória Secundária Dispositivos
EA876 - Introdução a Software de Sistema
A876 - Introdução a Software de Sistema Software de Sistema: conjunto de programas utilizados para tornar o hardware transparente para o desenvolvedor ou usuário. Preenche um gap de abstração. algoritmos
