Análise de desempenho da paralelização do cálculo da matriz de correlação com tamanho arbitrário, utilizando GPU
|
|
- Thomaz de Sequeira Teves
- 7 Há anos
- Visualizações:
Transcrição
1 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 Computação (DCOMP) Universidade Federal de Sergipe (UFS) São Cristóvão SE Brasil {irisandradesantos, chaina.oliveira, estombelo}@gmail.com Abstract. The correlation matrix calculus is usually used to find a relation between data. This operation can be executed faster if made on GPUs instead of in CPUs. In face of the scenario, the actual article presents the description and the results of the survey made about the potential parallelism of graphics cards, GPUs, and the CUDA architecture. In a way that shows, even, the analysis of the performance, in execution times, in a GPU, of the parallelized algorithm, in relation to the sequential algorithm, in a CPU, of the correlation matrix. Resumo: O cálculo da matriz de correlação é utilizado para encontrar a associação entre variáveis. Esta operação pode ser executada mais rapidamente se feita em GPUs, ao invés de executada em CPUs. Diante deste cenário, o presente artigo apresenta a descrição e os resultados do estudo feito acerca do potencial de paralelismo de placas gráficas, GPUs, e da arquitetura CUDA. De forma a mostrar, ainda, a análise do desempenho, em tempos de execução (em uma GPU) do algoritmo paralelizado, em relação ao algoritmo sequencial (em uma CPU) da matriz de correlação. 1 Introdução Na atualidade o mundo científico encontra-se em um momento em que as CPUs (Central Processing Units) já não conseguem lidar com o crescimento exponencial de dados a nível mundial. Além disso, cada vez mais, as quantidades destes dados tendem a aumentar. Em consequência disto, pesquisadores estão sempre a procurar novas formas de processamento, isto é, meios que seja permitido tratar grande volume de dados em áreas como Inteligência Artificial, Física e outras [Mamani 2011]. Por exemplo, ao considerar as aplicações que precisam lidar com tais aumentos na quantidade de dados, seja por exemplo, na modelagem de redes bayesianas [Grubisic e Ogliari 2013] ou em aplicações utilizando o método PCA (Principal Component Analysis), que por sua vez é utilizado em processamento de imagens e de forma geral na análise de dados multivariados [Araujo 2009]. Para todos esses casos existe um tipo de operação em comum, o cálculo de matriz de correlação. Essa matriz de correlação é uma matriz simétrica, que é utilizada quando há a necessidade de obter o grau de associação das variáveis [Vicini 2005], como é o caso do cálculo da transformada de Karhunen-Loève (KLT) que diagonaliza sua matriz de correlação [Torun, Yilmaz e Akansu 2012]. Outros trabalhos relacionados tem-se [Kijsipongse et.al 2011], [Logoglu e Ates 2010], que propõem o cálculo da referenciada matriz de forma mais rápida.
2 Para abordar o problema do processamento multivariado mostrado acima, uma alternativa é a utilização de computação paralela em placas GPUs (Graphics Processing Unit) [Mamani 2011]. A ideia principal é que existirão várias operações processadas paralelamente distribuídas nas dezenas de núcleos das GPUs ao contrário dos quatro ou oito núcleos que uma CPU possui em média. Assim, a GPU processa mais dados em várias linhas de processamento ao mesmo tempo, melhorando o desempenho de um determinado processo, o que pela CPU seria possível, porém com a limitação de ter apenas oito núcleos, levando assim um tempo maior para chegar ao mesmo resultado. Dessa forma, esse trabalho tem por objetivo mostrar qual o valor desse incremento no desempenho da GPU em relação à CPU quando se realiza uma transformação matemática com múltiplas variáveis. Para alcançar esse objetivo é implementado o cálculo da Matriz de Correlação em uma arquitetura paralela que será descrita nesse trabalho. Essa implementação paralela, juntamente com outra implementação sequencial permitirá comparar os períodos de tempo necessários para a execução de cada função envolta no cálculo, bem como analisar a diferença entre o somatório dos tempos de processamento dessas funções. 2 GPU (Graphics Processing Unit) CUDA (Compute Unified Device Architecture) é uma plataforma de computação paralela e um modelo de programação inventado pela NVidia (2013). Ela permite aumentos significativos de performance computacional ao aproveitar a potência da unidade de processamento gráfico (GPU). Para entender melhor o funcionamento da programação em GPU é preciso primeiro conhecer algumas terminologias utilizadas. Para tudo aquilo que se refere a recursos da CPU dá-se o nome de host, analogamente, para tudo que se refere a recursos da GPU damos o nome de device. Um exemplo prático é quando é feita a transferência da memória da CPU para a memória da GPU utiliza-se o parâmetro cudamemcpyhosttodevice. Outra terminologia bastante utilizada em meio à programação em CUDA é a tipologia das funções, chamadas nesta de kernels, que podem ser global ou device. Um kernel global é executado na GPU e deve ser chamado na CPU. Assim como o kernel global, o kernel device é executada na GPU, porém deve ser chamada dentro de um kernel global. É necessário também entender a definição de threads, blocos e grids. A principio, nas threads fica todo o potencial de paralelismo, cada operação paralelizada é feita em uma thread diferente, já o bloco é uma organização de threads que tem uma memória compartilhada entre todas as suas threads. Por outro lado, a grid é uma organização de vários blocos [Sanders e Kandrot 2011]. Considerando a forma de acesso baseado na memória compartilhada, juntamente com a técnica de redução ou reduction [Sanders e Kandrot 2011], serão de grande utilidade para resolver o problema de dependência, por exemplo, na soma de todos os elementos de um vetor. Normalmente, para se somar um vetor, soma-se o i-ésimo com o resultado parcial de todos os elementos até então somados, ou seja, o primeiro elemento é somado com 0 (inicialização da variável), o segundo elemento é somado com o resultado da primeira operação, o resultado desta operação é somado com o terceiro elemento e assim sucessivamente. Desta forma, percebe-se facilmente uma
3 dependência, o que faz com que não seja possível paralelizar, se adotada essa estratégia sequencial. A solução encontrada é o uso da técnica de redução [Sanders e Kandrot 2011] que consiste em fazer somas independentes. No caso de um vetor de n elementos, são realizadas n 2 somas entre elementos distintos, possivelmente a[i] + a[i + n 2 ] com 0 i < n. Desta forma, todas as n operações serão feitas em paralelo. Para fazer a próxima 2 2 rodada de somas paralelas é necessário que todas as threads possam ver os resultados obtidos, nesse ponto é importante observar que é ai onde entra a memória compartilhada, estes resultados, assim como o vetor inicial são guardados nesta para que todas as threads do mesmo bloco possam visualizar os resultados. Rodadas da redução são executadas até que o resultado seja apenas um elemento. Com os fundamentos anteriormente descritos, na próxima seção será abordada a descrição do método matemático, a matriz de correlação, utilizado como objeto de estudo para a geração de dados e sua posterior análise. 3 Matriz de Correlação Análise de Componentes Principais ou PCA é um método estatístico multivariado que tem como uma de suas finalidades a de promover uma redução dimensional, eliminando a parte redundante da informação [Marques 2005]. Como esta operação é bastante utilizado no meio científico e em diversas técnicas como mencionadas na introdução, resolveu-se implementar inicialmente uma parte do mesmo, nesse caso o cálculo da matriz de correlação, para a comparação CPU vs. GPU. Baseando-se no artigo de Marques (2005), são necessários os seguintes passos para a obtenção da matriz de correlação: Padronização das Variáveis, cálculo da matriz diferença e cálculo da matriz de correlação. No primeiro passo para padronizar as variáveis é preciso aplicar sobre cada elemento da matriz de entrada a fórmula : a i,j = (a i,j m j )/d j (3.1) Depois, no segundo passo (o cálculo da matriz diferença), aplica-se a fórmula a i,j = (a i,j m j ) (3.2) Para finalizar, com a matriz resultante do passo 2, nxm, é feito o seguinte processo: Retira-se linha por linha da matriz diferença, separando-as em n diferentes matrizes onde os elementos das linhas serão dispostos na vertical formando matrizes mx1. Seleciona-se cada uma dessas matrizes mx1, e as multiplica por sua transposta, formando assim n matrizes mxm. Por último, somam-se essas n matrizes e divide todos os elementos por n formando uma só matriz resultante mxm, a matriz de correlação.
4 Onde em todos os passos a i,j é o elemento da linha i e da coluna j, m j é a média dos elementos da coluna j, d j é o desvio padrão dos elementos da coluna j e n é o número de linhas e m o número de colunas. Observando que a matriz somente é considerada de correlação se os dados de entrada foram antes padronizados, se não fossem, a mesma seria denominada matriz de covariância [Araujo 2009]. Depois de mostrar o embasamento matemático da operação a considerar no presente trabalho, passamos a descrever no tópico 4 como foi codificada a matriz de correlação em CUDA. 4 Implementação da Matriz de Correlação em CUDA Percebendo-se que os passos necessários para o cálculo da matriz de correlação são paralelizáveis e levando em consideração que a quantidade de dados de entrada almejada é uma matriz tridimensional, por exemplo, de , seria plausível utilizar o potencial computacional da GPU para implementar os passos, buscando menor tempo de execução em comparação à CPU. Para isso, utilizaram-se funções em CUDA, de forma que todas as matrizes mencionadas no PCA fossem tratadas como vetores, como é mostrado na Figura 4.1 a), que exibe uma matriz e suas posições, e a Figura 4.1 b) que mostra a matriz, e seus elementos decompostos em um vetor. Figura 4.1 a) Exemplo da matriz e suas posições; b) Elementos da matriz a decompostos em um vetor As funções mencionadas, no parágrafo anterior, encontram-se detalhadas abaixo: global void reduction_vetor_medio(float* matrizinicial, float* vetormedio): O resultado desta função é retornado na variável vetormedio. Cada posição deste se torna responsável por armazenar a média da coluna correspondente a sua posição, ou seja, a posição j do vetor médio guarda a média da coluna j. Nesta função é usada a redução para a obtenção paralela da soma de todos os elementos de cada coluna e posteriormente é feita a divisão pelo número de linhas. global void reduction_desvio_padrao(float *matrizinicial, float *vetormedio,float *desviopadrao ):
5 Esta função é similar a do cálculo do vetor médio, a única diferença é que ao invés de calcular a média, ela calcula o desvio padrão de cada coluna. Da mesma forma que a função anterior, essa registra o resultado na variável desviopadrao e usa a técnica da redução, que foi adaptada para a situação em questão. global void padroniza(float* matrizinicial, float* vetormedio, float *desviopadrao): Essa função faz a padronização de cada dado, do vetor matrizinicial, vetor este que é tratado como uma matriz nxm, onde n é igual à linhas e m à colunas. Utilizando mais dois vetores (vetormedio e desviopadrao), para os cálculos de diferença e de divisão, onde a posição de seus elementos nos vetores são relativas as colunas imaginadas da matriz de entrada. Deve-se observar aqui, que de forma similar as funções anteriores, o elemento de matrizinicial cuja posição indicaria que sua coluna seria j na matriz é diminuído pelo dado de vetormedio, da posição j no vetor, e dividido pelo dado de desviopadrao de mesma indexação, resultando assim na padronização dos dados. Posteriormente, ainda no mesmo bloco de função, é feito o cálculo da matriz diferença (diminuição de cada elemento pela média da sua respectiva coluna) que será necessário para a obtenção da matriz de correlação. global void CalcMult_Transp(float* A, float *B, int linhas, int colunas): Nesta função cada linha da matriz, recebida como A, de tamanho linhas colunas, é tratada como se fosse uma mini matriz de ordem colunas 1. No caso, o vetor é percorrido por partes e, assim, é feita a multiplicação de dois elementos escolhidos de acordo com a sua posição, para que assim, a operação funcione como se a cada parte percorrida, vista como uma mini-matriz, ocorresse a multiplicação por sua transposta. No final, os valores são recolhidos em B, resultando em um vetor de tamanho linhas colunas colunas. global void CalcVetCovariancia(float* A, float* B, int N, int linhas, int colunas): Essa função faz a soma dos elementos de A, como se os seus elementos estivessem em linhas matrizes de ordem colunas colunas. O resultado é B, um vetor de tamanho colunas colunas. Nesta função usamos a redução para aumentar a velocidade das operações. Estas foram as funções implementadas em CUDA para se chegar à matriz de correlação. Na figura 4.2 é visualizado um fluxograma com a ordem de execução do programa. Observando a Figura 4.2, a execução do programa começa no main, onde é feita a alocação de variáveis tanto no host como no device, a leitura das entradas, a inicialização das variáveis, a cópia de variáveis da memória do host para a memória do device, as chamadas dos kernels, a cópia do resultado final da memória do device para a memória do host e, por fim, a desalocação das variáveis no host e no device. Todas estas tarefas são feitas sequencialmente, uma em relação a outra, porém algumas funções são executadas paralelamente como mostrado abaixo.
6 O primeiro e o segundo kernel a serem executados, reduction_vetor_medio e reduction_desvio_padrão, respectivamente, utilizam-se do método de redução para um maior paralelismo em sua execução, diferentemente do kernel padroniza, em que o tratamento, feito sobre as colunas imaginadas no vetor, é paralelo e sobre as linhas é sequencial. Figura 4.2 Imagem que mostra o pseudocódigo do cálculo da correlação e específica os trechos de código paralelo e sequencial No kernel CalcMult_Transp, as linhas da matriz são percorridas paralelamente, e no processamento de cada linha padronizada as colunas são, sequencialmente, varridas em dois blocos for alinhados, onde os elementos da matriz padronizada serão multiplicadas e posteriormente divididas pelo número de linhas. No kernel CalcVetCovariancia, os elementos da matriz são somados paralelamente com os respectivos pares em outra matriz, porém existe uma sequência entre as somas das matrizes, ou seja, os elementos da primeira matriz são somados paralelamente com os elementos da segunda, depois os elementos da matriz resultante são somados paralelamente com os elementos da terceira matriz e assim sucessivamente. Em cada kernel foram utilizadas técnicas de computação paralela ou alternadamente computação paralela e sequencial, como acontece no kernel CalcMult_Transp que executa paralelamente um trecho de código sequencial. Isso acontece para que seja possível tirar, de cada kernel, o maior proveito possível do desempenho computacional disponível. Isto porque nem sempre é possível paralelizar totalmente um cálculo (é o caso do cálculo da soma), ou mesmo sendo possível a placa possui um limite de blocos ou threads que impõe, ao programador, dividir o
7 processamento de um determinado código em várias etapas. No próximo tópico são mostrados os resultados encontrados nos testes da implementação descritos aqui. 5 Resultados Obtidos Para fazer os testes e comparações, utilizou-se, além do código em CUDA, a codificação sequencial da matriz de correlação para a execução na CPU. Para gerar os resultados da GPU e CPU, bem como para a comparação dos dados as seguintes ferramentas foram usadas: o processador Intel Core i7-2670qm 2.20GHz, o ambiente de programação Visual Studio 2010: Ultimate, o sistema operacional Windows 7 Home Premium x64, com memória RAM de 6GB e a configuração da GPU exibida na Tabela 5.1. Tabela 5.1 Configurações da GPU utilizada na análise CUDA Driver Version 5.0 Cuda Compability 2.1 GPU Clock rate 1200 Mhz CUDA Cores (2 Multiprocessors * 48 Cuda Cores) 96 Memory Interface Width Memory BandWidth 128-bit 28.8 GB/sec Maximum size of each dimension of a block 1024 x 1024 x 64 Maximum size of each dimension of a grid x x Utilizou-se uma matriz de entrada de ordem x 1024 (32768 linhas e 1024 colunas), resultando em elementos float, números reais na programação CUDA e na linguagem C, que equivalem a aproximadamente 134Mb de dados. Onde, este foi o limite alcançado ate o momento da elaboração desse trabalho que foi utilizado na GPU com as características acima mostradas. Foi executado o código em C com os mesmos dados de entrada e o tempo de execução geral considerando todas as funções na CPU foi de milissegundos, enquanto na GPU foi de milissegundos, ambos aproximadamente. É possível observar esta diferença na Figura 5.1, que mostra ainda a comparação do tempo de cada função, mostradas no tópico anterior, que constitui o cálculo da matriz de correlação.
8 2048 x x x x x x x x x x x x x x x x x x x x 1024 Cálculo da Matriz de Correlação 0,9ms 0,8ms 0,7ms 0,6ms 0,5ms 0,4ms 0,3ms 0,2ms 0,1ms 0ms C CUDA Cálculo da Matriz de Correlação Figura 5.1 Tempos de execução da matriz de correlação na CPU (em C) e GPU (em CUDA) com dados Observa-se que, a execução na GPU funcionou com uma velocidade 100 vezes mais rápida em relação à velocidade de execução na CPU. Isso é possível em virtude da capacidade de paralelismo da placa gráfica. Para obter estes resultados, foram feitos testes com uma base de dados que consiste de características de manuscritos de numerais de 0 a 9, extraídas de uma coleção de mapas de utilidades holandeses [Duin 2013]. Os resultados destes podem ser observados na Figura 5.2, essa imagem mostra a comparação feita considerando o número de linhas indo de 2048 a e de colunas de 2 a 1024, lembrando que o limite encontrado para a execução deste código na presente placa foi de linhas por 1024 colunas. 0,9ms 0,8ms 0,7ms 0,6ms 0,5ms 0,4ms 0,3ms 0,2ms 0,1ms 0ms CPU GPU Figura 5.2 Tempos de execução da matriz de correlação na CPU e GPU, com o número de linhas indo de 2048 a e de colunas de 2 a Nota-se, analisando os resultados, que os processamentos de matrizes de diversos tamanhos tiveram tempos de execução semelhantes tanto em C, como em CUDA, tempos estes que não passavam da terceira casa decimal depois do zero.
9 Entretanto, no momento em que o número de colunas aumenta para valores iguais ou acima de 128, é observado que a diferença entre os tempos de execução da CPU pelo da GPU começa a aumentar de forma exponencial. Com o aumento do tamanho da matriz é esperado que o comportamento do tempo da execução da GPU também cresça, mas diferente da CPU, possivelmente o aumento de tempo de execução seja mais lento o que levaria a um bom ganho de desempenho. Isto aconteceria porque apesar de o clock da CPU ser maior, a GPU pode realizar centenas de operações simultâneas enquanto a CPU fez uma ou duas operações [NVidia 2013]. Apesar de neste gráfico não ficar explicito, uma das preocupações detectadas na utilização da GPU é o gargalo que é formado na transição de dados da memória da CPU para a memória da GPU ou o inverso, pois mesmo tendo um bom fluxo de dados na GPU os dados devem antes passar pelo barramento da CPU. Isto acontece porque nas GPUs mais recentes o barramento é maior que o barramento na placa mãe, com isso quando é preciso transferir dados entre GPU e CPU há um afunilamento do fluxo de dados no barramento da CPU. Com os resultados e as análises apresentadas nesta seção é possível, então, pensar em novos estudos, como a análise de algoritmos, os quais a correlação faz parte. As novas metas e as conclusões retiradas desse estudo se encontram descritas no tópico abaixo. 6 Conclusão e Trabalhos Futuros Este artigo mostra uma análise de desempenho gerado pela utilização da arquitetura CUDA para a paralelização do cálculo da matriz de correlação. Desta análise, pode-se concluir que, para problemas em que não há uma forte dependência entre as operações necessárias, é possível utilizar a GPU como uma ferramenta para aumentar o desempenho gerado pelo paralelismo que ela oferece. Uma das principais qualidades de se programar em CUDA é a facilidade que a linguagem oferece, já que para programar não é necessário um vasto conhecimento da arquitetura, transformando em algo mais acessível uma ferramenta que há pouco tempo atrás era exigida muita especialização para fazer até tarefas de renderização. Os próximos passos almejados para este trabalho são: Manipular matrizes com tamanhos reais de imagens de ressonância magnética. Adicionar mais funcionalidades ao código, para que além da matriz de correlação tenha-se também todas as outras etapas que compõem o PCA, como o cálculo dos autovetores e autovalores [Araujo 2009]. Desenvolver uma API, de Application Programming Interface (ou Interface de Programação de Aplicativos), com funcionalidades suficientes para que programadores possam paralelizar mais facilmente os seus códigos e possivelmente tenham um ganho de desempenho. Explorar mais as melhores formas de implementação do algoritmo da matriz de correlação na GPU, bem como, analisar parâmetros que definem a eficiência (latência, tamanho de memória utilizada, etc) de tal algoritmo nesta arquitetura paralela.
10 Analisar formas mais adequadas de comparação, como, de CPU (com o uso de threads) vs. GPU, ou de diversas GPUs com configurações diferentes. Finalmente, espera-se que com os resultados obtidos até aqui e com os esperados para as próximas etapas seja possível fazer processamento de imagens e/ou sinais com o PCA utilizando as funções disponibilizadas pela API, que servem para tornar mais acessível a outros programadores os passos do PCA, e todo o potencial de processamento disponível na GPU. 7 Referências ARAUJO, W. O. Análise de Componentes Principais (PCA). Centro Universitário de Anápolis, KIJSIPONGSE E.; U-RUEKOLAN S.; NGAMPHIW C.; TONGSIMA S. Efficient Large Pearson Correlation Matrix Computing using Hybrid MPI/CUDA. National Electronics and Computer Technology Center Pathumthani, National Center for Genetic Engineering and Biotechnology Pathumthani. Thailand, LOGOGLU K. B.; ATES T. K. Pearson İlinti Katsayısı Hesaplamasının Grafik İslemci Birimleri Üzerinde Hızlandırılması Speeding-Up Pearson Correlation Coefficient Calculation on Graphical Processing Units. Orta Dogu Teknik Üniversitesi, MAMANI, A. Soluções aproximadas para algoritmos escaláveis de mineração de dados em domínios de dados complexos usando GPGPU. Dissertação (Mestrado em Ciências de Computação e Matemática Computacional) Universidade de São Paulo. São Carlos, MARQUES, G. Análise em Componentes Principais: Processamento Estatístico de Sinais NVIDIA. CUDA: Programação paralela mais fácil. Disponível em: Acesso em 24 de fev. de SANDERS, Jason; KANDROT, Edwad. CUDA by Example. United States: NVIDIA Corporation, VICINI, Lorena. Análise Multivariada da Teoria à Prática. Universidade Federal de Santa Maria. Santa Maria-RS, GRUBISIC, Viviane; OGLIARI, André. Uso de Matrizes de Correlação na Modelagem das Redes Bayesianas para Análise de Riscos no Projeto do Produto. Disponível em: Acesso em: 24 de fev. de TORUN, M. U.; YILMAZ, O.; AKANSU, A. N. Novel GPU Implementation of Jacobi Algorithm for Karhunen-Loève Tranform of Dense Matrices, DUIN, ROBERT P.W. Multiple Features Data Set. Disponível em: Acesso em 03 de mar. de 2013.
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
Leia maisComparaçã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
Leia maisIntroduçã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
Leia maisComputação Paralela (CUDA)
Universidade Federal do Amazonas Faculdade de Tecnologia Departamento de Eletrônica e Computação Computação Paralela (CUDA) Hussama Ibrahim hussamaibrahim@ufam.edu.br Notas de Aula Baseado nas Notas de
Leia maisParalelismo 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
Leia maisINE5645-Programação Paralela e Distribuída Aula 17/09/2018 Nome
INE5645-Programação Paralela e Distribuída Aula 17/09/2018 Nome Para paralelizar códigos de programas, tudo que necessitamos é de uma construção sintática denominada kernel. Seja o kernel: kernel void
Leia maisFabrí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)
Leia maisde 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 maisProcessamento 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 ajb@ime.usp.br Departamento de Ciência da Computação Instituto
Leia maisINE 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
Leia maisAluno 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
Leia maisSparse Matrix-Vector Multiplication on GPU: When Is Rows Reordering Worthwhile?
Sparse Matrix-Vector Multiplication on GPU: When Is Rows Reordering Worthwhile? Paula Prata João Muranho Instituto de Telecomunicações Departamento de Informática Universidade da Beira Interior Instituto
Leia maisAplicações em CUDA. Medialab Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center
Aplicações em CUDA Medialab Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center Roteiro l Introdução l Eventos l Aspectos históricos l Operações atômicas l Introdução sobre
Leia maisParalelização do Detector de Bordas Canny para a Biblioteca ITK usando CUDA
Paralelização do Detector de Bordas Canny para a Biblioteca ITK usando CUDA Luis Henrique Alves Lourenço Grupo de Visão, Robótica e Imagens Universidade Federal do Paraná 7 de abril de 2011 Sumário 1 Introdução
Leia maisParadigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot
Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot Bruno Pereira dos Santos Dany Sanchez Dominguez Universidade Estadual de Santa Cruz Cronograma Introdução Serial vs Processamento
Leia maisHierarquia de memória:
INE5645 Programação Paralela e Distribuída Aluno Modelo de Execução CUDA - A execução do programa controlado pela CPU pode lançar kernels, que são trechos de código executados em paralelo por múltiplas
Leia maisParalelização do algoritmo de Método de Estimação Não-Paramétrico por Núcleo Estimador Multivariado (KDE) utilizando GPU/CUDA
See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/271325676 Paralelização do algoritmo de Método de Estimação Não-Paramétrico por Núcleo Estimador
Leia maisWhat 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 maisParalelismo 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
Leia maisIntroduçã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
Leia mais1 Introdução. I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho
1 Introdução I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho Os hardwares gráficos atualmente podem ser considerados como verdadeiros processadores
Leia maisUM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1
UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1 Eldair F. Dornelles 2, Henrique A. Richter 3, Miquéias F. M. Trennepohl 4, Taís T. Siqueira
Leia maisANÁLISE DE DESEMPENHO COM A PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PERFEITOS 1
ANÁLISE DE DESEMPENHO COM A PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PERFEITOS 1 Éder Paulo Pereira 2, Gilberto Przygoda Marmitt 3, Emilio Hoffmann De Oliveira 4, Edson Luiz Padoin 5, Carlos Eduardo Das Chagas
Leia maisIntrodução a CUDA. Esteban Walter Gonzalez Clua. Medialab - Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center START
Introdução a CUDA START Esteban Walter Gonzalez Clua Medialab - Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center 1536 cores Dynamic Parallelism Hyper - Q Pipeline
Leia maisProcessamento 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
Leia maisImplementação de um escalonador de processos em GPU
Implementação de um escalonador de processos em GPU Guilherme Martins guilhermemartins@usp.br 6 de abril de 2017 Guilherme Martins (guilhermemartins@usp.br) Implementação de um escalonador de processos
Leia maisARQUITETURA 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 maisGPU (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 maisPARALELIZAÇÃO DE ALGORITMO DE INSPEÇÃO DE ROTAS UTILIZANDO PERMUTAÇÃO LEXICOGRÁFICA 1
PARALELIZAÇÃO DE ALGORITMO DE INSPEÇÃO DE ROTAS UTILIZANDO PERMUTAÇÃO LEXICOGRÁFICA 1 Jessica De Almeida Berlezi 2, Janiel Ceretta Foletto 3, Edson Luiz Padoin 4, Rogério S. M. Martins 5. 1 Trabalho realizado
Leia maisA 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, euzebioprogramacao@gmail.com 2 29520-000, victor3ifes@gmail.com
Leia maisMC4: Introdução à Programação Paralela em GPU para a Implementação de Métodos Numéricos
MC4: Introdução à Programação Paralela em GPU para a Implementação de Métodos Numéricos Aula 1: Introdução à programação paralela e ao ambiente de programação CUDA Profs.: Daniel Alfaro e Silvana Rossetto
Leia maisDESENVOLVIMENTO 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: ssvenske@unicentro.br
Leia maisComputação científica utilizando placas gráficas
Brasília, dezembro de 2008 Universidade de Brasília - Faculdade do Gama Sumário Introdução Sumário Introdução Arquitetura da GPU Sumário Introdução Arquitetura da GPU Modelo de programação Sumário Introdução
Leia maisFUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres
FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5 Cristina Boeres Introdução! Diferença de velocidade entre Processador e MP O processador executa uma operação rapidamente e fica em
Leia maisInstituto de Matemática e Estatística - USP MAC Organização de Computadores EP1. Experimentos com o cache. Tiago Andrade Togores
Instituto de Matemática e Estatística - USP MAC0412 - Organização de Computadores EP1 Experimentos com o cache Tiago Andrade Togores - 6514230 30 de setembro de 2010 Sumário 1 Introdução 2 1.1 O que é
Leia maisAplicação de Processamento Paralelo com GPU a Problemas de Escoamento Monofásico em Meios Porosos. Bruno Pereira dos Santos Dany Sanchez Dominguez
Aplicação de Processamento Paralelo com GPU a Problemas de Escoamento Monofásico em Meios Porosos Bruno Pereira dos Santos Dany Sanchez Dominguez 1 Roteiro 1. Introdução 2. Five-Spot Problem 3. Modelagem
Leia mais5 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 mais3 Computação de Propósito Geral em Unidades de Processamento Gráfico
3 Computação de Propósito Geral em Unidades de Processamento Gráfico As Unidades de Processamento Gráfico (GPUs) foram originalmente desenvolvidas para o processamento de gráficos e eram difíceis de programar.
Leia maisEng. Thársis T. P. Souza
Introdução à Computação de Alto Desempenho Utilizando GPU Seminário de Programação em GPGPU Eng. Thársis T. P. Souza t.souza@usp.br Instituto de Matemática e Estatística - Universidade de São Paulo Introdução
Leia maisOpenMP: 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
Leia maisParalelização Eficiente para o Algoritmo Binário de Exponenciação Modular
Paralelização Eficiente para o Algoritmo Binário de Exponenciação Modular Pedro Carlos da Silva Lara Fábio Borges de Oliveira Renato Portugal Laboratório Nacional de Computação Científica Índice 1 Introdução
Leia maisProcessamento de áudio em tempo real em dispositivos computacionais de alta disponibilidade e baixo custo
Processamento de áudio em tempo real em dispositivos computacionais de alta disponibilidade e baixo custo André J. Bianchi 21/10/2013 1 / 33 1 Introdução 2 Metodologia 3 Arduino 4 GPU 5 Android 6 Conclusão
Leia maisOrganizaçã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..
Leia maisINTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura
Introdução Organização e Arquitetura INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Eduardo Max Amaro Amaral Arquitetura são os atributos visíveis ao programador. Conjunto de instruções, número
Leia maisJônatas Lopes de Paiva Instituto de Matemática e Estatística Universidade de São Paulo. 06 de maio de 2011
Jônatas Lopes de Paiva jlp@ime.usp.br Instituto de Matemática e Estatística Universidade de São Paulo 06 de maio de 2011 Introdução String-matching O que é? Em que é utilizado Tipos GPU GPGPU String-matching
Leia maisThe 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 maisINTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL
INTRODUÇÃO À TECNOLOGIA DA ORGANIZAÇÃO COMPUTACIONAL PROFESSOR CARLOS MUNIZ ORGANIZAÇÃO DE UM COMPUTADOR TÍPICO Memória: Armazena dados e programas Processador (CPU - Central Processing Unit): Executa
Leia maisAnálise de Desempenho da Paralelização do Problema de Caixeiro Viajante
Análise de Desempenho da Paralelização do Problema de Caixeiro Viajante Gabriel Freytag Guilherme Arruda Rogério S. M. Martins Edson L. Padoin Universidade Regional do Noroeste do Estado do Rio Grande
Leia maisMemory-level and Thread-level Parallelism Aware GPU Architecture Performance Analytical Model
Memory-level and Thread-level Parallelism Aware GPU Architecture Performance Analytical Model Sunpyo Hong Hyesoon Kim ECE School of Computer Science Georgia Institute of Technology April 6, 2011 Visão
Leia maisARQUITETURA DE COMPUTADORES. Professor: Clayton Rodrigues da Siva
ARQUITETURA DE COMPUTADORES Professor: Clayton Rodrigues da Siva OBJETIVO DA AULA Objetivo: Conhecer a estrutura da arquitetura da Máquina de Von Neumann. Saber quais as funcionalidades de cada componente
Leia maisPreliminares. Profa. Sheila Morais de Almeida. agosto
Preliminares Profa. Sheila Morais de Almeida DAINF-UTFPR-PG agosto - 2016 Algoritmos Definição - Skiena Algoritmo é a ideia por trás dos programas de computador. É aquilo que permanece igual se o programa
Leia mais4 Testes e experimentos realizados 4.1. Implementação e banco de dados
32 4 Testes e experimentos realizados 4.1. Implementação e banco de dados Devido à própria natureza dos sites de redes sociais, é normal que a maior parte deles possua uma grande quantidade de usuários
Leia mais1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador
1 Introdução 1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador possa resolver problemas de forma automática
Leia maisUNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES
Tecnologia da informação e comunicação UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES CICLO DE INSTRUÇÕES OU DE EXECUÇÃO Arquitetura de computadores 2 CICLO DE EXECUÇÃO No inicio de cada ciclo de instrução,
Leia maisAula 3: Algoritmos: Formalização e Construção
Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de
Leia maisTópicos em Física Computacional: Introdução a Linguagem CUDA
Tópicos em Física Computacional: Introdução a Linguagem CUDA Aula 06: Introdução a Linguagem CUDA Otimização do Código Carine P. Beatrici IF UFRGS 1 Da Aula Passada... Programa que soma matrizes linearizadas;
Leia maisANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa
ANÁLISE DE ALGORITMOS: PARTE 1 Prof. André Backes Algoritmos 2 Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa Precisamos escrever o seu algoritmo Um algoritmo
Leia maisAná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 maisEstrutura de um computador digital. Gustavo Queiroz Fernandes
Gustavo Queiroz Fernandes Atualizado em: 18/02/2019 Sumário Objetivos... 1 Pré-requisitos... 1 Recursos e Materiais... 1 Última Atualização... 1 1. Memória primária... 1 2. Memória secundária... 2 3. Unidade
Leia maisConceitos sobre Computadores
Conceitos sobre Computadores Prof. UNESP - São José do Rio Preto Linguagem Computacional Neste tópico veremos: Os Componentes físicos dos computadores O hardware: principais partes dos computadores atuais.
Leia maisA Utilização da Tecnologia CUDA para Processamento Paralelo de Algoritmos Genéticos
A Utilização da Tecnologia CUDA para Processamento Paralelo de Algoritmos Genéticos Allan Ariel Leite Menezes Santos 1 1 Universidade do Estado da Bahia (UNEB) allan.ariel1987@gmail.com Abstract. The problem
Leia maisPROCESSADORES 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 maisUniversidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos
Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Pensando em Paralelo Pensar em paralelo é uma tarefa que exige disciplina
Leia maisIntrodução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 02 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAIS SÃO OS COMPONENTES BÁSICOS DO HW DE UM SISTEMA COMPUTACIONAL?
Leia maisUma 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 maisPARALELIZAÇÃ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 mais5 Resultados Experimentais
5 Resultados Experimentais Neste capítulo são apresentados alguns testes realizados tendo em vista julgar a aplicação desenvolvida em algumas das situações em que ela possa vir a ser utilizada, assim como
Leia maisAnálise de Algoritmos Estrutura de Dados II
Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Análise de Algoritmos Estrutura de Dados II COM10078 - Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br
Leia maisArquiteturas de Computadores
Arquiteturas de Computadores Computadores vetoriais Fontes dos slides: Livro Patterson e Hennessy, Quantitative Approach e site do curso EE 7722, GPU Microarchitecture do Prof. David Koppelman Graphical
Leia maisCOMPARAÇÃ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
Leia maisORGANIZAÇÃO DE COMPUTADORES
ORGANIZAÇÃO DE COMPUTADORES CAMPUS SANTO ANDRÉ CELSO CANDIDO SEMESTRE 2014-1 1 CONCEITOS ASSUNTOS DESTA AULA: Funcionalidades de um computador; Hardware e Software; Componentes de um computador: o CPU
Leia maisAnálise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisInteligência Computacional Aula 2 - Introdução ao MatLab Graduação /2
Universidade Federal do Rio de Janeiro Instituto de Matemática / DCC Inteligência Computacional Aula 2 - Introdução ao MatLab Graduação - 2003/2 Prof. A. C. G. Thomé, PhD thome@nce.ufrj.br Airam C. P.
Leia maisOrganizaçã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
Leia maisIntrodução à OpenMP (Dia 1) Prof. Guido Araujo
Introdução à OpenMP (Dia ) Prof. Guido Araujo www.ic.unicamp.br/~guido Roteiro Escrevendo programas usando OpenMP Usando OpenMP para paralelizar laços seriais com pequenas mudanças no código fonte Explorar
Leia maisWorkshop de Informática Biomédica (WIBm)
42 UTILIZAÇÃO DE UNIDADES DE PROCESSAMENTO GRÁFICO EM SIMULAÇÕES DO PROBLEMA DE PONTOS ALEATÓRIOS Cristiano Roberto Fabri Granzotti 1, Alexandre Souto Martinez 1 1 Laboratório de Simulação em Sistemas
Leia maisAtol Fortin, Bruno da Hora, Lucas Piva, Marcela Ortega, Natan Lima, Pedro Raphael, Ricardo Sider, Rogério Papetti. 28 de novembro de 2008
Reinventando a Computação Atol Fortin, Bruno da Hora, Lucas Piva, Marcela Ortega, Natan Lima, Pedro Raphael, Ricardo Sider, Rogério Papetti Universidade de São Paulo 28 de novembro de 2008 Introdução Dr.
Leia maisConceitos Básicos Processador
Infra-Estrutura de Hardware Conceitos Básicos Processador Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceitos básicos Organização da CPU Execução das Instruções RISC x CISC Paralelismo
Leia maisGerência de Dispositivos. Adão de Melo Neto
Gerência de Dispositivos Adão de Melo Neto 1 Gerência de Dispositivos Gerência de Dispositivos Dispositivos de E/S Device Drivers Controladores Subsistema de E/S 2 Gerência de Dispositivos A gerência de
Leia maisDisciplina: Arquitetura de Computadores
Disciplina: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof a. Carla Katarina de Monteiro Marques UERN Introdução Responsável por: Processamento e execução de programas armazenados na
Leia maisComputadores 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 maisCUDA: 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
Leia maisIntrodução aos Algoritmos
Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado
Leia maisPatrí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 maisProposta de Melhoria de uma Implementação Paralela para GPUs Usando CUDA - Estudo de Caso em Modelo Atmosférico
Proposta de Melhoria de uma Implementação Paralela para GPUs Usando CUDA - Estudo de Caso em Modelo Atmosférico Fabiano Cassol de Vargas, Matheus Beniz Bieger, Claudio Schepke 1 Laboratório de Estudos
Leia maisArquitetura de Von Neumann
Arquitetura de Von Neumann Leandro Tonietto Algoritmos e Programação em C++ Curso de Segurança da Informação ltonietto@unisinos.br http://www.inf.unisinos.br/~ltonietto/tsi/apc/arqvonneumann.pdf Fev-2008
Leia mais5 Resultados Experimentais
5 Resultados Experimentais Neste capítulo são apresentados os resultados dos experimentos elaborados para validar a linha de produção gráfica distribuída e os algoritmos propostos para melhorar o desempenho
Leia maisIntrodução ao Processamento de Alto Desempenho
ao Processamento de Alto Desempenho ERAD Nordeste Prof. Dr. Esbel Tomás Valero Orellana Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas Departamento de Ciências Exatas e Tecnológicas
Leia maisESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade
ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro do Prof. Dr. Carlos Alberto Maziero, disponível no link: http://dainf.ct.utfpr.edu.br/~maziero
Leia maisParalelismo 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
Leia maisMicroprocessadores CPU. Unidade de Controle. Prof. Henrique
Microprocessadores CPU Unidade de Controle Prof. Henrique Roteiro Registradores; Unidade de Controle Níveis de Complexidade Introdução Um sistema microprocessado conta com diversos dispositivos para um
Leia maisCOMPUTAÇÃO PARALELA COM ACELERADORES GPGPU 1. Emilio Hoffmann De Oliveira 2, Edson Luiz Padoin 3.
COMPUTAÇÃO PARALELA COM ACELERADORES GPGPU 1 Emilio Hoffmann De Oliveira 2, Edson Luiz Padoin 3. 1 Trabalho de Conclusão de Curso 2 Aluno do Curso de Ciência da Computação - emiliohoffmann@hotmail.com
Leia maisIntrodução aos Algoritmos
Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado
Leia maisArquiteturas 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
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação
Leia maisParadigmas de Computação Paralela
Paradigmas de Computação Paralela Modelos e Linguagens de Computação Paralela João Luís Ferreira Sobral jls@... 1 Dezembro 2015 Razões para a computação paralela (cf. Skillicorn & Talia 1998) O mundo é
Leia maisArquitetura 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 maisBacharelado 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
Leia maisARQUITETURA DE COMPUTADORES. Organização de Sistemas Computacionais. Prof.: Agostinho S. Riofrio
ARQUITETURA DE COMPUTADORES Organização de Sistemas Computacionais Prof.: Agostinho S. Riofrio Agenda 1. Unidade Central de Processamento 2. Organização da CPU 3. Interpretador 4. RISC x CISC 5. Principios
Leia mais