0 UNIJUI - UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL DCEEng – DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS PROCESSAMENTO PARALELO COM ACELERADORES GRÁFICOS RODRIGO SCHIECK Santa Rosa, RS - Brasil 2012 1 RODRIGO SCHIECK PROCESSAMENTO PARALELO COM ACELERADORES GRÁFICOS Projeto apresentado na disciplina de Trabalho de Conclusão de Curso do curso de Ciência da Computação da Universidade do Noroeste do Estado do RS como requisito básico para apresentação do Trabalho de Conclusão de Curso. Orientador: Edson Luiz Padoin Santa Rosa – RS 2012 2 PROCESSAMENTO PARALELO COM ACELERADORES GRÁFICOS RODRIGO SCHIECK Projeto apresentado na disciplina de Trabalho de Conclusão de Curso do curso de Ciência da Computação da Universidade do Noroeste do Estado do RS como requisito básico para apresentação do Trabalho de Conclusão de Curso. ____________________________________ Orientador: Prof. Me. Edson Luiz Padoin BANCA EXAMINADORA ____________________________________ Prof. Me. Rogério Samuel de Moura Martins Santa Rosa – RS 2012 3 “A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original.” Albert Einstein 4 Dedicatória Aos meus pais Armindo e Alda, e a minha esposa Elenice, pessoas que amo muito e que me apoiaram e incentivaram em toda esta trajetória, tornando mais este sonho uma realidade, mas que não seja o último, e sim apenas mais um dos muitos outros que virão. Na indisponibilidade de tempo, o qual não pude estar com eles, pois tive que mediar entre o trabalho e o estudo, mas que daqui pra frente pretendo compensar. 5 AGRADECIMENTOS Agradeço à Unijuí como um todo, pelo ótimo ambiente de ensino e corpo docente disponibilizado. Agradeço em especial aos meus pais, que além do auxílio financeiro me deram todo apoio e compreensão, sem o qual teria sido muito difícil superar algumas etapas desta longa trajetória. Agradeço à minha esposa, companheira compreensiva, que sempre esteve ao meu lado me dando apoio e incentivo amenizando o desgaste físico e mental decorrente das diversas horas consecutivas de estudo. Agradeço ao meu orientador, professor Edson Luiz Padoin que levo comigo não apenas como professor ou orientador, mas como amigo, que mesmo com muito trabalho pode me dar muita atenção, sem contar seus conselhos técnicos e científicos, sempre muito bem elaborados com uma ótima fundamentação. Soube ser muito compreensivo, mas também cobrou quando necessário. Mesmo não estando sempre disponível fisicamente, respondeu sempre quase que instantaneamente meus e-mails. Sua motivação e seu otimismo foram de grande apoio para que eu não abaixasse a cabeça perante as dificuldades. Muito obrigado pela parceria no desenvolvimento deste trabalho. Aos professores Gerson Battisti, Rogério Martins e Marcos Cavalheiro que serviram de base na construção do meu conhecimento, o qual foi de suma importância, pois foi empregado no desenvolvimento deste trabalho. Muito Obrigado a Todos! 6 RESUMO As GPUs estão se tornando cada vez mais presentes no cenário da computação de alto desempenho. Elas são processadores massivamente paralelos, inicialmente usados para processamento gráfico e jogos. Desde o surgimento da NVIDIA GeForce série 8, e a introdução do CUDA e outras ferramentas, as GPUs se tornaram programáveis, sendo capazes de executar aplicativos comuns e, com isso, através da modificação de algumas aplicações para algoritmos paralelos, conseguiram uma maior performance e escalabilidade dessas aplicações. As GPUs programáveis com suas arquiteturas massivamente paralelas expandiram o horizonte da computação de alto desempenho, tornando possível executar mais rapidamente algoritmos paralelos e com menor consumo energético. O objetivo deste trabalho é comprovar e demonstrar a melhor eficiência das GPUs quanto as CPUs em aplicações paralelas. Para isto, foram desenvolvidas aplicações utilizando CUDA e APARAPI para mostrar o desempenho da GPU assim como também aplicações que exigissem desempenho da CPU para fazer a comparação. Foi implementado um conjunto de oito algoritmos que utilizam técnicas diferentes de “stress” de ambas as arquiteturas. Os resultados dos testes foram submetidos a um processo de avaliação quanto à corretude e ao tempo de execução. Gráficos foram elaborados no intuito de analisar melhor e descrever o comportamento do sistema diante de diferentes recursos, como número de threads, números de processos, dimensões das matrizes, etc. A principal conclusão deste projeto foi que a definição da estratégia é decisiva para obtenção do menor custo de tempo, onde aplicações altamente paralelizáveis que executam uma única instrução sobre múltiplos dados, podem obter um ganho exponencial de desempenho utilizando-se de GPUs. Palavras-chave: Processamento Paralelo, Arquitetura Heterogênea, Acelerados Gráficas, Alto Desempenho, CUDA, APARAPI, GPU, GPGPU. 7 ABSTRACT GPUs are becoming increasingly present in the scenario of high performance computing. They are massively parallel processors, initially used for graphics processing and games. Since the emergence of the NVIDIA GeForce 8 series and the introduction of CUDA and other tools, GPUs became programmable, being able to run common applications and, thus, by modifying some applications for parallel algorithms, achieved a higher performance and scalability these applications. The programmable GPUs with their massively parallel architectures expanded the horizon of high performance computing by making it possible parallel algorithms run faster and with less energy consumption. The objective of this work is to prove and demonstrate the improved efficiency of GPUs as CPUs in parallel applications. For this, applications have been developed using CUDA and APARAPI to show the performance of the GPU as well as applications that require CPU performance to make the comparison. We have implemented a set of eight algorithms that use different techniques “stress” of both architectures. The test results were submitted to a review process regarding the correctness and runtime. Charts were developed in order to better analyze and describe the system behavior before different features, such as number of threads, number of processes, dimensions of arrays, etc. The main conclusion of this project was that the definition of the strategy is crucial to obtaining the lowest cost of time, where highly parallelizable applications running on a single instruction multiple data, may obtain a gain exponential performance using GPUs. Keywords: Parallel Processing, Heterogeneous Architecture, Accelerated Graphics, High Performance, CUDA, APARAPI, GPU, GPGPU. 8 LISTA DE SIGLAS API Application Programming Interface APARAPI A PARallel API APU Accelerated Processing Unit ARM Advanced RISC Machine CMP Chip Level Multithreading CPU Central Processing Unit CPD Centro de Processamento de Dados CUDA Compute Unified Device Architecture FLOPS Floating point Operations Per Second FPS Frames Por Segundo GPU Graphics Processing Unit GPGPU General Purpose on Graphics Processing Units ILP Instruction Level Parallelism IT Information Technology JVM Java Virtual Machine PC Personal Computer PCI Peripheral Component Interconnect SDK Software Development Kit SIMD Single Instruction Multiple Data SM Streaming Multiprocessor SP Streaming Processors TI Tecnologia da Informação TLP Thread Level Parallelism 9 LISTA DE IMAGENS Figura 1: Supercomputador TITAN ..................................................................................... 21 Figura 2: Novo design SM. ................................................................................................... 30 Figura 3: Diferença de cores entre uma CPU e uma GPU. ............................................ 33 Figura 4: Comparação entre chips CPU e GPU. .............................................................. 35 Figura 5: NVIDIA tesla M2090. ............................................................................................ 37 Figura 6: Desempenho NVIDIA Tesla. ............................................................................... 38 Figura 7: Evolução Das GPUs. ............................................................................................ 39 Figura 8: NVIDIA gpu Roadmap. ......................................................................................... 40 Figura 9: Tabela De Especificações. .................................................................................. 41 Figura 10: Arquitetura de uma APU. ................................................................................... 43 Figura 11: Plataforma Java. ................................................................................................. 46 Figura 12: HelloWord Java. .................................................................................................. 47 Figura 13: Comparação de desempenho. ......................................................................... 49 Figura 14: Modelo de Navier-Stokes. ................................................................................. 50 Figura 15: Método de Lattice Boltzman. ............................................................................ 50 Figura 16: Modelo de Programação CUDA. ...................................................................... 51 Figura 17: Modelo de Memória CUDA. .............................................................................. 52 Figura 18: Memórias CUDA. ................................................................................................ 53 Figura 19: Paralelismo Dinamico. ......................................................................................
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages94 Page
-
File Size-