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

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

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

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 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 mais

Comparação de eficiência entre OpenCL e CUDA

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

Leia mais

Introdução ao CUDA. Material elaborado por Davi Conte.

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

Leia mais

Computação Paralela (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 hussamaibrahim@ufam.edu.br Notas de Aula Baseado nas Notas de

Leia mais

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

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

Leia mais

INE5645-Programação Paralela e Distribuída Aula 17/09/2018 Nome

INE5645-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 mais

Fabrício Gomes Vilasbôas

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)

Leia mais

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

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

Leia mais

Processamento de áudio em tempo real utilizando dispositivos não convencionais:

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 ajb@ime.usp.br Departamento de Ciência da Computação Instituto

Leia mais

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 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 mais

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

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

Leia mais

Sparse Matrix-Vector Multiplication on GPU: When Is Rows Reordering Worthwhile?

Sparse 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 mais

Aplicaçõ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 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 mais

Paralelizaçã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 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 mais

Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot

Paradigmas 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 mais

Hierarquia de memória:

Hierarquia 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 mais

Paralelização do algoritmo de Método de Estimação Não-Paramétrico por Núcleo Estimador Multivariado (KDE) utilizando GPU/CUDA

Paralelizaçã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 mais

What is? Eduardo Viola Nicola Disciplina de IPPD

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

Leia mais

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

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

Leia mais

Introdução OpenMP. Nielsen Castelo Damasceno

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

Leia mais

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

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 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 mais

UM 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 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 mais

ANÁ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 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 mais

Introdução a CUDA. Esteban Walter Gonzalez Clua. Medialab - Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center START

Introduçã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 mais

Processamento Paralelo Utilizando GPU

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

Leia mais

Implementação de um escalonador de processos em GPU

Implementaçã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 mais

ARQUITETURA DE COMPUTADORES

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

Leia mais

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

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

Leia mais

PARALELIZAÇÃ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 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 mais

A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES

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, euzebioprogramacao@gmail.com 2 29520-000, victor3ifes@gmail.com

Leia mais

MC4: 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 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 mais

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

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: ssvenske@unicentro.br

Leia mais

Computação científica utilizando placas gráficas

Computaçã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 mais

FUNDAMENTOS 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 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 mais

Instituto 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 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 mais

Aplicaçã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 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 mais

5 Unidades de Processamento Gráfico GPUs

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

Leia mais

3 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 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 mais

Eng. Thársis T. P. Souza

Eng. 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 mais

OpenMP: Variáveis de Ambiente

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

Leia mais

Paralelização Eficiente para o Algoritmo Binário de Exponenciação Modular

Paralelizaçã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 mais

Processamento 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 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 mais

Organização de Computadores I

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..

Leia mais

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura

INTRODUÇÃ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 mais

Jô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 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 mais

The future is parallel but it may not be easy

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

Leia mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

INTRODUÇÃ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 mais

Análise de Desempenho da Paralelização do Problema de Caixeiro Viajante

Aná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 mais

Memory-level and Thread-level Parallelism Aware GPU Architecture Performance Analytical Model

Memory-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 mais

ARQUITETURA DE COMPUTADORES. Professor: Clayton Rodrigues da Siva

ARQUITETURA 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 mais

Preliminares. Profa. Sheila Morais de Almeida. agosto

Preliminares. 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 mais

4 Testes e experimentos realizados 4.1. Implementação e banco de dados

4 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 mais

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

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 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 mais

UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES

UNIDADE 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 mais

Aula 3: Algoritmos: Formalização e Construção

Aula 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 mais

Tópicos em Física Computacional: Introdução a Linguagem CUDA

Tó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 mais

ANÁ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. 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 mais

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

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

Leia mais

Estrutura de um computador digital. Gustavo Queiroz Fernandes

Estrutura 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 mais

Conceitos sobre Computadores

Conceitos 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 mais

A 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 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 mais

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

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

Leia mais

Universidade 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 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 mais

Introduçã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 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 mais

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

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

Leia mais

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

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

Leia mais

5 Resultados Experimentais

5 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 mais

Análise de Algoritmos Estrutura de Dados II

Aná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 mais

Arquiteturas de Computadores

Arquiteturas 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 mais

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 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 mais

ORGANIZAÇÃO DE COMPUTADORES

ORGANIZAÇÃ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 mais

Análise empírica de algoritmos de ordenação

Aná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 mais

Programação: Vetores

Programaçã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 mais

Inteligência Computacional Aula 2 - Introdução ao MatLab Graduação /2

Inteligê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 mais

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

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

Leia mais

Introdução à OpenMP (Dia 1) Prof. Guido Araujo

Introduçã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 mais

Workshop de Informática Biomédica (WIBm)

Workshop 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 mais

Atol Fortin, Bruno da Hora, Lucas Piva, Marcela Ortega, Natan Lima, Pedro Raphael, Ricardo Sider, Rogério Papetti. 28 de novembro de 2008

Atol 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 mais

Conceitos Básicos Processador

Conceitos 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 mais

Gerência de Dispositivos. Adão de Melo Neto

Gerê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 mais

Disciplina: Arquitetura de Computadores

Disciplina: 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 mais

Computadores e Programação (DCC/UFRJ)

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

Leia mais

CUDA: Compute Unified Device Architecture. Marco Antonio Simões Teixeira

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

Leia mais

Introdução aos Algoritmos

Introduçã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 mais

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

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

Leia mais

Proposta 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 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 mais

Arquitetura de Von Neumann

Arquitetura 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 mais

5 Resultados Experimentais

5 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 mais

Introdução ao Processamento de Alto Desempenho

Introduçã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 mais

ESTRATÉ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 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 mais

Paralelismo em Computadores com Tecnologia Multicore

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

Leia mais

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Microprocessadores 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 mais

COMPUTAÇÃ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. 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 mais

Introdução aos Algoritmos

Introduçã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 mais

Arquiteturas paralelas Parte 1

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

Leia mais

Universidade 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 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 mais

Paradigmas de Computação Paralela

Paradigmas 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 mais

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

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

Leia mais

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

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

Leia mais

ARQUITETURA DE COMPUTADORES. Organização de Sistemas Computacionais. Prof.: Agostinho S. Riofrio

ARQUITETURA 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