BRUNO MOKAN MUENCHEN GPGPU: COMPARAÇÃO DE ACELERADORES AMD, NVIDIA E INTEL UTILIZANDO A BIBLIOTECA OPENCL. Ijuí,



Documentos relacionados
Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores

Organização e Arquitetura de Computadores I. de Computadores

Contil Informática. Curso Técnico em Informática Processadores Core

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução;

Comparativo de desempenho do Pervasive PSQL v11

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD.

7.Conclusão e Trabalhos Futuros

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Tecnologia PCI express. Introdução. Tecnologia PCI Express

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P.

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.

CPU Unidade Central de Processamento. História e progresso

Arquiteturas RISC. (Reduced Instructions Set Computers)

Técnicas de Manutenção de Computadores

Unidade 13: Paralelismo:

Análise de desempenho e eficiência energética de aceleradores NVIDIA Kepler

Tecnologia AMD agregando valor

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores

Sistema de Computação

Auditoria de senhas em hardware paralelo com o John the Ripper O impacto das tecnologias de processamento paralelo na quebra de senhas

Prof. Esp. Lucas Cruz

Capítulo 1 Introdução

Prof. Daniel Gondim Informática

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

ESTUDO DE CASO WINDOWS VISTA

4 Estrutura do Sistema Operacional Kernel

Sistemas Operacionais

Placa de vídeo em CUDA

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Hardware de Computadores

Organização e Arquitetura de Computadores I. de Computadores

Informática I. Aula 5. Aula 5-13/05/2006 1

TRABALHO COM GRANDES MONTAGENS

Capítulo 8 Arquitetura de Computadores Paralelos

Administração de Sistemas de Informação Gerenciais


IW10. Rev.: 02. Especificações Técnicas

Processadores clock, bits, memória cachê e múltiplos núcleos

Escolha seu serviço Cloud O melhor do Cloud

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Introdução a Informática. Prof.: Roberto Franciscatto

1. NÍVEL CONVENCIONAL DE MÁQUINA

DELL POWERVAULT SÉRIE MD ARMAZENAMENTO DE DADOS MODULAR ARMAZENAMENTO DE DADOS DELL POWERVAULT SÉRIE MD

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

1

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

Engenharia de Requisitos

Computação Heterogênea Programação paralela, clusters e GPUs

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Aula 26: Arquiteturas RISC vs. CISC

Aumente sua velocidade e flexibilidade com a implantação da nuvem gerenciada de software da SAP

Arquitetura de Rede de Computadores

Sistemas Operacionais

Família CJ2. Novos CLPs com alta qualidade comprovada. Controladores Programáveis

Microarquiteturas Avançadas

Fundamentos de Hardware

CONHEÇA MELHOR SEU COMPUTADOR

CorelDRAW UM PROGRAMA DE DESIGN

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Sistemas Operacionais Gerência de Dispositivos

VIRTUALIZAÇÃO CONVENCIONAL

Sistemas Operacionais Introdução. Professora: Michelle Nery

Processadores. Guilherme Pontes

AUTOMAÇÃO DE ESCRITÓRIOS ADE

EDITORES DE TEXTO Capítulo 1: Avaliação técnica e econômica dos principais editores de texto do mercado.

3. Arquitetura Básica do Computador

nforce Serie 600i Recursos e Benefícios - MCP NVIDIA nforce 680i SLI

Arquitetura de Computadores. Professor: Vilson Heck Junior

Governança de TI. ITIL v.2&3. parte 1


Arquitetura dos Sistemas de Informação Distribuídos

Disciplina: Introdução à Informática Profª Érica Barcelos

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

5 Mecanismo de seleção de componentes

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

ARQUITETURA DE COMPUTADORES

Cadastramento de Computadores. Manual do Usuário

Introdução a Informática. Prof.: Roberto Franciscatto

Engenharia de Software

AULA 5 Sistemas Operacionais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Inicialização rápida da instalação SUSE Linux Enterprise Server 11

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton

DIMENSIONANDO PROJETOS DE WEB-ENABLING. Uma aplicação da Análise de Pontos de Função. Dimensionando projetos de Web- Enabling

Fundamentos de Sistemas Computacionais Introdução

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Orientação a Objetos

Hardware. Objetivos da aula. Fornecer exemplos de processadores Intel. Esclarecer as diferenças e as tecnologias embutidas nos processadores Intel.

ArcSoft MediaConverter

Figura 01 Kernel de um Sistema Operacional

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

7 Processamento Paralelo

Cálculo Aproximado do número PI utilizando Programação Paralela

Sistemas Distribuídos

Transcrição:

BRUNO MOKAN MUENCHEN GPGPU: COMPARAÇÃO DE ACELERADORES AMD, NVIDIA E INTEL UTILIZANDO A BIBLIOTECA OPENCL Ijuí, 2013

BRUNO MOKAN MUENCHEN GPGPU: COMPARAÇÃO DE ACELERADORES AMD, NVIDIA E INTEL UTILIZANDO A BIBLIOTECA OPENCL Trabalho realizado no Componente Curricular de Trabalho de Conclusão de Curso do Curso de Ciência da Computação da Universidade Regional do Noroeste do Estado do Rio Grande do Sul UNIJUI, como requisito parcial à obtenção do titulo de Bacharel em Ciência da Computação. Orientador: Edson Luiz Padoin Ijuí 2013

BRUNO MOKAN MUENCHEN GPGPU: COMPARAÇÃO DE ACELERADORES AMD, NVIDIA E INTEL UTILIZANDO A BIBLIOTECA OPENCL Trabalho apresentado ao Componente Curricular de Trabalho de Conclusão de Curso do Curso de Ciência da Computação da Universidade Regional do Noroeste do Estado do Rio Grande do Sul UNIJUÍ, como requisito parcial à obtenção do titulo de Bacharel em Ciência da Computação. Aprovação em: / / Prof. Edson Luiz Padoin (Orientador) - UNIJUÍ Prof. Rogério Samuel de Moura Martins - UNIJUÍ Ijuí 2013

AGRADECIMENTOS Primeiramente, quero agradecer à minha família, em especial à minha mãe, Lurdes, minha avó, Emília, e meu avô, Floriano, que sempre me deram apoio nesta longa caminhada que finda aqui, para o início de uma nova, na qual estou certo de que me ajudarão ainda mais. Também, gostaria de agradecer à minha namorada, Taís, que, assim como os amigos e os demais colegas, caminhou e continua caminhando comigo, agora em uma nova jornada. A todos os meus amigos, pelo companheirismo de todas as horas, em especial aos ex-colegas Wiliam Rambo e Ricardo Lorenzoni, pela ajuda de grande valia na execução deste trabalho e tantos outros durante o decorrer da graduação. Agradeço também aos demais colegas que andaram junto comigo. Aos professores, que participaram de minha formação como um todo, desde as séries iniciais até agora. Obrigado por terem me ensinado a aprender e por terem me auxiliado nas descobertas que fiz até aqui e, ainda, por terem me dado instrução sempre que precisei. Ao meu orientador, pelas orientações de grande valia na elaboração deste trabalho, desde a escolha do tema até a execução. Ao Grupo de Automação Industrial e Controle (GAIC), pela concessão dos equipamentos necessários à mensuração dos dados. A todos vocês, Muito Obrigado!

Os que se encantam com a prática sem a ciência são como os timoneiros que entram no navio sem timão nem bússola, nunca tendo certeza do seu destino. (Leonardo da Vinci)

RESUMO Este relatório aborda computação massivamente paralela com a utilização de aceleradores e as bibliotecas OpenCL. Atualmente passamos por um grande crescimento da área de computação de alto desempenho, aliado ao fato que os principais computadores do Green500 normalmente fazem uso de aceleradores vindos do mercado de jogos. Hoje existe a necessidade de tornar estes computadores em máquinas que consomem menos energia e que mantenham o mesmo ou até maior poder computacional. Dados estes fatores, esta pesquisa visa obter resultados que comprovem a melhoria da eficiência energética utilizando aceleradores, através de mensurações de desempenho utilizando benchmarks e do consumo energético, utilizando equipamentos específicos a este fim. Palavras-chave: GPGPU; OpenCL; Desempenho de Processadores; CUDA; AMD APP.

ABSTRACT This report discusses massively parallel computing with the use of accelerators and OpenCL libraries. Currently we went through a major growth area of high performance computing, coupled with the fact that the main Green500 computers usually make use of accelerators coming from the gaming market. Today there is a need to make these computers in machines that consume less power and to keep the same or even greater computational power. Given these factors, this research aims to achieve results that prove the energy efficiency improvement using accelerators, through measurements using benchmarks of performance and energy consumption, using specific equipment for this purpose. Keywords: GPGPU; OpenCL; Performance Processors; CUDA, AMD APP.

LISTA DE FIGURAS Figura 1 - Diagrama de Blocos - Fermi... 22 Figura 2 - Diagrama de Blocos - Kepler... 23 Figura 3 - Visão Geral da Arquitetura Graphics Core Next... 25 Figura 4 - Plataforma BMI Dranetz PP4300... 40 Figura 5 - GPU NVIDIA utilizada nos testes... 42 Figura 6 - GPU AMD utilizada nos testes... 43 Figura 7 - Velocidade do Barramento (Host->Device)... 50 Figura 8 - Velocidade do Barramento (Device->Host)... 50 Figura 9 - Memória do Dispositivo... 51 Figura 10 - Desempenho de Pico com Precisão Simples... 52 Figura 11 - Desempenho de Pico com Precisão Dupla... 52 Figura 12 - Tempo de Compilação do Kernel... 53 Figura 13 - Tempo de Atraso na Execução do Kernel... 54 Figura 14 - Tempo de Execução do Benchmark FT... 54 Figura 15 - Desempenho Atingido Pelos Dispositivos... 55 Figura 16 Consumo Energético dos Dispositivos Executando o FFT... 55 Figura 17 - Potência Média Durante a Execução do FFT... 56 Figura 18 - Eficiência Energética dos Dispositivos... 56 Figura 19 - Tempo de Execução do Algoritmo Leukocyte... 57 Figura 20 - Consumo Energético Executando Leukocyte... 57 Figura 21 - Potência Média dos Aceleradores Durante Execução do Leukocyte. 58 Figura 22 - Ligando o aparelho.... 70 Figura 23 Inicialização do Dranetz.... 71 Figura 24 - Selecionando a sondagem de corrente.... 71 Figura 25 - Selecionando o tipo de sonda utilizada (TR2510).... 72 Figura 26 Tela principal do aparelho (acessando a tela de configurações).... 72 Figura 27 - Acessando a opção 5: ADVANCED SETUP OPTIONS.... 73 Figura 28 Acessando a opção 1: SET INPUT CONFIGURATIONS... 73 Figura 29 Acessando a opção 3: SET SCALE FACTORS.... 73 Figura 30 Ajuste do fator de escala dos canais.... 74 Figura 31 - Acessando a opção 4: SET SYNC PARAMETERS... 74 Figura 32 Ajustando a frequência da rede elétrica.... 75 Figura 33 - Acessando a opção 5: SET INTERVAL FOR TIMED READINGS.... 75 Figura 34 - Ajustando o intervalo em 5 segundos de medição dos dados.... 76 Figura 35 - Ligando o aparelho.... 76 Figura 36 - Inicialização do Dranetz.... 77 Figura 37 Confirmando a utilização de sondagem de corrente.... 77 Figura 38 Definindo o tipo da sonda utilizada.... 78 Figura 39 Acessando menu para desabilitar canais desnecessários.... 78 Figura 40 Canais B, C e D desativados.... 79 Figura 41 Alterando a visualização da medição de energia.... 79

Figura 42 - Alterando para a próxima visualização da medição de energia.... 80 Figura 43 Tela utilizada para acompanhar as medições de energia.... 80 Figura 44 Acessando o menu de configurações.... 81 Figura 45 - Acessando a opção 4: MEMORY FUNCTIONS.... 81 Figura 46 - Acessando a opção 1: MEMORY CARD FUNCTIONS.... 81 Figura 47 - Acessando a opção WRITE CARD para salvar os dados coletados.. 82 Figura 48 - Salvar os dados coletados no cartão.... 82 Figura 49 Removendo o cartão de memória na frontal direita do aparelho.... 83 Figura 50 - Salvando os dados para o computador... 83 Figura 51 - Tela principal do Dran-View.... 84 Figura 52 - Selecionando as informações desejadas.... 85

LISTA DE TABELAS Tabela 1 - Comparativo entre arquiteturas NVIDIA... 21 Tabela 2 - Comparativo de GPUs NVIDIA e AMD... 26 Tabela 3 - Terminologia CUDA e Terminologia OpenCL... 33 Tabela 4 - Versões de drivers e SDK's... 40 Tabela 5 - Especificações da CPU Intel... 41 Tabela 6 - Especificações Técnicas GPU NVIDIA... 42 Tabela 7 - Especificações Técnicas GPU AMD... 43 Tabela 8 - Bus Speed Download (GB/s)... 86 Tabela 9 - Bus Speed ReadBack (GB/s)... 86 Tabela 10 - Peak FLOPS (SP) (GFLOPS)... 87 Tabela 11 - Peak FLOPS (DP) (GFLOPS)... 87 Tabela 12 - Device Memory (AMD)... 88 Tabela 13 - Device Memory (NVIDIA)... 88 Tabela 14 - Device Memory (Intel)... 89 Tabela 15 - Kernel Compilation (s)... 89 Tabela 16 - Queuing Delay (ms)... 90 Tabela 17 - Leukocyte (NVIDIA)... 90 Tabela 18 - Leukocyte (AMD)... 90 Tabela 19 - Fast Fourrier Transformations (NVIDIA)... 91 Tabela 20 - Fast Fourrier Transformations (Intel)... 91

9 SUMÁRIO 1. INTRODUÇÃO... 11 1.1. Justificativa... 11 1.2. Objetivos... 12 1.2.1. Objetivo Geral... 12 1.2.2. Objetivos Específicos... 13 2. MENSURAÇÃO DO CONSUMO ENERGÉTICO... 14 2.1. Tensão... 14 2.2. Corrente... 14 2.3. Potência... 15 2.4. Energia Consumida... 17 3. PROCESSADORES E ACELERADORES... 18 3.1. Processadores Intel... 18 3.2. Aceleradores NVIDIA... 19 3.3. Aceleradores AMD... 24 4. PROGRAMAÇÃO DE ACELERADORES... 28 4.1. Tecnologias... 28 4.1.1. OpenCL... 28 4.1.2. NVIDIA CUDA... 31 4.1.3. AMD APP... 33 5. BENCHMARKS... 35 5.1. Sintético... 36 5.2. Kernel... 36 5.3. Algoritmo... 37 5.4. Aplicação... 37 6. TESTES... 39 6.1. Ambiente de Trabalho... 39 6.2. Equipamentos para Testes... 40 6.2.1. Mensuração do Consumo Energético... 40 6.2.2. CPU Intel... 41 6.2.3. GPU NVIDIA... 42 6.2.4. GPU AMD... 43

10 6.3. Benchmark... 44 6.3.1. Scalable HeterOgeneous Computing Benchmark Suite... 44 6.3.2. SNU NPB... 45 6.3.3. Rodinia Benchmark Suite... 47 7. RESULTADOS E DISCUSSÃO... 49 7.1. Resultados Benchmark SHOC... 49 7.1.1. Velocidade do Barramento... 49 7.1.2. Acesso às memórias... 51 7.1.3. Desempenho Máximo Atingido... 51 7.1.4. Compilação e Atraso na Execução do Kernel... 53 7.2. Resultados Benchmark SNU NPB... 54 7.3. Resultados Benchmark Rodinia... 56 8. CONSIDERAÇÕES FINAIS... 59 8.1. Trabalhos Futuros... 60 REFERÊNCIAS BIBLIOGRÁFICAS... 61 ANEXOS... 67

11 1. INTRODUÇÃO Nos últimos anos, a discussão a respeito do esgotamento dos recursos naturais como os combustíveis fósseis, aumento da poluição e aumento exponencial de consumo de recursos energéticos tem ganhado cada vez mais foco. No cenário tecnológico, até alguns anos atrás, as indústrias competiam entre si em busca de criar processadores cada vez mais rápidos. Para vencer essa competição elas aumentavam a frequência de trabalho de seus produtos, até que chegaram aos limites que os processadores suportavam sem superaquecer, mas aumentando também o consumo de energia dos mesmos. Esse problema de superaquecimento soluciona-se com o uso de coolers mais robustos e maiores, com a finalidade única de resfriar o processador. Neste ponto as indústrias notaram que o custo de aumentar ainda mais a frequência de clock dos processadores iria se tornar alto demais, visto o grande desperdício de energia térmica nas máquinas. Para solucionar o problema do superaquecimento, as indústrias optaram por reduzir a frequência de seus equipamentos (reduzindo a dissipação de energia térmica) e aumentar a sua capacidade de processamento. Fizeram isso aumentando o número de núcleos presentes dentro de cada processador, podendo, assim, processar um maior número de informações ao mesmo tempo com uma quantidade igual de energia, fazendo um consumo mais eficiente da mesma. Com o passar do tempo, foram surgindo novas tecnologias para processamento e as empresas foram investindo cada vez mais em soluções que pudessem facilmente aliar poder computacional com economia de energia. Atualmente, a grande maioria dos computadores pessoais possui acelerador gráfico, o que certamente foi um grande impulso na criação de sistemas heterogêneos, onde não apenas o processador principal executa as instruções, mas as mesmas podem ser passadas para um processador gráfico executá-las de forma paralela, em um conceito chamado de General Purposes computation on Graphics Processing Unity (GPGPU).

11 Neste trabalho, pretendemos estudar os ganhos em desempenho e a velocidade de processamento que podem ser proporcionados pela utilização de aceleradores gráficos para o processamento de propósito geral. Pretendemos, também, realizar testes de consumo energético e desempenho tanto utilizando estes aceleradores como sem fazer uso dos mesmos, testando o que a arquitetura x86 1 tem a oferecer com o uso do padrão OpenCL. 1.1. Justificativa O grande crescimento na área de computação de alto desempenho faz com que surjam cada vez mais pesquisas por tecnologias capazes de aliar melhor desempenho e menor consumo energético. Duas dessas tecnologias são a CUDA, da NVIDIA, e a APP, da AMD. A grande diferença dessas tecnologias com relação às demais existentes é o fato de que elas permitem a utilização da Unidade de Processamento Gráfico (GPU) no processamento de tarefas que até então cabiam exclusivamente à Unidade Centrar de Processamento (CPU). Além disso, um dos assuntos que mais cresce em todos os sentidos no mundo hoje é a economia de energia e a utilização consciente dos recursos naturais, seja por parte de computadores pessoais como também por parte de supercomputadores aplicados à computação de alto desempenho, como datacenter e computadores de centros de pesquisa. A crescente demanda pela utilização de aceleradores para contribuir com o poder de processamento das máquinas atinge não somente o mercado de alto desempenho, como os supercomputadores utilizados por órgãos governamentais, mas, também, o mercado do consumidor final, tendo como base a adesão de várias empresas da indústria de software a utilizar padrões de programação voltados a arquiteturas heterogêneas, visando acelerar seus softwares e aumentar a produtividade do usuário final. Com preocupação a atender tanto a dispositivos da NVIDIA quanto a 1 Arquitetura x86: Tipo de arquitetura de processadores utilizada principalmente em computadores pessoais. Ver (EDWARDS, 2008)

12 dispositivos da AMD, além das arquiteturas de 32 e 64 bits que não fazem uso de aceleradores, surgiu o padrão de programação OpenCL, que permite a execução do software em ambos os casos. A escolha das arquiteturas em questão se justifica por estarem entre as mais utilizadas hoje para o desenvolvimento de supercomputadores e por serem líderes do mercado de gráficos para jogos e aplicações que demandem grande quantidade de processamento 3D. Sete dos 10 primeiros computadores da lista dos mais verdes mudaram nesta última edição da lista Green 500. Entretanto, apesar desta reviravolta significativa, os supercomputadores mais verdes no mundo continuam seguindo uma das duas tendências: (1) agregar muitos processadores de baixo consumo, como o IBM BlueGene/Q e (2) usar aceleradores energeticamente eficiente, tipicamente do mercado de jogos/gráficos, por exemplo a AMD Radeon GPU, NVIDIA Tesla Fermi GPU, Cell, e Intel Knights Corner, para complementar o uso de processadores Intel e AMD. (GREEN500, 2012) Portanto, a intenção deste trabalho é buscar o conhecimento acerca dos aceleradores escolhidos para realização dos testes, comparando o seu desempenho, velocidade e consumo, utilizando o padrão de programação OpenCL, que é muito utilizado por vários softwares comerciais que exigem um alto poder de processamento, e procurar aprender mais sobre CUDA e APP, visando trabalhos futuros na área de computação de alto desempenho. 1.2. Objetivos 1.2.1. Objetivo Geral Comparar o desempenho, a velocidade e o consumo das GPUs selecionadas e o ganho em relação a CPU usando o padrão OpenCL.

13 1.2.2. Objetivos Específicos Mensurar o consumo de energia dos aceleradores NVIDIA e AMD e do processador Intel; Mensurar a diferença de desempenho dos aceleradores e do processador executando os algoritmos dos benchmarks selecionados; Computar os dados obtidos das mensurações e avaliar a eficiência energética dos aceleradores e do processador

14 2. MENSURAÇÃO DO CONSUMO ENERGÉTICO A mensuração do consumo energético dos equipamentos é o ponto chave da pesquisa, pois através dela, em conjunto com os resultados de desempenho dos benchmarks, foi possível comparar os equipamentos. Para tanto, existem alguns conceitos de eletricidade que devem ser considerados. 2.1. Tensão A tensão é a pressão elétrica que causa a circulação de corrente. A tensão é também conhecida como força eletromotriz (fem), ou diferença de potencial. Todos estes termos se referem à força que coloca cargas em movimento. A diferença de potencial é o termo que melhor descreve o fenômeno porque uma tensão é uma diferença de energia potencial que existe entre dois pontos. O símbolo da tensão é V(volt). (FOWLER, 1992) De acordo com Gussow (1996) A unidade fundamental de diferença de potencial é o volt (V). O símbolo usado para a diferença de potencial é V, que indica a capacidade de realizar trabalho ao se forçar os elétrons a se deslocarem. 2.2. Corrente A corrente elétrica é o resultado do movimento de cargas elétricas. A unidade SI de corrente é o ampère, cujo símbolo é A. os símbolos utilizados são o I para uma corrente constante e i para uma corrente variável no tempo. Se um fluxo constante de 1C de carga passa por um dado ponto em um condutor durante 1 s, a corrente resultante é 1A. (O'MALLEY, 1993) O movimento ou o fluxo de elétrons é chamado corrente. Para se produzir corrente, os elétrons devem se deslocar pelo efeito de uma diferença de potencial. A corrente é representada pela letra I. A unidade fundamental com que se mede a corrente é o ampère (A). Um ampère de corrente é definido como o deslocamento de um coulomb através de um ponto qualquer de um condutor durante um intervalo de tempo de um segundo.

15 (GUSSOW, 1996) Segundo Fowler (1992) A abreviatura para ampère é A. Por exemplo, para indicar que a corrente num fio é de 10 ampères, escrevemos I = 10 A. Onde: I = corrente, A (Ampère) Q = carga, C (Coulomb) T = tempo, s CORRENTE ALTERNADA Uma fonte de tensão alternada (Tensão CA) inverte ou alterna periodicamente a sua polaridade. Consequentemente, o sentido da corrente alternada resultante também é invertido periodicamente. Em termos do fluxo convencional, a corrente flui do terminal positivo da fonte de tensão, percorre o circuito e volta para o terminal negativo, mas quando o gerador alterna a sua polaridade, a corrente tem de inverter o seu sentido. (GUSSOW, 1996) CORRENTE CONTÍNUA Corrente contínua se refere ao fluxo de cargas em um único sentido. Uma bateria produz uma corrente contínua em um circuito porque seus terminais sempre possuem a mesma polaridade. Os elétrons se movem do terminal negativo, que os repele, para o terminal positivo, que os atrai, sempre no mesmo sentido de movimento ao longo do circuito. (HEWITT, 2002) 2.3. Potência Para Fowler (1992) a potência se refere a quão rapidamente a energia é usada ou convertida noutra forma de energia. Desde que a energia é a capacidade em realizar trabalho, pode-se dizer que a potência está relacionada com a rapidez na realização do trabalho. Segundo Fowler (1992) combina-se estas duas ideias na definição de

16 potência, que é a taxa de uso da energia ou realização de trabalho. O símbolo de potência é P. De acordo com Fowler (1992) na eletricidade, o joule é usado como unidade base de energia e o segundo como unidade base de tempo. Portanto a unidade de potência é o joule por segundo (J/s). Ele é denominado watt em homenagem ao físico e inventor escocês James Watt. Para Fowler (1992) a unidade base de potência é o watt, que é igual a 1 J/s e cuja abreviatura é W. Potência (P) = Energia (W) Tempo (t) A unidade básica de potência é o WATT e é igual a tensão aplicada ao circuito multiplicada pela corrente que flui neste circuito. Isso representa a razão, em qualquer instante, de execução de trabalho pelo movimento de elétrons no circuito. O símbolo P indica potência elétrica. Assim a fórmula de potência é: P=EI. E é a tensão e I é a corrente que flui no resistor ou no circuito cuja potência está sendo medida. A quantidade de potência mudará quando a tensão, a corrente, ou ambos, mudarem (MARINHA DOS ESTADOS UNIDOS, 1998) A razão na qual algum corpo absorve ou produz energia é a potência absorvida ou produzida por este corpo. Uma fonte de energia produz ou desenvolve energia, e uma carga absorve energia. A unidade SI da potência é o watt, cujo símbolo é W. O símbolo de potência é P para potências constantes e p para potências variáveis no tempo. Se 1 J de trabalho é absorvido ou liberado numa taxa constante de 1 s, a potência correspondente é 1W. (O'MALLEY, 1993) CALCULO DE POTÊNCIA: A potência é igual à corrente vezes tensão. Expresso como uma fórmula, tem-se: Potência (P) = corrente (I) X tensão (V) Ou P = VI A potência está na sua unidade base quando a tensão é dada em volts e a corrente em ampères. (FOWLER, 1992)

17 2.4. Energia Consumida A energia elétrica consumida ou produzida é o produto da corrente elétrica de entrada ou saída e o tempo durante o qual essa entrada ou saída ocorre: W(joules) = P (Watts) t (segundos) Energia elétrica é aquilo que os consumidores compram das companhias elétricas. Essas companhias não usam o joule como unidade de energia. A unidade utilizada é o quilowatt-hora (KWh), por ser maior e mais conveniente. O KWh não é uma unidade SI. O número de KWh consumidos é igual ao produto da potência absorvida em KW e o tempo durante o qual ocorreu esse consumo: W (quilowatts hora) = P (quilowatts) t (hora) (O'MALLEY, 1993)

18 3. PROCESSADORES E ACELERADORES Para que os testes tivessem uma maior abrangência os mesmos foram executados tanto usando as GPUs como também CPUs. Ressaltaremos, então, algumas características das diferentes arquiteturas utilizadas. 3.1. Processadores Intel A Intel possui duas principais famílias de processadores, Intel Core e Intel Xeon. A família Core é voltada para o mercado de desktops e notebooks, enquanto a família Xeon é voltada para servidores e computação de alto desempenho. A visivelmente inteligente família de processadores Intel Core proporciona um desempenho incrível e visual deslumbrante entregues por uma gama de tecnologias Intel. Desfrute de imagens brilhantes e uma experiência de computação integrada - independente se você está criando, compartilhando, explorando, ou jogando. (INTEL, 2012) Arquitetado para vários processadores dual-core para executar cargas de trabalho intensivas 32-bit e 64-bit, sistemas baseados na série Dual-Core Intel Xeon 7100 ajudam a resolver os mais difíceis desafios de TI com a escalabilidade, flexibilidade e confiabilidade necessárias para tirar o máximo de qualquer orçamento de TI. (INTEL, 2012) Em contrapartida ao fato de as GPUs serem cada vez mais utilizadas em computadores de alto desempenho, a Intel lança o coprocessador Intel Xeon Phi como um acelerador para competir com os aceleradores atuais da NVIDIA e da AMD. O coprocessador Intel Xeon Phi pode acelerar dramaticamente o desempenho de suas aplicações altamente paralelas para ajuda-lo a atingir os limites da inovação e das descobertas científicas sem necessitar que seus desenvolvedores reinventem a roda. (INTEL, 2012)

19 Specifcações chave: 60 cores/1.053 GHz/240 threads Até 1 terafops desempenho precisão dupla 8 GB de memória e 320 Gb/s de largura de banda Padrão PCIe x16* Sistema operacional Linux *, endereçável por IP Suportado pelos produtos de desenvolvimento de software mais recentes da Intel Engine de vetor de 512-bit 32 Kb L1 I/D cache, 512 KB de cache L2 (por núcleo) 8 Gb de memória GDDR5 (até 320 Gb/s) 225W TDP PCIe X16 (requer host IA) Host OS: Red Hat Enterprise Linux 6.x, SuSE Linux 12 + (INTEL, 2012) Alguns dos centros de computação de alto desempenho de maior sucesso atualmente já estão usando o coprecessador Intel Xeon Phi para atingir capacidades de computação massivamente paralelas. (INTEL, 2012) O Texas Advanced Computer Center lançará em breve um supercomputador de 20 PETAFLOPS que irá incluir milhares de coprocessadores Intel Xeon Phi O projeto DEEP está usando a família E5 do processador Xeon e coprocessadores Intel Xeon Phi como fundação para "uma plataforma computacional habilitada para exascale" A Intel construiu um pequeno protótipo de cluster utilizando coprocessadores Xeon Phi que atingiram o ranking de 150º maior supercomputador no mundo 3.2. Aceleradores NVIDIA A NVIDIA possui várias séries de arquiteturas de GPUs com as quais desenvolve seus aceleradores. As principais hoje são a Fermi e a Kepler. Fermi é a primeira arquitetura de computação a oferecer um nível tão elevado de precisão dupla de ponto flutuante e um único chip com uma hierarquia de memória flexível e com proteção a erros e suporte para linguagens como C + + e FORTRAN. Como tal, Fermi é a primeira arquitetura de computação completa do mundo. (GLASKOWSKY, 2009)

20 A próxima geração da arquitetura CUDA da NVIDIA, codinome Fermi, acrescenta novos e poderosos recursos para computação de propósito geral. Os processadores Fermi vão continuar assumindo as cargas de trabalho de gráficos em PCs e consoles de video-game, mas estão dando um grande passo para se tornar um parceiro das CPUs. GPUs não devem mais ser um recurso subutilizado. (HALFHILL, 2009) A arquitetura Fermi é a sucessora da arquitetura Tesla e predecessora da nova arquitetura Kepler, recentemente lançada pela NVIDIA. A arquitetura Tesla, introduzida em novembro de 2006 na GPU GeForce 8800, unifica os processadores de vértice e pixel e estende-se a eles, permitindo elevado desempenho em aplicações de computação paralela escrita na linguagem C usando o Compute Unified Device Architecture (CUDA2-4), um modelo de programação paralela e toolkit. A Tesla unificou arquiteturas de gráficos e computacional, está disponível em uma escalável familia da série GeForce 8 e Quadro, para laptops, desktops, estações de trabalho e servidores. Ela também oferece a arquitetura de processamento para plataformas computacionais Tesla introduzida em 2007 para computação de alto desempenho. (LINDHOLM, NICKOLLS, et al., 2008) A arquitetura Kepler da NVIDIA foi construída sobre o fundamento estabelecido pela primeira vez em 2010, com as GPUs da arquitetura Fermi. A arquitetura Fermi introduziu um pipeline de geometria inteiramente novo paralelo otimizado para mosaico e mapeamento de deslocamento. Isso tornou possível para jogos como Battlefield 3, Batman: Arkham City, e Crysis 2 para usar personagens ricamente detalhados e ambientes, mantendo o alto desempenho. Kepler continua a oferecer o melhor desempenho de tessellation e combina isso com novas funcionalidades especificamente concebidas para proporcionar uma mais rápida, mais suave, mais rica experiência de jogo. (NVIDIA, 2012) A primeira GPU baseada na nova arquitetura Kepler, de codinome GK104, não é apenas nossa GPU de maior desempenho hoje, ela é também a mais eficiente em termos de consumo de energia. A GK104 é fabricada num processo otimizado de 28nm, e cada unidade interna foi desenhada para o melhor desempenho/watt possível. O primeiro produto a ser introduzido baseado na GK104 é a GeForce GTX680. (NVIDIA, 2012)

21 Na Tabela 1, podemos observar um comparativo entre ambas as arquiteturas de GPUs da NVIDIA. Tabela 1 - Comparativo entre arquiteturas NVIDIA GPU GT200 (Tesla) GF110 (Fermi) GK104 (Kepler) Transistores 1.4 bilhões 3.0 bilhões 3.54 bilhões CUDA Cores 240 512 1536 Clock do Núcleo Gráfico 648MHz 772MHz 1006MHz Clock do Shader 1476MHz 1544MHz n/a GFLOPs 1063 1581 3090 Unidades de Textura 80 64 128 Taxa preenchimento de Texel 51.8 Gigatexels/sec 49.4 Gigatexels/sec 128.8 Gigatexels/sec Clock de Memória 2484 MHz 4008 MHz 6008MHz Largura de Banda de Memória 159 GB/sec 192.4 GB/sec 192.26 GB/sec Nº Máx. Displays Ativos 2 2 4 TDP 183W 244W 195W Fonte: NVIDIA (2012) Quando desenhando nossa arquitetura Fermi da geração anterior, engenheiros da NVIDIA deram foco em aumentar dramaticamente a performance em comparação com a geração Tesla (GT200), com ênfase especial em geometria, tesselation, e performance computacional para DirectX11. O pensamento da gestão de consumo de energia foi uma consideração importante durante o desenvolvimento da Fermi, atingir níveis inéditos de desempenho DX11 foi o objetivo principal. Para a Kepler nos tivemos uma abordagem diferente. Enquanto mantendo nossa performance lider em graficos continuou sendo o objetivo mais importante, o tema principal de condução do projeto Kepler foi aumentar drasticamente o desempenho por watt. Os engenheiros da NVIDIA aplicaram tudo que foi aprendido da Fermi para melhor otimizar a Kepler para operação altamente eficiente, em adição a melhorar significativamente o desempenho. (NVIDIA, 2012) O GPC (Graphics Processing Cluster) é o bloco de hardware de alto nível dominante na GF100. Ele traz duas inovações chave um Raster Engine escalável para triangulos, rasterização e Z-cull, e um PolyMorph Engine, para atributos de vertex e tessellation. A Raster Engine fica dentro do GPC, enquanto a PolymorphEngine fica no SM. Como o nome indica, o GPC encapsula todas as unudades de processamento gráfico. Ele representa uma combinação balanceada de recursos de processamento de pixel de vertex, geometria, raster, textura e pixel. Com exceção das funções do ROP, um GPC pode ser pensado como uma GPU em si, e a GF100 tem quatro GPCs! Em GPUs anteriores da NVIDIA, Unidades de Textura e SMs eram agrupados em blocos de hardware chamados Texture Processing Clusters (TPCs). Na GF100, cada SM tem quatro unidades de textura dedicadas, eliminando a necessidade de TPCs. (NVIDIA, 2010)

22 Na Figura 2 e Figura 1 podemos observar a diferença no diagrama de blocos das arquiteturas Fermi e Kepler. Enquanto a arquitetura Fermi tem seis GPCs, a Kepler tem apenas quatro. Além disso, o número de controladores de memória também diminuiu de seis para quatro e cada Raster Engine tem apenas duas Polymorph Engine. A arquitetura Kepler também conta com conexão PCI Express 3.0. Figura 1 - Diagrama de Blocos - Fermi Fonte: NVIDIA (2010)

23 Figura 2 - Diagrama de Blocos - Kepler Fonte: NVIDIA (2012) Primeiramente, usuários construíam supercomputadores adicionando múltiplas GPUs aos PCs e estações de trabalho, e conjuntos montados de nós de computação GPU. Em 2007, em resposta a demanda de sistemas computacionais com GPU, NVIDIA introduziu a placas gráficas Tesla C870, D870 e S870, e sistemas de computação deskside e rack contendo um, dois e quatro GPUs T8. A GPU T8 foi baseada na GPU GeForce 8800, configurada para computação paralela. A segunda geração de sistemas computacionais, Tesla C1060 e Tesla S1070, introduzida em 2008, usava a GPU T10. A T10 continha 240 núcleos de processamento, um TERAFLOP/s máximo de desempenho de ponto flutuante de precisão simples, ponto flutuante