CENTRO UNIVERSITÁRIO UNIVATES CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO

AUGUSTO LIMBERGER LENZ

COMPUTAÇÃO PARALELA COM ARQUITETURA DE PROCESSAMENTO GRÁFICO CUDA APLICADA A UM CODIFICADOR DE VÍDEO H.264

Lajeado 2012 BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) PROCESSAMENTO GRÁFICO CUDA APLICADA A UM CUDA A GRÁFICO APLICADA PROCESSAMENTO COMPUTAÇÃO PARALELA COMARQUITETURA DE COMPUTAÇÃO CODIFICADOR VÍDEO DE H.264 AUGUSTO LIMBERGER LENZAUGUSTO LIMBERGER Lajeado Área de Computação concentração: paralela Automação.Controle e de Engenharia em bacharel de título do obtenção paraa requisitos dos ao parte como UNIVATES, apresentado Centro Universitário do Tecnológicas Curso e Exatas Ciências de de Centro Conclusão de Trabalho ORIENTADOR: 2012 Ronaldo HüsemannRonaldo

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) PROCESSAMENTO GRÁFICO CUDA APLICADA A UM CUDA A GRÁFICO APLICADA PROCESSAMENTO COMPUTAÇÃO PARALELA COMARQUITETURA DE COMPUTAÇÃO Banca Examinadora: Banca Mestre pelo PPGCA/UNISINOSMestre pelo Brasil –SãoLeopoldo, Prof. FEEC/UNICAMPBrasilMestre pela –Campinas, Prof. Coordenador do curso de Engenharia de Controle e Automação Controle de docurso Engenhariade Coordenador Maglan Diemer Cristiano deMalheiros Gomensoro Marcelo CODIFICADOR VÍDEO DE H.264 AUGUSTO LIMBERGER LENZAUGUSTO LIMBERGER ______Prof. Prof. ______Orientador: Doutor peloDoutor Brasil PPGEE/UFRGS –Porto Alegre, Prof. Prof. Ronaldo Hüsemann Rodrigo Wolff Porto Rodrigo íuo d ahrl e nehra d otoe e Controle de Orientadorpelo e Banca pela Examinadora. Engenharia final forma sua em em aprovado e CETEC do Automação bacharel de título do obtenção a para adequado julgado foi trabalho Este , UNIVATES , UNIVATES , UNIVATES Lajeado, Junho 2012. de Lajeado,

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) importância da educação.importância Dedico este trabalho ao meu pai, Edu, e a minha mãe, Ivone, por acreditarem na acreditarem por Ivone, mãe, minha a e Edu, pai, meu ao trabalho este Dedico

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) trabalhar em projetos de pesquisa e pela amizade cultivada ao longo período. desse cultivada ao amizade pesquisae pela projetos de em trabalhar graduação. da atividades e trabalho demais desse da realização transcorrer Schwingel À À jornada. odecorrer durante desta e companhia pela curso, colegasamizade de Aos Aplicada: Engenharia de Laboratório do colegas Aos professor Ao no difíceis, momentos nos compreensão e incentivo apoio, pelo família, minha À Luisa e e Marco Gobbi pelas contribuições no desenvolvimento desse trabalho. nodesenvolvimento Marco Gobbipelas contribuições por todo oamor,e compreensão. carinho portodo oad Hüsemann Ronaldo AGRADECIMENTOS ea sa oinaã, pls ootndds de oportunidades pelas orientação, sua pela , Anderson Giacomolli Anderson , Diego

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) foi a implementação do módulo computacional, situado no codificador intraquadro, que foi um apontam obtidos resultados Os testes. e que validação para referência de software ao integrado intraquadro, codificador no situado computacional, módulo do implementação a foi caso de estudo primeiro O principal. CPU da carga a aliviar e codificação a acelerar a forma de placas nas presente CUDA, na GPU de executados são empresaforma, paralelizáveis vídeo NVIDIA.Dessa algoritmos da tecnologia em H.264 codificador do módulos implementar é específico objetivo O vídeo. de codificação da contexto no computadores de arquiteturas em coprocessadores como (GPUs) gráficos processadores de utilização a investiga trabalho Este Palavras-chaves: Codificação de Vídeo, Computação Paralela, GPGPU, CUDA. GPGPU, deVídeo,ComputaçãoPalavras-chaves: Codificação Paralela, resultados dedefinição. alta para vídeos torno de 5,7vezes Os SAD. de cálculo do em execução de implementação velocidade na aumento um para apontam movimento de estimação na obtidos da além alta implementado, e de proposto vídeos foi da para através interquadros módulo codificador deste questão em o paralela arquitetura à adequado busca de execução abordado algoritmo Um movimento. de estimação foi de caso tempo de estudo no segundo vezes No definição. 3,9 de cerca de ganho RESUMO

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) aiain ad tsig h eut hw a sedp o . ie n te eeuin of execution the in times 3.9 of speedup for software a reference show the results into The integrated testing. was and that module, encoder, validation computational intra-frame of implementation the the was in study situated case first The CPU. main the of load the reduce and encoding the to accelerate GPU the on implemented been have algorithms implement to is parallelizable Thus, cards. goal video NVIDIA in present CUDA, in encoder for H.264 the of modules specific The co-processors encoding. as video of (GPUs) context units the in processing architectures graphical computer of use the investigates work This Keywords: VideoKeywords: Coding, Computing, Parallel CUDA. GPGPU, videos. forhigh-definition of5.7timestheshow execution in a speedup results The calculation. SAD the to addition in implemented, and proposed was architecture parallel for inter-frame suitable algorithm the search A study, estimation. motion case through approached second was encoder the In video. high-definition for module computational ABSTRACT

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) 2 UNIDADE DE GRÁFICO PROCESSAMENTO 1 INTRODUÇÃO 4 DESCRIÇÃO DOSISTEMA DESENVOLVIDO 3 CODIFICAÇÃO VÍDEO DE 2.1 Histórico das2.1 Histórico GPUs 4.2 Algoritmos decomputação intra H.2643.4 Descrição codec do 3.3 Introdução aoH.264 3.2 Compressão devídeo 3.1 Vídeodigital 2.7 Detalhamentodos dememória espaços 2.6 Modelo deprogramação 2.5 Arquitetura dehardware da2.4 Visão CUDA Geral em GPU2.3 Processamentogeral depropósito tradicional2.2 Pipeline gráfico 2.1.2 Segunda geração geração 2.1.1 Primeira 4.2.3 Implementação Quantização da 4.2.2 Implementação Transformada da deHadamard 4.2.1 Implementação e DCTinversa da direta 4.1 Codificação intraquadro relacionados3.5 Trabalhos 3.4.5 Compensação demovimento desimilaridade3.4.4.2 Critérios 3.4.4.1 Algoritmos debusca 3.4.4 Estimativa demovimento 3.4.3 Quantização 3.4.2.2 Transformada deHadamard 3.4.2.1 Transformadadecossenos discreta inversas 3.4.2 Transformadas diretas e intraquadro 3.4.1 Predição deconstantes2.7.5 Memória detextura e2.7.4 Memória superfície global 2.7.3 Memória compartilhada2.7.2 Memória local e2.7.1 Registradores memória 2.6.3 Hierarquiadememória 2.6.2 Hierarquiadethreads 2.6.1 Função Kernel 2.1.5 Quinta geração 2.1.4 Quarta geração 2.1.3 TerceiraGeração ...... SUMÁRIO ...... 60 59 59 57 57 56 54 54 53 50 48 45 44 41 40 38 37 37 36 35 35 34 33 32 31 31 31 29 28 27 27 25 23 23 22 22 21 21 20 20 19 19 15 BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) 6 CONCLUSÃO 5 RESULTADOS PRÁTICOS 5.5 GPU profiling 5.4 Avaliaçãoresultados demovimento dos em GPU estimativa da 5.3 Avaliaçãodebusca algoritmo do proposto 5.2 Avaliaçãoresultados dos módulocomputacional no intra 5.1 Integraçãodereferência com osoftware 4.3.2 Implementação estimação da demovimento debusca4.3.1 Algorítimo proposto 4.3 Codificação interquadros ...... 77 75 71 69 67 66 66 62 61 61 BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) Figura 4 Organização das adaptada threads, Figura de(NVIDIA, 2011a) 4Organização adaptada divergence, Figura debranch de(HAN; comuns 3Cenários Figura arquitetura da adaptada CUDA, 2Escalabilidade de(NVIDIA, 2011a). Figura unificado, xshader tradicional adaptado 1Shader 2011). de(IKEDA, Figura 25 Distribuição do tempoentreetapas. do Figura as 25Distribuição deredução usadodeSAD, cálculo adaptado no Figura de(NVIDIA, 24Procedimento debuscaFigura proposto. algoritmo do 23Padrão Figura dasDC. componentes com 22Relacionamento os threads Figura paramódulocomputacional 21Arquiteturaproposta usando GPUsNVIDIA Figura módulo do 20Etapas computacional. intraquadro,adaptada decodificação Figura 2009). de(DINIZ, 19Processo (RICHARDSON, 2002). Figura debusca 18Algoritmo logarítmica (SDS) (LDS) Diamond Diamond(PORTO,Figura e Small Search 2008) 17Large Search 2012) Figura debusca(PORTO, 16Algoritmo completa interquadro (DINIZ,Figura 2009). 15Predição Na estimativaFigura oresíduosem esquerda, demovimento. direita, 14Na Figura 2003). devídeo consecutivos 13Quadros (RICHARDSON, DC com componentes edestacados luminância decrominância Figura 12Macroblocos Figura deentrada(a)eDCT resultadoda (RICHARDSON, (b) 11Bloco 2003). parablocos4x4deluminânciaFigura depredição (AGOSTINI, 10Modos 2007). parablocos16x16deluminância.Figura depredição (AGOSTINI, 9Modos 2007) H.264Figura codificador (REDIESS,2006). do 8Estrutura (CONRAD, coalescido Figura não 2010). 7Acesso coalescido deacesso 2010). (CONRAD, Figura 6Padrões deumaFigura típico CUDA. aplicação 5Fluxo ...... 2012). (HUSEMANN et al., 2011b). demovimento (RICHARDSON,com estimativa 2003). (MAJOLO, 2010). ABDELRAHMAN ,2011)...... LISTA FIGURAS DE ......

......

76 64 62 60 58 58 57 52 52 51 50 49 49 44 42 40 39 38 33 32 30 29 26 25 24

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) Listagem 3 Primeira etapa da redução etapada Listagem 3Primeira da usad.Listagem 2Protótipo intrínseca função kernel. edeum chamada Listagem 1Declaração LISTA DE CÓDIGOS ...... 64 63 28 BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) Tabela 4 Valores de PF paracadaposição.Tabela 4ValoresdePF Tabela 3Passos dequantização. arquitetura na séries dosCUDA G80 dememória e Tabela 2Características espaços dosTabela 1Evoluçãoentree distribuição estágios GPU. da CPU Tabela dos 17Comparação em 1080p. desempenho Tabela dos 16Comparação em 720p. desempenho Tabela dos 15Comparação em 4CIF. desempenho Tabela dos 14Comparação em CIF. desempenho Tabela dos 13Comparação em QCIF. desempenho do propostoTabela 12Avaliação debusca algoritmo para5Mbps. do propostoTabela 11Avaliação debusca algoritmo para4Mbps. do propostoTabela 10Avaliação debusca algoritmo para3Mbps. Tabela dos 9Comparação vídeo deprocessamento HD. tempos Tabela dos 8Comparação paravídeos4CIF. deprocessamento tempos das duas placasutilizadas.Tabela características 7Principais Tabela módulos 6Complexidade dos H.264. codificador do demultiplicação.Tabela 5Fator G200...... LISTA DE TABELAS ......

75 74 73 73 72 71 70 70 68 68 66 56 47 47 46 30 23 BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) LDS LDS JVT JSVM ITU-T ISO IEC IBM HLSL HD GPGPU GPU GLSL FS DVD DSP DCT DC CUDA CPU CIF CAD AVC API ANSI AMD MSE MSE MAE LS

International OrganizationforStandardization International Commission Electro-technical International BusinessInternational Machines ShaderHigh Level Language High Definition PurposeGeneral GPU Unit Processing Graphics OpenGL Full Search Disc Digital Versatile ProcessorDigital Signal Cosine Transform Discrete Current Direct Architecture UnifiedCompute Device UnitCentral Processing Format Common Intermediate Aided Design Computer Advanced Video Coding Application Interface Programming Standards National InstituteAmerican Advanced Micro Devices Mean Square Error Mean Square Error Search Logarithmic DiamondLarge Search Joint Video Team Video ModelJoint Scalable Sector Standardization Union –Telecommunication Telecommunication International LISTA DE ABREVIATURAS Language BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) VRAM SVC SSE SP SM SLI SIMT SIMD SGI SDS SD SAD RGB RAM QP PGC PF PCIe PC MPEG MF ME MC

Motion Picture Experts GroupMotion Experts Picture Multiplication Factor de movimentoEstimativa de movimentoCompensação Video Random AccessVideo Random Memory Scalable Video Coding Streaming SIMD Extensions ProcessorsScalar Streaming Multiprocessor InterfaceScalable Link Single-Instruction, Multiple-Thread Data Single Multiple Instruction, International Graphics Silicon DiamondSmall Search Standard Definition Sum ofAbsolute Differences Red GreenBlue Random Memory Access ParameterQuantization Professional GraphicsController Post-Scaling Factor Express Interconnect Component Peripheral BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) opiia ne so lmnds rdnâca, e o so eui agr e banda de largura a reduzir isso com e, redundâncias, eliminadas são onde comprimida, representação uma em vídeo de do sinal transformação a permite técnica Essa eficiente. forma (FUJITSU, 2010). telemedicina televisores, em presente está digital vídeo o Atualmente, pessoas. das cotidiano do parte tecnologia desta uso fazem que elzd or beo ã eesraet eaglrs eutu n aro MPEG-4 padrão no resultou retangulares, (RICHARDSON, 2003). necessariamente não objetos sobre realizada codificação de possibilidade a e independentes objetos em baseado codificação de modelo um digitallargamente sendo televisão anos, de dos longo de noshoje. ainda empregado dias sistemas ao diversos popular continuou em padrão e Este 2010). DVDs (MAJOLO, nos exemplo, por empregado, foi e Group (GHANBARI, 2003). de entropia e codificação linear quantização (DCT), cosseno de discreta transformada movimento, de estimativa a principais Sector da Standardization H.261 norma na estabelecida foi atuais codificadores dos maioria na empregadas técnicas das necessários base a que dizer seriam segundo, por quadros 30 e cor cada um de segundo vídeo. apenas armazenar para 30MB aproximadamente para representação de bits primárias cores três de sistema o utilizando e pixeis, 480 x 720 C cenário. original(RICHARDSON, em 2003). forma sua possaforma visualizado ser que de deste, aproximação uma ou original vídeo de O sinal o armazená-lo. recupera para decodificação de necessário processo disco em espaço o ou vídeo o transportar para necessária 1 passando a ser chamado H.262/MPEG-2, que tornou-se extremamente popular. O MPEG-2 O popular. extremamente tornou-se que H.262/MPEG-2, chamado ser a passando INTRODUÇÃO

(MPEG) A criação de técnicas inovadoras, como a codificação de cenas sintéticas e naturais em naturais e sintéticas cenas de codificação a como inovadoras, técnicas de criação A pelo MPEG-2 padrão o desenvolvido foi Posteriormente, Pode-se codificação. a realizar de formas diversas surgiram necessidade, esta Dada seguinte pelo ilustrada ser pode vídeo de compressão de técnicas por necessidade A de vídeos de utilização a possibilita que essencial técnica a é vídeo de codificação A aplicações as digital formato tornou vídeo eem transportar de armazenar capacidade A onsiderando-se, por exemplo, um vídeo com com vídeo um exemplo, por onsiderando-se, e também adotado pela ITU-T, ITU-T, pela adotado também e

( ITU-T) definida em 1989, da qual pode-se destacar como algoritmos como destacar pode-se qual da 1989, em definida ITU-T) nentoa eeomncto no Telecommunication – Union Telecommunication International Digital Versatile Discs Versatile Digital como uma norma conjunta das duas entidades duas das conjunta norma uma como (DVDs), videoconferência e sistemas de sistemas e videoconferência (DVDs), standard definition standard red green blue green red oin Pcue Experts Picture Motion (SD), que possui que (SD), (RGB), com 8 com (RGB), 15

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) para os dispositivos codificadores e decodificadores (RICHARDSON, 2003). e(RICHARDSON, decodificadores para dispositivos os codificadores esta entanto, No compressão. de taxas nas significativos aumentos em resultando objetivo, principal o sendo (AGOSTINI, dez adoMPEG-4 parte e como 2007). da recomendaçãoITU-T H.264 como a chamado padrão o surgiu resultado Como como conhecido é trabalho de grupo Este codificação. de padrão de codificação de vídeo seja de grande interesse, dada a variedade de aplicações com vídeo com aplicações de variedade a dada interesse, grande de seja vídeo de codificação de (MICROSOFT, 2009) a e 2011) Devices Micro Advanced Architecture Device Unified Compute deste uso fazer possam que denominada NVIDIA da paralela computação de arquitetura a programas é notável exemplo Um recurso. de desenvolvimento o facilitar e geral propósito outros diversos em úteis algoritmos 2011). campos (IKEDA, de implementação na empregada ser pode também mas (3D), dimensões três em gráficos de processamento - original objetivo seu ao apropriada é organização de forma Esta tempo. mesmo ao elementos de número grande um em operação (CHEUNG 2010) et al., gráficos recursos de uso façam necessariamente não que aplicações em vídeo de aceleradoras como conhecido Purposeé General que conceito, Este geral. propósito de processamento para plataformas ou gráfico, processamento de unidades de utilização a em hardware dedicados coprocessadores tipo Data do arquiteturas Multiple de utilização a destacar pode-se adotadas sendo vêm que soluções as Dentre real. tempo em algoritmos destes execução a possível tornem que dedicadas arquiteturas de uso o e sofisticadas computacionais técnicas necessárias tornando Nos últimos anos, foram criadas tecnologias para adequar a GPU ao processamento de processamento ao GPU a adequar para tecnologias criadas foram anos, últimos Nos mesma a executar de capaz paralela, altamente arquitetura uma possuem GPUs As é algoritmos de desempenho de aumento para explorada recentemente alternativa Uma intensa, computação requerem vídeo de codificação para empregados algoritmos Os do elaboração A novo um desenvolver para esforços novamente uniram ITU-T e MPEG entidades As Acredita-se que a utilização de placas de vídeo como ferramenta de auxílio na tarefa na auxílio de ferramenta como vídeo de placas de utilização a que Acredita-se plcto rgamn interface programming application SM) (SIMD), evolução levou inevitavelmente ao aumento dos requisitos de processamento de requisitos dos aumento ao inevitavelmente levou evolução GPU . placas das processamento de o poder explorar possível (GPGPU),torna . codec ( AMD) AMD) D gtl Sga Processor Signal igital H.264 foi feita com o aumento da eficiência da compressão da eficiência da aumento o com feita foi H.264 Stream (CUDA) (NVIDIA, 2011d). Outros exemplos são: exemplos Outros 2011d). (NVIDIA, (CUDA) (GREENE; 2007) TULJAPURKAR, (AMD, 2011) (AMD, de

Advanced Video Coding Video Advanced AI (API) Processing Graphics DP eevliet de desenvolvimento o e (DSP) , o o , framework irsf iet Compute Direct Microsoft Joint Video Team Video Joint

OpenCL

S (AVC), publicado (AVC), nl Instruction, ingle . (KHRONOS, (GPU), como (GPU), (JVT). 16

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) dessa análise e da revisão da literatura, foram definidos dois módulos do codificador a serem a codificador do módulos dois definidos partir foram literatura, da revisão A da e análise vantajosa. dessa seja CUDA arquitetura da utilização a onde pontos identificar a forma CPU carga principal. da e aliviara codificação a acelerar de forma GPU, na paralelizáveis algoritmos possuam que H.264 codificador do módulos implementar vídeo de da placas coprocessadores como nas Processing CUDA, presentes NVIDIA GPUs, tecnologia de a utilização com a compatíveis investigar a propõe se trabalho pessoais. computadores em dispositivos destes disseminação grande a e digital uma revisão de literatura acerca da evolução da arquitetura das GPUs que culminou no culminou que GPUs as vídeo, de das codificação à relacionados conceitos os define 3 arquitetura capítulo O GPGPU. de conceito da evolução da acerca literatura de revisão uma a viável tornar a forma de vídeo, de vídeos deresolução. alta em de codificação técnicas complexas real tempo de em execução codificação de área à tecnologia avanços da trazer utilização pode a CUDA que apontam estudados trabalhos Os vezes. 600 de velocidade de ganhos obtendo CUDA, em completa busca de algoritmo do implementação a realizaram Monteiro CUDA. utilizando também movimento de estimativa de algoritmos (2009) Wu e Shen CUDA. arquitetura na MPEG-2 codificador relacionados. a paralela. pela originalcomversão vídeos obtidos os pelo software e alcançado desempenho do gerados comprimidos vídeos dos termos comparação da através obtida será em resultados dos validação comparação de base como serviu referência de software o forma, Dessa H.264. padrão do referência de codificador o com integração a da através interquadros codificação similaridade. a de aborda cálculo e busca de caso algoritmo movimento: de estimação de da algoritmos de implementação estudo segundo quantização e o quantização Já inversa, e inversa. direta Hadamard de transformada inversa, e direta cossenos de discreta transformada computacional: módulo do algoritmos dos implementação de estimação de módulo e computacional módulo movimento. caso: de estudos como trabalhados A fim de embasar o desenvolvimento deste trabalho foram pesquisados trabalhos pesquisados foram trabalho deste desenvolvimento o embasar de fim A realizada foi desenvolvidos módulos dos avaliação a e validação a possível tornar Para da através intraquadros codificador o aborda caso de estudo primeiro O de H.264 codificador do referência de implementação a explorada foi forma, Desta O texto desta monografia foi organizado da seguinte forma. O capítulo 2 apresenta 2 capítulo O forma. seguinte da organizado foi monografia desta texto O (CPU) no contexto da codificação de vídeo. Mais especificamente, o objetivo é objetivo o especificamente, Mais vídeo. de codificação da contexto no (CPU) Sprandlin et al. et Sprandlin por sua vez exploraram diferentes abordagens para acelerar a execução dos execução a acelerar para abordagens diferentes exploraram vez sua por (2009) por exemplo analisou a viabilidade de implementar um implementar de viabilidade a analisou exemplo por (2009) Chan et al. (2009), Cheung et al. (2010) e Huang, e (2010) al. et Cheung (2009), al. et Chan Portanto, este Portanto, eta Unit Central ta.al. et (2011) 17

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) 5 apresenta os estudos de caso realizados. Por fim, o capítulo 6 apresenta as conclusões as apresenta 6 capítulo o futuros. apontaobtidas trabalhos possíveis e fim, Por realizados. caso de estudos os apresenta 5 capítulo O atividades. das execução a guiou que trabalho de proposta a formaliza 4 capítulo O estudados. relacionados trabalhos dos descrição uma e H.264 do padrão básicas características 18

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) 2005). (OWNEW independentes dados em iguais operações diversas de execução maior, da através muito aritmética intensidade uma possível torna interna organização Sua flutuante. ponto com 3D dados de processamento como específicas, necessidades a direcionam-se pois CPUs, tradicionais das substancialmente difere GPUs das arquitetura A gráficas. aplicações cso à ieets paa rfcs e dio o arcne epnaiiae de responsabilidade a fabricantes aos deixou e gráficas placas diferentes às acesso da surgimento O entidades. diversas por mantido API a criou 3D, gráficos de mercado como conhecidas (CROW,2004). 2D aceleradoras placas tornaram-se isso, por e, (2D) dimensões duas de gráficas primitivas das ( IBM-PC arquitetura a com (GUTTAG gráfico ao processamento voltado de (VRAM) chamada vídeo, para dedicada memória uma possuir WALL, 1985). Design Aided Computer solução, Essa tela. da atualização como conhecida de taxas melhores possibilitar de os fim gerar a para vídeo, apenas de sinais empregado era processador o época, Nesta principal. CPU da carga a amenizar a forma de 8088) (Intel próprio microprocessador com vídeo de placa primeira a quando 1984 de ano ao remonta vídeo paralela arquitetura Esta simultaneamente. pixeis de tempo. porunidade número umde operações grande de apossibilita execução portanto vários de valores os calcular possível é demais dos independente é pixel cada Como exibida. ser a imagem uma gerar para pixeis 2.1 2 UNIDADE DE GRÁFICO PROCESSAMENTO Histórico dasHistórico GPUs o iíi o ns 9, a a 90, anos dos início No compatíveis vídeo de placas primeiras as surgiram 80 anos dos final no Entretanto, a 1986, Em a relacionadas tarefas as para especificamente processadores utilizar se de ideia A de número grande um processar de necessidade da surgiram características Essas de aceleração à dedicado processador um é Gráfico Processamento de Unidade A e suporte a a suporte e Professional Graphics Controller Graphics Professional Texas Instruments Texas display, (CAD Personal Computer Personal foi um dos primeiros a apresentar um conjunto de instruções de conjunto um apresentar a primeiros dos um foi ) e não se disseminou para o mercado de massa (DUKE; massa de mercado o para disseminou se não e iio rpis Itrainl (SGI) International Graphics Silicon lançou o processador TMS34010. Este chip, além de além chip, Este TMS34010. processador o lançou OpenGL, International Business Machines Business International et al. et ), que possuíam implementações em hardware em implementações possuíam que ),

que posteriormente tornou-se um padrão um tornou-se posteriormente que (PGC) , 1988). OpenGL , era destinada a custosos sistemas de sistemas custosos a destinada era , trouxe uma forma uniforme de uniforme forma uma trouxe ie adm Acs Memory Access Random Video u r íe no líder era que , (IBM) lançou a lançou (IBM) et al. et 19 ,

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) u aimuod oe epoesmnod P,cinouadmnademanda a implementar produtos primeiros os 1995, surgiram de volta Porhardware. emuma 3D aceleração criando CPU, da processamento de poder do uso faziam que gráficos 2004). (CROW, aplicativospara no mercado impacto um forte teve vídeo de placas de diversidade grande uma OpenGL de conjunto o desenvolver série de algoritmos aos dados processados por uma GPU. Os dados de entrada são um são entrada de dados Os GPU. uma por processados dados aos algoritmos de série visíveis final. pixeisna projeção não em desnecessários cálculos produtos de família ATI a a lançou período Neste mundo. de coordenadas em especificados polígonos, dos iluminação do introdução pela 2003). (AZEVEDO, um espaço bidimensional para da projeção resultantes triângulos), (comumente polígonos de conjunto um por sintetizada é 3D imagem A tridimensional. objeto como conhecida rasterização, também matricial, representação uma da em 3D objetos de além de conversão vetoriais na representações consiste placa rasterização A monitor. na o para sinais processamento dos geração e havia texturização não geração dessa NV5, dispositivos - TNT2 RIVA produtos, respectivos seus (com 3Dfx a ponto, gerações cinco em podedefinida ser evolução desse partir A GPU. da projeto no definidas fixas funções por realizado era ainda gráfico processamento o período nesse entanto, acrescentando No hardware. 1998, ao de 3D gráfico volta processamento por ocorreu que GPUs, das surgimento o foi 3D aceleração ideia essa 2.1.2 2.1.1 raster Em 1999, o lançamento da da lançamento o 1999, Em e NVIDIA, ATI segmento: no empresas grandes três haviam 90, de década da final No 3D gráficos com aplicativos comuns tornar se a começavam 90 de década da início No com compatível nível alto de API uma utilizando software escrever de possibilidade A O O Segunda geração geração Primeira . : pipeline . Já a texturização é responsável pela aplicação de uma textura às faces de um de faces às textura uma de aplicação pela responsável é texturização a Já . device drivers device S3 ViRGE S3 APIs APIs gráfico é um modelo conceitual composto por estágios que aplicam uma aplicam que estágios por composto conceitual modelo um é gráfico DirectX pipeline , ATI Rage ATI para os seus produtos. Posteriormente, a empresa empresa a produtos. Posteriormente, seus os para , que inclui a API Direct3D que tornou-se grande competidora da competidora grande tornou-se que Direct3D API a inclui que , rfc, trad P epnáe ea tasomço e transformação pela responsável GPU a tornando gráfico, R100 com a tecnologia HyperZ, que permitia evitar permitia que HyperZ, tecnologia a com R100 Radeon GeForce GeForce , Mystique Matrox 256 (NV10) pela empresa NVIDIA, destacou-se NVIDIA, empresa pela (NV10) 256 (IKEDA, 2011). (IKEDA, e 3dfx Voodoo 3dfx Rage 128 Rage . O passo seguinte à seguinte passo O . e Voodoo3). Nos Voodoo3). e Microsoft rset crescente lançou por 20

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) foi adquirida pela NVIDIA, que passou a utilizar esta tecnologia em sua linha de produtos. de linha sua em tecnologia esta utilizar a passou que NVIDIA, pela adquirida foi 3DFX a Posteriormente, vídeo. de placas duas de paralelo em utilização e conexão a permitia módulos 2011). da GPU (IKEDA, os configurar podia que desenvolvedor, ao flexibilidade certa uma permitia arquitetura Esta GPU. da hardware o para levadas foram CPU pela feitas eram antes que tarefas das parte boa pois real, tempo em gráficas aplicações e jogos nos avanço grande um possibilitou arquitetura do estágios os todos de pipeline execução a Após atributos. respectivos os e vértices de conjunto flexibilidade na utilização de dados de textura. Nesse período, com início por volta de 2003, a 2003, de volta por início com período, Nesse textura. de dados de utilização na flexibilidade 2009). programável(VIANA, um hardware vetorial com encarada ser ( montagem de linguagem os pois principal, CPU a GPU (ST-LAURENT, inteiramentepela 2004). executados sobrecarregar sem imagens nas realismo maior como conhecidos são técnicas duas essas com desenvolvidos programas Os dinamicamente. modelo o alterar ou 3D modelos os otimizar para rasterização), de antes seja, (ou tridimensional modelo do vértices dos estrutura Já desfoque. ou rugosidade exemplo, por como imagem, na efeitos criar a forma de rasterização, a após 2009). de técnicas a com diretamente competiu semelhantes características com produtos (IKEDA, acirrada 2011). uma concorrência dando inícioa tinham NVIDIA e ATI período, mesmo Neste 2.1.4 2.1.3 A capacidade de processamento desta geração era limitada, sendo necessário utilizar a utilizar necessário sendo limitada, era geração desta processamento de capacidade A O – programável GPU primeira a lançou NVIDIA a 2001, Em tecnologia a lançou vez, sua por 3DFX, empresa A A quarta geração introduziu o tratamento de variáveis de ponto flutuante e uma maior uma e flutuante ponto de variáveis de tratamento o introduziu geração quarta A Quarta geração Terceira Geração bé-earpeetçod m mgmasreiian ea tela. na exibida ser a imagem uma de representação a obtém-se , pixel shading pixel pixel shading pixel etx shading vertex torna possível desenvolver programas capazes de manipular os pixeis os manipular de capazes programas desenvolver possível torna assembly e vertex shading vertex osblt raã e porms cpzs d aiua a manipular de capazes programas de criação a possibilita aen 80 (R200) 8500 Radeon )

da GPU. Entretanto, a partir desta fase a GPU começou a começou GPU a fase desta partir a Entretanto, GPU. . Ambas as técnicas são utilizadas a fim de obter de fim a utilizadas são técnicas as Ambas . foi a grande evolução desta geração (VIANA, geração desta evolução grande a foi açd ea AI nrdço das introdução A ATI. pela lançada Scalable Link Interface Link Scalable GeForce 3 (NV20) 3 GeForce A adoção dessa adoção A shaders ( SLI), que SLI), , que , são 21

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) de propósito geral sobre tecnologias de GPU 2009). (NVIDIA, tecnologias de sobre propósito geral aplicativos precariamente, que ainda possível desenvolver, foi que em história na vez primeira R300e X1 ATI. da série pela e (NV30) FX série da lançamento o com intensa foi concorrência mesmos entre CPU e GPU. CPUmesmos entre e CPU pela executadas são cena da computações A principal. as e aplicação da lógica a apenas onde do etapas mais anos, dos longo Ao processamento. no vazão maior obter a forma de vezes, diversas replicado o modernas, vídeo de placas Nas vez. cada de pixel um tratar de invés (NVIDIA, da CPU diminuira carga fim 1999). vídeo, de a a de placas Com às alocadas foram CPU. tarefas mais pela vez cada GPUs, executadas das desenvolvimento eram no evolução operações outras as e repetitiva, e simples operação a 2004). (CROW, e iluminação representam que pixeis com 2D transformações em: subdividido ser coordenadas pode ainda geometria de estágio O objetos. dos superfície as entre área a preenche etapa segunda A exibição. à apropriadas dimensões, duas de representações em dimensões três de objetos dos coordenadas as transforma etapa primeira A renderização. e geometria de processamento focos dos um Subseção da serádetalhadoa partir portanto, deste e, trabalho é GPUs para geral propósito de programas de desenvolvimento de conceito O 2011). (IKEDA, científica comunidade da além indo mercado, no interesse grande de se tornou- gráfico hardware em paralela computação a que 2006 de que meados de partir portanto, a somente dizer, Pode-se GPUs. em geral propósito de paralela computação a explorar 2.2 2.1.5 Pipeline gráfico tradicionalPipeline gráfico A ideia do do ideia A uma ser por hardware, em implementada era renderização a apenas Inicialmente, o todo por executado processo O para elaboradas arquiteturas as são geração dessa placas das marcante ponto O a ser a devido vídeo, de placas das evolução na importante momento um foi Este Quinta geração Tabela 1 Tabela pipeline pipeline lista os estágios do do estágios os lista foram sendo trazidas da CPU para a GPU, chegando ao cenário atual, cenário ao chegando GPU, a para CPU da trazidas sendo foram é fazer com que cada um desses módulos opere em paralelo, ao paralelo, em opere módulos desses um cada que com fazer é pipeline pipeline pode ser dividido em duas etapas principais: etapas duas em dividido ser pode gráfico e a evolução da distribuição dos distribuição da evolução a e gráfico 2.3 . GeForce 6 GeForce pipeline pela NVIDIA e NVIDIA pela completo é completo 22

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) arquiteturas paralelas.arquiteturas adotarem a GPUs as levou execução de módulos mesmos pelos passar necessitarem pixeis modelo de programação escalável baseado em três conceitos centrais: uma hierarquia de hierarquia uma de centrais: grupos conceitos três em baseado escalável programação de modelo um provê CUDA arquitetura A NVIDIA. da GPUs nas presente processamento de capacidade computação para de chamada também GPGPU, de arquitetura primeira A tradicionais. gráficas APIs das desenvolvimento de ambientes seus de as desvinculamento ao e tornam geral processamento que arquiteturas de criação na resultou segmento novo deste surgimento O computadores. de número grande um em presente padrão hardware de uso fazendo paralelização, possuamumapassível de estrutura deque algoritmos aceleração 2009). (NVIDIA, memória da aleatórias posições em escritas e leituras de dados impossibilidade a como com trabalhar para adaptados fossem limitações, outras haviam soluções, primeiras Nas texturas. e vértices de termos em expressos algoritmos os todos que exigindo entanto (GLSL) Language Shading de linguagens Fonte: NVIDIA,1999. Renderização triângulos dos Criação Iluminação Transformações cena da Computações aplicação da Lógica 2.4 2.3 GPU, Visão Geral daVisão CUDA Geral em GPUProcessamento geral depropósito CUDA é a arquitetura de computação paralela de propósito geral que faz uso da uso faz que geral propósito de paralela computação de arquitetura a é CUDA de uso O de utilização a com começou geral propósito de processamento para GPU da uso O do características As Estágio foi criada pela empresa NVIDIA e será detalhada a seguir. empresa pela NVIDIAe será detalhada criada foi threads Tabela Tabela shading eói oprihd nr sas entre compartilhada memória , chips 1 oocomo , Evolução da estágios dos entreCPUEvolução distribuição GPU. e e Processador gráficoProcessador CPU CPU CPU CPU CPU . APIs Dessa forma, aplicações em diversas áreas foram aceleradas, no aceleradas, foram áreas diversas em aplicações forma, Dessa pipeline Direct3D High Level Language Shader Level High Direct3D 1996 rfcs nse cnet eeo m gad oeca na potencial grande um revelou contexto neste gráficas delinearam a arquitetura das GPUs. O fato de todos os todos de fato O GPUs. das arquitetura a delinearam Processador gráficoProcessador gráficoProcessador CPU CPU CPU CPU 1997 threads e barreiras de sincronização. de barreiras e GPUs Processador gráficoProcessador gráficoProcessador CPU CPU CPU CPU as arpids ao apropriadas mais

1998 (HLSL) e OpenGL GPU GPU GPU GPU CPU CPU 1999 23

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) rdcoas nfcço ds dos unificação A tradicionais. (HUANG;geral 2009). WU, SHEN; propósito de processamento ao adequados dispositivos em GPUs as transformaram alterações dos união da resultante componente dos unificação C (NVIDIA, 2011a). linguagem à extensões de conjunto um como desenvolvedor ao expostos são conceitos Esses cada núcleo fica responsável pela execução de quatro blocos. Já no segundo caso, os oito os caso, segundo no Já blocos. quatro de execução pela responsável fica núcleo cada de blocos oito com execução para parametrizado foi questão em programa O núcleos. quatro com direita da a e núcleos dois com GPU uma possui esquerda computação de poder o disponível. todo de uso fará assim, ainda e, núcleos de quantidade diferentes com GPUs em executado ser poderá programa mesmo um forma, Desta alocado. será bloco o núcleo qual em explicitar necessário seja que sem simultaneamente, ou sequencialmente flexibilizada. foi hardware de recursos dos utilização a forma, Dessa GPU. a compõe que unidades diversas as entre processamento de carga a genérica divide que computação dinâmico escalonador de um por unidades interconectadas em exemplo, por pixeis, ou vértices de processamento A A de grupos Os A a GPUs: das organização na principais alterações duas definiu CUDA arquitetura A Figura 2 Figura Figura Figura Figura 1 Figura shaders 1

ilustra a execução de um mesmo programa em duas placas de vídeo, a da a vídeo, de placas duas em programa mesmo um de execução a ilustra Shader lsr aa ilustra ( threads tradicional x tradicional vertex ruttr uiiaa o dos unificada arquitetura e ã saoao aa eeuã m u o núcleos, dos um em execução para escalonados são pixel shaders pixel shaders s hader shaders rnfro s uiae seilzds em especializadas unidades as transformou unificado, adaptado de unificado,adaptado (IKEDA, 2011). hmd chamado é ) e a criação de memória compartilhada. O compartilhada. memória de criação a e ) shaders tem processor stream m otat asaos contraste em threads . No primeiro caso, primeiro No . S) Essas (SP). shaders 24

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) nenmne pl P no é dtriao pl óio d piaã. Dsa om, a forma, Dessa aplicação. da código pelo programas. dos a execução escalávelpara provê um ambiente arquitetura determinado é não e GPU realizado é pela escalonamento internamente Esse disponíveis. núcleos quatro os entre divididos são blocos ndd eisrçoinstrução de unidade ( escalares processadores de série uma por compostos são SMs chamados são que multiprocessadores, de escalável dooutro algarismo. independentemente o para estar de pode dispositivos nos funcionalidade apenas presente determinada um exemplo, Por numeração. essa com acordo de hardware do características as apresentam NVIDIA da manuais Os de numérico. versionamento conjunto um em categorizadas são placas conter as todas dispositivo, podem placas diferentes determinado um em presentes características as identificar de fim A diferentes. características Portanto, GPUs. das desempenho o de aprimorar longo a fim dotempo, ao implementadas sendo foram Algumas características 2.5 Arquitetura dehardware

s paa e vdo cmaíes cm a tcooi UA psum u conjunto um possuem CUDA tecnologia a com compatíveis vídeo de placas As inicial. concepção sua a desde alterações algumas sofreu já CUDA arquitetura A compute capability compute Figura Figura 2 Escalabilidade da CUDA, arquitetura de da Escalabilidade adaptada (NVIDIA, 2011a). multi thread multi ., 2.x, significa que todos as placas com versão 2 suportam-na, 2 versão com placas as todos que significa eói oprihd.O lcsd de blocos Os compartilhada. memória e compute capability compute compute capabilities compute temn utpoesr multiprocessors streaming

1.2. Se a funcionalidade for descrita for funcionalidade a Se 1.2. scalar processors scalar identificados por um por identificados threads – SP), SP), – (SMs) criados . Os . uma 25

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) a execução no mesmo ponto do código, há a possibilidade de que haja ramificação na ramificação haja que de possibilidade a as todas nem há caso, Neste execução. código, do ponto mesmo no execução a as todas um instrução de arquitetura essa chamou NVIDIA A Multiple-ThreadInstruction, registradores. próprios seus com SP, cada pois concorrentemente, executadas são bloco mesmo um de pelo iess CU, n nat, eitm dfrna motne ( importantes dos largura diferenças A registrador. um em salvos são dados de elementos diversos SIMD, existem arquiteturas entanto, no CPUs, diversas threads outros os enquanto inativos, ficarão iterações cada para cada para iteraçõesdiferir pode laço no executadas de número o caso, terceiro No anterior. exemplo do implicações mesmas as com sequência, na condicionais instruções duas como interpretado ser pode (b) cenário O ciclos. os que com faz condicional bloco do dentro executado incremento o (a), situação Na execução. divergence das paralela execução na máxima eficiência alcançada seja que para Portanto, execução. da serialização Figura Figura SPs kernel etndsà às destinados saaqieuacid eaNII NVIDIA pela criada arquitetura Esta A de escalonador O domesmo 3 Cenários comuns de threads iua 3 Figura ) dentro de um mesmo de um mesmo ) dentro são escalonados para execução em para execução escalonados são thread threads warp ativas neste neste ativas eutr qe sos que resultará

warp é selecionado para execução, então a mesma instrução é executada em executada é instrução mesma a então execução, para selecionado é peet rs css tpcs od cre a dvrêca n lx de fluxo no divergência a ocorre onde típicos casos três apresenta é necessário que não hajam ramificações no fluxo de execução ( execução de fluxo no ramificações hajam não que necessário é threads

(HAN; ABDELRAHMAN ,2011). threads (SIMT) (NVIDIA, (SIMT) 2011a). warp warp branch divergence, que não executam o incremento fiquem inativos por alguns por inativos fiquem incremento o executam não que warp eaaa mguo,caao chamados grupos, em separa-as (NVIDIA, 2011c) (NVIDIA, threads SPs (HAN; ABDELRAHMAN ,2011). lcds aa sas para alocados thread.

estarão ativas no mesmo momento, resultando na resultando momento, mesmo no ativas estarão SPs SMs é similar às arquiteturas SIMD presentes em presentes SIMD arquiteturas às similar é adaptada de ABDELRAHMAN adaptada (HAN; , 2011). executam as últimas iterações para as outras as para iterações últimas as executam A diferença no número de iterações do laço do iterações de número no diferença A com capacidade ociosa. As ociosa. As capacidade com . Apesar de todas as as todas de Apesar . threads E t a. 2010) al. et REN thread com menor número de número menor com warps é mapeada em um em mapeada é threads . A cada ciclo de ciclo cada A . threads começaram branch Single- dentro Nas . 26

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) osvl inrr a lrua ds lna e cce e id si, otr implementações obter assim, ainda e, cache de precisa informação essa desempenho de picos linhas obter almeja-se quando entanto, No funcionais. das largura a ignorar possível é é tradicionais (GPU) arquiteturas nas Analogamente, desempenho. hardware de ganhos maiores obter do possível próprias características às implementação da adequação da através mas algoritmo, determinado de funcional meramente implementação uma obter-se de fim a threads ao exposta é instrução, diversas de execução de pela dá se paralelismo o lado, outro nível por SIMT, arquitetura Na software. em paralelismo de nível o determina que registradores, execução. um threads do chamada na tanto, Para paralelamente. executada ser de deve função chamada esta vezes é quantas especificar característica programador esta com função Uma CPU. da chamada __host__ palavras-chave: três existem tanto, Para GPU. na executadas serão hierarquia de ( C ANSI programação Institute de linguagem da extensão uma (BAKHODA paralelas com arquiteturas familiaridade grande possuem não que aqueles mesmo facilidade, de grau certo com paralelas aplicações criar desenvolvedores O aos possibilita NVIDIA pela criado programação paralelismo. de modelo de nível nenhum sem sequencialmente, executado será que código contém número de (NVIDIA, considerada ser 2011c). 2.6.1 2.6 kernel Modelo deprogramação A extensão da linguagem C criada pela NVIDIA possibilita a criação de funções que funções de criação a possibilita NVIDIA pela criada C linguagem da extensão A de através programador ao expostas são programação de modelo do características As grande um crie programador o que permite CUDA do programação de modelo O programador pelo ignorado ser podeSIMT arquitetura da específico comportamento O que podem executar trechos de código distintos (NVIDIA, 2011c) (NVIDIA, código distintos trechos executar de que podem Função (NVIDIA, 2011) (NVIDIA, seguintes: subseções nas descritos são modelo desse chave conceitos três Os ). . A primeira delas específica uma função que será executada na GPU, mas será mas GPU, na executada será que função uma específica delas primeira A . ih osacaaa odo chamada a dois linha a e threads threads

Kernel que executarão código escalar, ou seja, cada ouseja, cada escalar, executarãocódigo que e hierarquiade memória. e kernel . Na Na . é definido o tamanho do do tamanho o definido é Listagem 1 Listagem et al. et , a linha um contém o protótipo com a declaração de declaração a com protótipo o contém um linha a , kernel, , 2009). com a especificação dos parâmetros de parâmetros dos especificação a com grid , ou seja, a quantidade de blocos de blocos de quantidade a seja, ou , mrcn Ntoa Standards National American thread __global__ analisada isoladamente analisada . kernel , , __device__ ae ao cabe e kernel 27 e ,

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) explícito no protótipo da noprotótipo função. explícito estar precisa não portanto, funções, de declaração na padrão qualificador o é __host__ CPU. chave palavra- a Já GPU. própria na executado código por somente invocada ser poderá e GPU pela sincronização da execução com funções intrínsecas que servem como barreiras na execução, na e barreiras como servem compartilhada) que intrínsecas funções memória com execução da (pela sincronização dados de compartilhamento do através si entre cooperar (NVIDIA, disponíveis de processamento 2011a). de núcleos quantidades diferentes a utilizar forma de código, do escalabilidade a possibilita característica Essa blocos. outros em obtidos resultados de depender pode não bloco um em executada operação a Portanto, paralelamente. declaradas. do dentro acessíveis automaticamente quantidadede seja, a variável a existe tanto, Para bloco. um quantidadede processadores. oupela manipulados a serem do tamanho O dimensões. três até ter pode x,y,z.sem sinal: tridimensional variável da através programador da posição a identificam que ou matrizes vetores, da de identificação A elementos volumes. em cálculos de execução a simples torna arranjo Esse 2.6.2 __host__ declara funções convencionais, ou seja, que são chamadas e executadas pela executadas e chamadas são que seja, ou convencionais, funções declara __host__ sAs de blocos dos execução A variáveis As do dentro identificados são blocos Os de grupos contém blocos Os das organização A palavra-chave A 2 1 Hierarquia de threads kernel_function<<>>(buffer); __global__ kernel_function(char*buffer); que residem no mesmo bloco são executadas no mesmo SM podendo SM mesmo no executadas são bloco mesmo no residem que threadIdx threads threads Listagem __device__ threads pode ser obtido através da variável da servariável através pode obtido thread , , blockIdx thread 1 se dá na forma de blocos com uma, duas ou três dimensões. três ou duas uma, com blocos de forma dá na se Declaraçãoe chamada um de threads que está sendo executada é possível através dos índices dos através possível é executada sendo está que , por outro lado, declara uma função que será executada será que função uma declara lado, outro por , threads dentro do bloco. Os índices são disponibilizados ao disponibilizados são índices Os bloco. do dentro blockIdx e e poderá ocorrer em qualquer ordem, serialmente ou serialmente ordem, qualquer em ocorrer poderá kernel grid blockDim que são organizados em um um em organizados são que grid é determinado a partir da quantidade de dados de quantidade da partir a determinado é threadIdx , do tipo tipo do , em e ee io explicitamente sido terem sem mesmo , de mesma forma que as as que forma mesma de são chamadas chamadas são que contém três campos de inteiros de campos três contém que uint3 . Já o tamanho dos blocos, ou blocos, dos tamanho o Já . kernel blockDim built-in . . grid , ou seja, elas são elas seja, ou , threads , que também que , dentro de dentro 28

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) efra u xcço rsiaaea qad oa sas todas quando de instruções. sequência determinada de uma execução apenas prossiga execução a que forma de iiia uniae d cso eói lbl es om, a memória a forma, Dessa global. global. a noacesso memória latência alta os da efeitos memória à acessos um de como utilizada é compartilhada quantidade a minimizar a de umforma SM, memória compartilhada para memória global a transferênciada realizar a Express ( GPU da global memória ( RAM memória da copiados são dados dessas uma memórias. de cada detalhamento um apresenta seguinte subseção A CPU. na executado código de através apenas memórias nestas escrever possível é ou seja, leitura, de somente possuem acesso texturas de e constantes por elevada latência do uma fora possuem localizadas estarem abundantes mais memórias as que observar Pode-se memórias diferentes doaplicativo. no desempenho direta implicação detem vídeo, geralmente, presentes na placa das utilização correta A residir. deve aplicação da dados de conjunto cada onde definir e arquitetura a conhecer desenvolvedor ao necessário tornando memória, 2.6.3 O fluxo dos dados na aplicação geralmente segue o seguinte padrão: inicialmente os inicialmente padrão: seguinte o segue geralmente aplicação na dados dos fluxo O A de espaços diferentes por composto é que memória, de modelo seu expõe CUDA A Hierarquia dememória ( Figura 4 PCIe Tabela 2 Tabela ). Após essa cópia os dados já estão acessíveis às às acessíveis estão já dados os cópia essa Após ). ilustra a forma de organização hierárquica das hierárquica de organização a forma ilustra apresenta um visão geral das memórias disponíveis na arquitetura CUDA. arquitetura na disponíveis memórias das geral visão um apresenta Figura Figura 4 device Organização Organização das chip ), através do barramento barramento do através ), . A quinta coluna da tabela define que as memórias de memórias as que define tabela da coluna quinta A . cache random access memory access random entre a memória global e o aplicativo, para reduzir para aplicativo, o e global memória a entre threads , , adaptada de adaptada Peripheral Component Interconnect Component Peripheral ) do computador ( computador do ) threads threads threads

(NVIDIA, (NVIDIA, 2011a)

, no entanto, é comum é entanto, no , tenham finalizado a finalizado tenham . host ) para a para 29

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) 3 2 1 memória docomputador. para de volta a global estãoresultados na memória que ao acessível tornar de fim a global, cada processamento, do final Ao intermediários. resultados e controle de variáveis armazenar para registradores os utilizando deFonte: NVIDIA,2011be Conrad, 2010. Adaptado Esta memória possui cache em todosEsta memória cache possui os dispositivos. em todosEsta memória cache possui osdispositivos. nosdispositivosEsta memória cache possui 2.x. Compartilhada Registradores Tabela Tabela Constante Memória Textura Global Local Após esta etapa, as as etapa, esta Após 2 Características espaçosde dos memória arquitetura na G80e CUDA G200.séries Localização Placa de Placa de Placa de Placa de Placa vídeo vídeo vídeo vídeo SM SM Figura Figura 1 3 2 threads

5 16 kB até até Fluxo típico umatípico de aplicação Fluxo CUDA. até 1024MB até depende da depende da depende Tamanho manipulam os dados que estão na memória compartilhada, memória na estão que dados os manipulam thread 64 kB 64 kB global global SM porSM host escreve o resultado da sua execução na memória na execução sua da resultado o escreve

por srslao bio.Prfm o fim, Por obtidos. resultados os

0 –600ciclos 0 –600ciclos >= 4ciclos 400 –600 400 –600 ~ 0ciclos Latência ciclos ciclos

Somente leitura sim sim não não não não

threads threads threads host threads um bloco Todas asTodas asTodas asTodas asTodas Escopo thread thread copia os copia + + + + em host host host

30

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) aivi a mmra lcl es om, etuua u vtrs (uoáio) grandes (automáticos) fora vetores localizada está local ou memória a Como local. estruturas memória na alocados serão forma, possivelmente Dessa local. as memória alocará na compilador o variáveis suficiente, espaço houver não Se locais). variáveis de chamadas a menor unidade escalonada é o próprio unidadeéa opróprio menor escalonada 1.x,capability ohalf-warp 4 um de as todas para disponibilizado é lido conteúdo o caso neste endereço, mesmo as todas de caso no exceção uma Há half-warp separadas 2011a). conflito (NVIDIA, não contenhamnenhum para que consecutivas requisições em separados serão acessos os situação, Nessa a acesso. acesso de requisição de conflito uma um haverá banco se mesmo no localizados lado, endereços em acessos contiver outro memória Por tempo. mesmo ao atendidas ser possam arquitetura bancos, Essa diferentes em banda. localizados endereços de acessem que largura requisições, diversas alta que permite uma obter de fim a simultaneamente, acessados global. a memória quantidadede acessos a para esse minimizar utilizar recurso ser pode compartilhada memória A memória 2011b). uma como utilizada (NVIDIA, reduzido é memória desta total porém otamanho global doqueoulocal, a memória vezes menor cem de possui cerca latência doaplicativo. odesempenho diretamente podem influenciar automáticas escopo com global, memória a cada sobre a limitado abstração uma apenas é local memória A 2011b). possui não e chip do

2.7.2 2.7.1 2.7 Half-warp Detalhamento dos dememória espaços broadcast crêcad ofio ed unomi euauma de mais quando dá se conflitos de ocorrência A ser podem que módulos seja, ou bancos, em organizada é compartilhada memória A isso, por multiprocessador, cada de dentro localizada está compartilhada memória A (também automáticas variáveis as armazenar para utilizados são registradores Os memória. de cada relevantes detalhes os seguir serãoapresentados A Registradores e memória local eRegistradores memória Memória compartilhadaMemória é um de é grupo 4 solicitam acesso a posições de memória que localizam-se em um mesmo banco. mesmo um em localizam-se que memória de posições a acesso solicitam . Em dispositivos com com dispositivos Em . hedthread cache é menor unidade escalonada pelo SM.em dispositivos escalonada menor Já unidade é com threads (IKEDA, 2011) (IKEDA, (em dispositivos 1.x), apresenta tempo acesso elevado (NVIDIA, elevado acesso tempo apresenta 1.x), dispositivos (em , com metade do tamanho de um dotamanho , com metade cache warp. explicitamente gerenciada, ou seja, cabe ao programador ao cabe seja, ou gerenciada, explicitamente threads compute capability compute . Portanto, a quantidade e o tamanho das variáveis das tamanho o e quantidade a Portanto, . eu um de half-warp warp 2.x há também a possibilidade de possibilidade a também há 2.x . Em dispositivos com. Em thread executarem uma leitura no leitura uma executarem pertencente ao mesmo ao pertencente compute capabilitycompute 2.x threads compute através

31

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) rnaõs e 3, 4 u 2 bts aihds It é o neeo o rmio elemento primeiro do endereço o é, Isto alinhadas. 2011a). (NVIDIA, dosegmento dotamanho um ser múltiplo manipulado precisa , 128 ou 64 32, de transações ao (NVIDIA, para todas 2011b). necessariamente multicast acesso coalescido. A figura (a) possui um padrão de acesso não sequencial, ou seja, as seja, ou sequencial, não acesso de padrão um possui (a) figura A coalescido. acesso todas as neste casonem um por coalescido acesso o ilustra (b) figura A bytes. quatro de variáveis a coalescido acesso o exemplifica (a) figura A diluídos. são acesso da de latência efeitos os forma, Desta transação. uma apenas em memória de posições várias a acesso compute capability possuem que recentes, mais vídeo de placas as Entretanto, transação. uma em acessos vários de combinação na resultava que acesso de padrão no severas mais restrições impunha GPU diferentes com dispositivos entre variam hardware 2011b). (NVIDIA, arquitetura de pela impostas regrasde as alinhamento obedeça capability com dispositivos 2.7.3 chip A transações em global memória à acessos dos agrupamento o definem que regras As um por efetuadas global memória à acesso de requisições As integrada sendo não entanto, no vídeo, de placa na localizada está global memória A A Memória global Memória da GPU, possui alta latência no acesso. Esta memória pode ser acessada através de através acessada ser pode memória Esta acesso. no latência alta possui GPU, da ne o cned io é dsoiiiao pr m guo d de grupo um para disponibilizado é lido conteúdo o onde , 2.x) são combinadas resultando na menor quantidade de transações possível, que possível, transações de quantidade menor na resultando combinadas são 2.x) Figura 6 Figura Figura 7 Figura compute capability compute ilustra padrões de acesso que permitem o acesso coalescido, ou seja, o seja, ou coalescido, acesso o permitem que acesso de padrões ilustra 2.x, apresentam avanços nesse quesito. avanços nesse 2.x,apresentam , por outro lado, exemplifica padrões de acesso que não possibilitam o possibilitam não que acesso de padrões exemplifica lado, outro por , Figura Figura threads 6 Padrões Padrões acesso(CONRAD, de 2010).coalescido acessam as respectivas variáveis. respectivas as acessam .)o o mum por ou 1.x) compute capabilities compute warp e ipstvscmcom dispositivos (em . Inicialmente, a arquitetura da arquitetura a Inicialmente, . warp divergente, ou seja, ou divergente, threads half-warp a não mas , compute (em float 32

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) acesso sequencial. No entanto, o acesso é desalinhado o que impossibilita o impossibilita oque é oacesso desalinhado entanto, No sequencial. acesso threads m etr o cce rdz a lrua d ad eadd, ms a ltni e mantém se latência a mas demandada, banda de 2011a). (NVIDIA, constante largura a reduz cache do leitura uma forma, Dessa constante. latência com leitura de de fluxos obter a espaço forma de projetado esse é memória disso, Além próximas. posições em localizados duas dados em seja, espacial ou localidade dimensões, apresentem que dados a acesso para otimizado cache possui global memória a acessos os se definir os utilizarão permite que parâmetro um o motivo, possui esse Por compilador desnecessárias. escritas ou leituras de quantidade menor numa resulta de utilização a memória na dispersos são acessos os quando os do será usadaatravés paradados acessar que da otamanho transação determinam o Já global. memória de níveis dois ( de presença a é global memória a acesso no latência alta da impacto 2.7.4 cache L1 e L2) entre o SM e a memória global. oSM entre e a L1memória e L2) A memória de textura ou superfície está localizada na memória da placa de vídeo e vídeo de placa da memória na localizada está superfície ou textura de memória A o apenas utilizar vantajoso ser pode circunstâncias certas Em O com dispositivos dos característica Uma não acessam as suas respectivas posições. Já a figura (b) apresenta um padrão de padrão um apresenta (b) figura a Já posições. respectivas suas as acessam não Memória detextura eMemória superfície cache caches L1 é composto de linhas de 128 bytes que mapeiam segmentos alinhados na alinhados segmentos mapeiam que bytes 128 de linhas de composto é L1 L1 e L2 ou apenas oL2 2011a). (NVIDIA, e L2 ouapenas L1 Figura Figura cache L2 é composto por linhas de 32 bytes. O tamanho das linhas das tamanho O bytes. 32 de linhas por composto é L2 7 não Acesso 2010).coalescido (CONRAD, compute capability compute cache com linhas mais estreitas mais linhas com 2.x que pode amenizar o amenizar pode que 2.x cache coalescing L2, por exemplo, por L2, cache . cache . 33

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) é uma memória somente de leitura. memória somente é uma de tempo o cache no convencional. global na memória de uma seráomesmo leitura acesso disponível esteja não dado o caso leitura, de tempo no significativo osi aes oet e liua pl P. Aé e sr uaa epiiaet, em explicitamente, usada ser (NVIDIA, de2011a). instruções específicas através de Além GPU. pela com dispositivos leitura de somente acesso Possui 2.7.5 eói ecntne sálclzd odsoiioepsu eói memória possui e dispositivo no localizada está constantes de memória A do partir a escrita ser pode textura de memória A um Quando Memória deconstantesMemória compute capability compute warp necessita de um dado que está presente no cache há um ganho um há cache no presente está que dado um de necessita 2.x esta memória pode ser utilizada pelo compilador pelo utilizada ser pode memória esta 2.x host , mas do ponto de vista da GPU da vista de ponto do mas , cache 34 .

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) capaz de realizar a conversão inversa, a fim de obter o vídeo na sua forma natural. O par O natural. de forma sua chama se é oque codificador/decodificador na sistemas vídeo o obter de (nos fim a inversa, espaço conversão a realizar e de capaz comunicação) de sistema o é que decodificador, sistemas um requer codificado vídeo do utilização (nos A armazenamento). banda de recursos largura de eficiente como mais utilização uma permitir a forma de comprimida, representação YCbCr 4:4:4 formato em vídeo um exemplo, 4:2:0 Por YCbCr técnica. esta 4:4:4 por ocupado formato informação de espaço o do com comparado se representação, na bits (RICHARDSON, 2003). menos 50% crominância, cada obtendo de amostra uma apenas utilizada é luminância de amostras quatro para cada seja, o ou verticalmente, fim, quanto Por horizontalmente tanto crominância. resolução a cada reduz de 4:2:0 formato amostras duas existem cada luminância para de seja, ou amostras horizontal, quatro sentido no resolução da metade a possui crominâncias das (Y, componente cada de amostra uma possuem pixeis os todos portanto, intactas, mantidas são crominâncias as 4:4:4 amostragem Na 4:2:0. e 4:2:2 4:4:4, como estabelecidos, bem amostragem de padrões de através realizada é crominâncias ( os e televisão o utilizam de vídeo sistemas de codificadores os Já azul. e verde vermelha, componentes o nas utilizam baseado vídeo RGB, de monitores Os aplicações. diferentes em empregados espaços às diversos devido componentes, três por composta é que humano visual dosistema fisiológicas características visual informação a que valores com representam retangular matriz uma obtém-se amostragem, da partir A espacialmente. 3.1 3 Cb ) e a crominância vermelha (Cr) vermelha ) e a crominância CODIFICAÇÃO VÍDEO DE Vídeo digital A subamostragem é amplamente utilizada nos codificadores atuais, devido à redução à devido atuais, codificadores nos utilizada amplamente é subamostragem A cores de espaço do utilização A Existem cores. de espaço chamado é componentes três das representação de forma A e temporalmente amostrados dados de utilização na baseia-se digital vídeo O uma em original forma sua de vídeo o transforma vídeo de codificador Um com perdas de qualidade pouco significativas (AGOSTINI, pouco significativas 2007). perdasde qualidade com obtém uma taxa de compressão de 50% em relação a um vídeo em RGB ou RGB em vídeo um a relação em 50% de compressão de taxa uma obtém YCbCr (SHI; SUN,(SHI; 2008) , que define a luminância (Y), a crominância azul crominância a (Y), luminância a define que , codec YCbCr (RICHARDSON, 2010). soid o uaotae das subamostragem a com associado (GONZALEZ, 2000) . Cb e Cr). No caso 4:2:2, a amostragem a 4:2:2, caso No Cr). e . 35

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) Os altos níveis de compactação obtidos pelos pelos obtidos compactação de níveis altos Os sem perdas. preditiva de decodificação técnicas possibilitaa utilização redundantesdados que ou componentes diferentes a (GONZALEZ,2000). da imagem características relação em diferenciada sensibilidade possui humano olho o disso, Além humano. visão de sistema do limitações as explorar a forma de atuais, vídeo de módulo temporal, módulo espacial e codificador de entropia. Cada um desses módulos é módulos (AGOSTINI,2007): presente novídeo de umredundância responsável tipo porremover desses um Cada entropia. de codificador e espacial módulo temporal, módulo (DINIZ, e2009). sem perdas) (com destas técnicas 3.2 Compressão devídeo m oiiao evdo efra ea, écmot o rs ats principais: partes três por composto é geral, forma de vídeo, de codificador Um de quantidade enorme uma apresenta vídeos de digital representação a Entretanto, codificadores nos utilizadas amplamente são perdas com compressão de técnicas As c) b) a) determinados símbolos, sendo que quanto maior a probabilidade de ocorrência de probabilidade de a maior quanto ocorrência que sendo símbolos, de determinados probabilidade a com relaciona-se Entrópica: Redundância de módulos pelo tratada movimento. de e compensação estimativa é temporal correlação Esta 2000). espacial redundância (GONZALEZ, da adicional dimensão uma como visualizada ser pode redundância Essas adjacentes. temporalmente interquadro) chamada isso, (por quadros diversos os entre existente correlação à deve se Temporal: Redundância da imagem. na qualidadevisual pouco significativas operação ser a tendem uma perdas as entanto, No codificação. na perdas gera pois irreversível, é quantização A predição respectivamente. pela quantização, frequências, e das intraquadro domínio no e espacial domínio no realizada é redundância dessa remoção A intraquadro). chamada isso, (por um de longo ao pixeis os entre existente correlação à devida Espacial: Redundância por símbolo SUN, (SHI; 2007). por codificada informação de média possível quantidade da medida a informação é entropia A símbolo. de quantidade maior da codificação a objetivando perdas sem compressão de algoritmos utiliza entropia de codificação A dele. através codificada sendo estará informação menos símbolo, determinado um de codecs atuais são possíveis com a combinação a com possíveis são atuais 36

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) codificador. A única restrição imposta na implementação do codificador, é que ele precisa ele que é codificador, do implementação na imposta restrição única A codificador. (ITU-T, 2003). especificado formato o decodificar de capaz decodificador um em de definido, funcionamento o é detalhes, disso, Além codificado. vídeo do formato o definem que instruções possui MPEG-4) que 10 do parte a sendo (como e ISO/IEC ITU-T pela publicado documento por um 5 ( saída de bits de fluxo do entrópica redundância de nível o reduzir irá que entropia de codificador ao repassadas são codificador, pelo tomadas asdecisões indicam que controle, de informações as e quantizados coeficientes Os quantização. e transformadas de módulos pelos processados quadros de oriundos são decodificador utilizados um a identicamente operações referência as executa que reconstrução, de de caminho pelo reconstruídos macroblocos Os movimento. de compensação/estimativa pela ou intraquadro predição pela obtido referência de macrobloco a comoserem usados referência. decodificados quadros os monta codificador o qual do através vídeo, do reconstrução de caminho o e codificado vídeo o representa que bytes de sequência a gerado é qual do através aumento um (RICHARDSON, 2010). da flexibilidade compressão qualidadee na eficiência, potencial proporcionam sugeridos avanços os entanto, no Visual, MPEG-4 e MPEG-2 deste básicos conceitos Os então. desde decodificador atualizações de do ferramentas e técnicas implementação de conjunto qualquer um fazer itens uso. irá podedesses optar porqual compressão, ocodificador define por H.264 O 2003). corretamente (RICHARDSON, decodificado ser um gerar Macrobloco é um bloco de 16x16pixeis. Macrobloco é bloco de um 3.4 3.3 Introdução aoH.264 Descrição do Os macroblocos de diferenças (geralmente chamados de macroblocos de resíduos) são de resíduos) macroblocos de chamados (geralmente diferenças de macroblocos Os macrobloco cada Inicialmente, direto, caminho o fluem: dados os onde por caminhos dois possui codificador O e revisões diversas sofreu e 2003 em publicado originalmente foi H.264 padrão O do detalhes os especificados são não codificação, de padrões outros em como Assim composto É indústria. a para vídeo de codificação de internacional padrão um é H.264 bitstream bitstream (RICHARDSON, 2003) .). (fluxo de vídeo codificado) conforme a especificação, de forma que possa que forma de especificação, a conforme codificado) vídeo de (fluxo codec o i, o vdo cdfcd eá clcd eto d “pacotes” de dentro colocado será codificado vídeo o fim, Por H.264 5 . do quadro original a ser codificado é subtraído de um de subtraído é codificado ser a original quadro do codec são os mesmos presentes no presentes mesmos os são 37

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) rnfraa ness eutd et tp eá smd o rslao d predição da resultado ao somado será etapa desta resultado O inversas. transformadas será que obtido decodificador. pelo resultado mesmo o referência de quadro como utilize codificador o que forma de compensação, de procedimento o executam decodificador o quanto codificador o Tanto atual. bloco ao anteriormente codificados foram que espacial) ou (temporal vizinhança da blocos 2003). ( NAL como referenciados padronizados, base em amostras reconstruídas, ou seja, que já percorreram todo o caminho de reconstrução de caminho o todo percorreram já que seja, ou reconstruídas, amostras em base com preditos macroblocos em resultando (Intra), I macroblocos dos crominância e luminância dos elementos todos a aplicado é (AGOSTINI,2007). espacial nodomínio macroblocos procedimento Este demais. os todos de independente de quadro cada forma de processado ser pode vídeo de de sequência da quadro cada seja, ou contida, dados auto forma de compressão a permitir é principal característica Sua quadro. versão uma seja, ou referência, de imagem próxima a dobloco original decodificada formará então e blocos) em imagem da particionamento do efeitos os diminuir (para filtrado e interquadro ou intraquadro 3.4.1 A predição intraquadro tem por objetivo diminuir a redundância espacial dentro um dentro espacial redundância a diminuir objetivo por tem intraquadro predição A A e inversa quantização de bloco pelo processado será quantizado resultado o Portanto, de uso fazem imagem da blocos de predição em baseadas compressão de técnicas As O padrão H.264 define a aplicação da predição intraquadro nos componentes de componentes nos intraquadro predição da aplicação a define H.264 padrão O Predição intraquadro Predição Figura 8 apresenta os blocos constituintes do codificador H.264. docodificador blocos constituintes os apresenta Figura Figura 8 (REDIESS, codificador Estrutura H.2642006).do (RICHARDSON, 2003) ewr btato Layer Abstraction Network . (RICHARDSON, ) 38

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) (RICHARDSON, 2003). respectivamente 4x4, I macroblocos para predição de modos nove os e 16x16 I macroblocos Figuras as exemplo, Por vídeo. de I, macrobloco no quadro padrões espaciais determinados atacar visam que de predição modos de vários existem tipo cara Para divisões. sem tratado é macrobloco o caso, segundo no Já 4x4. de blocos em separadamente processado é amostras 16x16 de conjunto o caso primeiro dea resíduos serem codificados.um macrobloco gerar de fim a original macrobloco do subtraído é predição desta resultado O codificador. do informação do vídeo a ser codificado, de forma a diminuir a complexidade da decisão) da complexidade a diminuir a (AGOSTINI, 2007). forma de codificado, ser a vídeo do informação usando heurística, alguma em baseiam-se (que rápidos algoritmos e compressão) na eficiência melhor a fornece qual encontrar de fim a possíveis modos os todos modo calculam (que completa busca de mesmo algoritmos decisão: desta tomada a para o abordagens duas Existem codificador. do utilizam sempre crominâncias duas as (RICHARDSON, 2003). entanto, No possíveis. Figura Figura A decisão de qual modo de predição será empregado em cada macrobloco fica a cargo a fica macrobloco cada em empregado será predição de modo qual de decisão A predição de modos quatro existem e 8x8 blocos em processadas são crominâncias As No 16x16. e 4x4 tamanho de I: blocos de tipos dois existem H.264, norma a Segundo 9 de blocos Modos predição para de 2007) (AGOSTINI, 16x16 luminância. 9 e 10 , apresentam os quatro modos de predição para predição de modos quatro os apresentam , 39

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) 6 os apresentarão seguintes seções As transformadas. uma de dessas cada detalhes 2003). (RICHARDSON, anterior etapa na de obtidos Transformada a empregada é casos, certos em etapa, chamada DCT, da aproximada versão uma é utilizada transformada Hadamard maior na adotada dosparte transformada A original. representação à voltar de possível seja reversível, que seja forma transformada a que necessário é pequeno disso, um Além em componentes componentes. concentrada de em sinal número do separada energia da original parte maior a informação com e a descorrelacionadas conter deve convertidos são de dados os entrada qual o para domínio O de domínio. outro imagem em predição da da resíduos blocos de ou converte entrada codificador do estágio Este vídeo. de codificação quanto imagens de codificação em tanto empregada sendo imagem, uma de pixeis os entre correlação Coeficientes DC sãoque DC zero. aqueles possuem frequência Coeficientes 3.4.2 O padrão H.264 define a utilização de duas transformadas: DCT e Transformada de Transformada e DCT transformadas: duas de utilização a define H.264 padrão O a explora que compressão de técnica uma é transformadas por codificação A Transformadas diretas e inversas Transformadas diretas e Figura Figura codecs . O codificador H.264 transforma e quantiza os blocos de coeficientes residuais. A residuais. coeficientes de blocos os quantiza e transforma H.264 codificador O . 10 é a DCT bidimensional (SHI; SUN, (SHI; 2008). é a DCTbidimensional de blocos (AGOSTINI,2007).Modos predição para de 4x4 luminância Hadamard core transform core aos coeficientes DC coeficientes aos . Após esta Após . 40 6

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) DCT (RICHARDSON,DCT 2003). equação A frequências. das domínio o para entrada de dados de bloco um converter esquerda dobloco. superior parte na concentradas significativas mais componentes as possui (b) resultante bloco blocos 4x4: em a transformada e respectivamente) 3.4.2.1 A = [   A A Equações das partir A Onde Onde pela E é matrizdefinida A A Onde de Transformada da derivada transformada uma é DCT A    Transformada decossenos discreta 2 1  2 1 Figura 11 Figura 2 1 2 1   · · ·  cos cos cos · cos i A A X Y e é a matriz de saída é a matriz T transformada coeficientes da a matriz de é entrada a matriz de é   A étransposta a matriz  0 3 2    n 8 · 8 8 · exemplifica o funcionamento desta transformada. É possível notar que o que notar possível É transformada. desta funcionamento o exemplifica j   representa o número de linhas ou colunas dobloco. linhas onúmerooucolunas representa de ersna oiã o eeet a mti lna e coluna, e (linha matriz na elemento do posição a representam          2 1 2 1 2 1 A 2 1    ij 2 · · · · = , , cos cos cos cos 3 C

e e Y C C i     · quação quação 0 9 6 3 4  =   i i  cos 8 8 8 · obtém-se a seguinte matriz de coeficientes para aplicar para coeficientes de matriz seguinte a obtém-se · · ≠ =    A 0 0   = =    ·  X 2j   2     ·  2n  . 1 n 2 n A    1 2 1 2 1 T   2 1  1   2 ·  · ·

i · · cos cos · cos cos       15 10 0 5

 8 8 8 · · ·      

      2 1 2 1 2 1   2 1  · · Fourier · · cos cos cos cos

    21 14 0 7  8 8 8 · cujo objetivo é objetivo cujo · ·      

]

1 define a define ( ( ( ( ( 5 4 3 2 1 41 ) ) ) ) )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) 2010 ( transformações das computacional custo do diminuição a para contribui inteira aritmética em transformadas das implementação a disso, Além aproximados. valores de utilização da necessidade a eliminar a forma de limitada, precisão com inteira codecs aritmética outros (e H.264 com implementação à o adequado algoritmo um definindo entanto, problema esse abordaram No recentes) aproximações. dessas impacto o minimizar para no aproximações usadas predições diferentes na saídade decodificação. distorção doprocesso resultando como referência, entre discrepância certa adotadas uma haver forem pode decodificador, no Se e codificador irracionais. fatores de aproximações ). Considerando-se as definições definições as Considerando-se Onde em definida transformada matriz da A medidas diferentes adotaram MPEG-4 ou MPEG-2 o como anteriores, Padronizações de uso o requerem transformada dessa implementações observar, pode-se Como Figura Figura 11 Bloco de entrada Bloco DCT(a) e da resultado2003). (b) (RICHARDSON, A c = b = [ = a b a  c   2 1  1 − − 2 1 a  a , c · b a =  6 cos · , cos 2 1 7 − − , b a  8 a c 5 3  e  pode ser reescrita da seguinte forma: da podereescrita ser 8 · 8  − − 9   a a obtém-se: c b

]

HUSEMANN et al., et HUSEMANN ( ( ( ( 9 8 7 6 42 ) ) ) )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) tanto no decodificador quanto no laço de realimentação do codificador. A DCT inversa é inversa DCT Equação pela definida A codificador. do realimentação de laço no quanto decodificador no tanto compensados a quantização.durante são escala de fatores estes entanto, no DCT, da implementação na calculada matriz na correspondente elemento Y = Onde original, domínio seu o para dados os transformar para necessária é inversa DCT A fatores Os Onde em: podefatorada ser que  [ 1 1 2 1 Y − − ⊙ A A Y X = 1 1 1 2 é a matriz transformada é a matriz T transformada coeficientes da a matriz de é a matriz recuperada é A é a matriz A étransposta a matriz a infc qe aa lmno d arzmatriz da elemento cada que significa · − − e e X 2 1 1 1 b · 15 A da matriz da matriz − − T . 1 1 = 1 2 Y ] [ · c a b a = [ 1 1 1 1 A − − · c a E − − X b a 1 2 são aproximados para simplificar a implementação. simplificar a para aproximados são X 2 1 · E A − − b = . Essa multiplicação ponto-a-ponto não é efetivamente é não ponto-a-ponto multiplicação Essa . b a T = − − a a c = A 1 1 =  1 1 T   · C − 2 1 − Y 5 2 a a − − b · c  1 2 · X 1 2 ] A · ] · X  C ⊙ · T [ [    a a a a ⊙ ab ab a a 2 2 2 2 E − −   c b b c   C · X · C · X · C ab ab b² b 4 2 4 2 − − 2 a a   a a   − − ab ab a² a b c 2 2 c b 2 ]   T

  mlilcd pelo multiplicado é ab ab b² b² 4 2 4 2   ] ( ( ( ( ( ( 15 14 13 12 11 10 43 ) ) ) ) ) )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) nes,d fraaotr prço nes euvlne rslad n qaã Equação na resultando equivalente, inversa inversa. na quantização serácompensada analogamente, ponto-a-ponto, multiplicação operação a obter a forma de inversa, luminância, é apresentada na E na é apresentada luminância, de bloco (b). (a) e luminância de crominância DC dos osdentro macroblocos destaca componentes pela o crominâncias, processadas de serem macrobloco a um A crominâncias. nas subamostragem de utilização à devido 2x2, é DC componentes DC de caso componentes No de Hadamard. 4x4 de transformada bloco um em resulta 4x4 de amostras) blocos (16 luminâncias de macrobloco um exemplo, Por 2003). (RICHARDSON, homogêneas áreas em compressão a aumentar forma de DCT, da cálculo o após blocos dos 3.4.2.2 Figura Figura eiiã arca a tasomd e Hdmr, alcd s aota de amostras às aplicada Hadamard, de transformada da matricial definição A DC coeficientes aos Hadamard de transformada da aplicação a define H.264 padrão O transformada à aplicadas são direta transformada na feitas considerações mesmas As X Transformada de = 12 A T Macroblocos crominância e de luminância com componentes DC destacados · X · A = [ 1 1 1 1 − Hadamard −  2 1 1 1 2 1 quação quação  − − 1 1 1 1 17 − . −  1 2 1 (MAJOLO, (MAJOLO, 2010). 2 1 1  ] · X · [ 2 1 1 1 1 − − 2 1 1 1 1 − −  1 1 1 2 1  − −  1 1 2 1 1  ] Figura 12 Figura 16

( 16 . A . 44 )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) bloco de 16x16luminâncias;bloco de ofcets otds pls tasomds rsla n euã a ifraã e, informação da dos a faixa reduzir valores redução na resulta transformadas dos na compressão dados. consequentemente, pelas obtidos coeficientes blocos aos 2x2de crominâncias. Hadamard aplicada inversa de inversa. a quantização durante éentanto, compensado da Equação manipulação atravésobtida da 18 3.4.3 . aro H24 cna cm u óuo qatzdr eclr uniaã dos quantização A escalar. quantizador módulo um com conta H.264 padrão O Equação à aplicado procedimento mesmo O Equação na oito por divisão A é luminâncias) de 4x4 blocos (para Hadamard de inversa transformada da equação A Onde Equação pela definida é transformada a crominâncias, de amostras às aplicada Quando Onde A quantização consiste, basicamente, de uma divisão por valor inteiro, de maneira a maneira de inteiro, valor por divisão uma de basicamente, consiste, quantização A Quantização Y X X Y Y X L C L L é a matriz que contém o resultado da transformada. oresultado contém a matriz que é é matriz 4x4 dos coeficientes DC resultantes da execução da DCT em um em DCT da execução da resultantes DC coeficientes dos 4x4 matriz é L é a matriz com os valores DC resultantes da DCT aplicadacrominâncias DCT às DC da comresultantes valores os é a matriz é a matriz com os resultados obtidos pela transformada de Hadamard. transformada obtidos pela com resultados os é a matriz L = =   2 1 8 1   · [ · [ 1 1 1 1 1 1 1 1 (RICHARDSON, 2003). Y X − − − − 1 1 L C 1 1 1 1 = = 1 1 [ [ 1 1 − − 1 1 − − 1 1 1 1 1 1 1 1 − − 1 1 19 1 − − 1 − − ] 1 1 ] não é realizada no cálculo da Hadamard inversa, no inversa, Hadamard da cálculo no realizada é não 1 1 · 1 1 · 1 1 X ] Y 17 ] · C C · X Y , resultando em:, resultando · · [ [ L L 1 1 1 1 · · [ [ 1 1 1 1 1 1 1 1 − − 1 1 1 1 18 − − − − 1 1 ] ] 1 1 1 1 1 1 resulta na equação para transformada para equação na resulta

− − − − 1 1 1 1 1 1 1 1 − − − − 1 1 1 1 1 1 1 1 ] ]

( ( ( ( 20 19 18 17 45 ) ) ) )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) Equações Equações pela definida compensada ser precisando implementada, da variável éatravés feita Essacompensação a quantização. durante é não transformada daquela oriunda escalar Fonte: RICHARDSON, 2003 divisões e (RICHARDSON, 2003). flutuante ponto com cálculos como, custosas operações de necessidade a evitar o unidades doQP, pelo Parameter assumidos ser podem que valores do valor do (MAJOLO, 2010). docodificador configuração determinação A arredondamento. no Qstep Qstep Qstep QP QP maior a compressão atingida e, consequentemente, maior a perda de informação gerada informação de perda a maior consequentemente, e, atingida compressão a maior Como foi mencionado na subseção sobre a transformada DCT, uma multiplicação uma DCT, transformada a sobre subseção na mencionado foi Como na apresentada é relação Essa do determinação A parâmetro O Onde é: a quantização que define básica equação A 0,625 13 ... Q) eaã nr o entre relação A (QP). 0 e round Qstep X FQ Tabela 4 Tabela 14 0,6875 é ovalor aquantizado; ser é 18 . é o resultado da quantização; é oresultado 5 1 Qstep é o passo de quantização; é opasso é uma função que aproxima o valor para o inteiro mais próximo. para ointeiromais queovalor aproxima uma função é Qstep 0,8125 eutnon qaã Equação na resultando , é multiplicado pordois. é multiplicado ... 2 determina a intensidade da quantização, ou seja, quanto maior o maior quanto seja, ou quantização, da intensidade a determina Qstep FQ 0,875 FQ Tabela Tabela 10 24 ij 3 = é realizada indiretamente através de uma tabela com 52 com tabela uma de através indiretamente realizada é ij = round Qstep round Tabela 3 Tabela 3 ... quantização.Passos de 1 4  e QP é a seguinte: para cada incremento de seis de incremento cada para seguinte: a é QP e X  ij Qstep Qstep 1,125 · 20 30 X . A utilização desta tabela foi adotada a fim de fim a adotada foi tabela desta utilização A . Qstep 5 ij PF 22 u ã neao eo pelo indexados são que ,  1,25 svráesvariáveis As . ... 6 

Qstep 1,37 40 36 5 7 m pso iprat na importante passo um é 1,62 ... 5 8 1,75 Post-Scaling Factor Post-Scaling 80 42 a 9 e b 10 ... são definidas nas definidas são 2 2,25 160 48 11 Quantization 2,5 12 ... (PF), ( ( 224 51 22 21 ... 46 ) )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) Equação Equação uma aproximação do valor original, que depende do parâmetro QP. Este parâmetro terá o terá parâmetro Este QP. parâmetro do depende que original, valor do aproximação uma é recuperado causa perdas,ovalor procedimento que é um Como a quantização valor anterior. Fonte: RICHARDSON, 2003. Onde épor: expressa inteira, em final, aritmética equação A Onde termo o bits, de deslocamento por divisões substituir de fins Para Por fim, apresenta-se a definição da quantização inversa, que serve para recuperar o recuperar para serve que inversa, quantização da definição a apresenta-se fim, Por QP 5 4 3 2 1 0 22 pode ser substituído por: podesubstituído ser (0,0), (2,0), (2,2) e (0,2) (0,0), (2,0),(2,2)e sign direita; para binário >> é odescolocamento f é 2 sendo qbits na definido MF de multiplicação é ofator é a função que acessa o sinal donúmero. que acessaosinal é a função qbits é definido por é Posições floor /3 para blocos da predição intra e 2 blocosintra da predição /3 para 10082 11916 13107 7282 8192 9362 ∣  a função que realiza o arredondamento para baixo. oarredondamento função que realiza a FQ Tabela Tabela Fonte: RICHARDSON, 2003. ij qbits sign  ∣ Tabela Tabela = (1,1), (1,3), (3,1) e (3,3) (1,1), (1,3),(3,1)e (2,2) (0,0), (2,0),(0,2)e 4  ∣ para posição.PFValores cada de  = Qstep  FQ X PF 15 Posição (i, j) ij 5 (1,1), (1,3), (3,1) e (3,3) (1,1), (1,3),(3,1)e ij   multiplicação.Fator de ∣  · Outras = = MF floor sign 2 MF qbits  Posições   2893 3355 3647 4194 4660 5243 f QP X 6 

≫ ij   qbits

qbits Tabela 5 Tabela ab/2 b²/4 PF a² /6 para blocosinter; da predição /6 para

; Outras posiçõesOutras 4559 5243 5825 6554 7490 8066 F// PF Qstep ( ( ( ( 26 25 24 23 na 47 ) ) ) )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) mesmo valor na quantização direta e inversa. A equação da quantização inversa para os para inversa quantização da equação AC componentes A inversa. e direta quantização na valor mesmo 7 de movimento.da estimação A diferencial. codificação pela obtidos primeira. da imagem a partir construir a segunda necessáriospara realmente dados de quantidade a reduzir para explorado ser pode que o quadros, dois os entre diferença originais. doisquadros subtração os da entre simples através quadro é obtido 14 previamente dados em baseando-se quadros temporal, quadro(RICHARDSON, estimado obter a2002). fim um os processados de modelo entres do partir algo similaridades A as adjacentes, naturais. aproveitam-se vídeo temporalmente de quadros sequências em em comuns redundantes relativamente dados remover e encontrar Coeficientes AC são aqueles que possuem frequência diferente de zero. sãoque AC diferente aqueles possuem frequência Coeficientes 3.4.4 a ilustra a similaridade entre os dois quadros através da codificação diferencial, ou seja, o seja, ou diferencial, codificação da através quadros dois os entre similaridade a ilustra a A utilização das técnicas de estimação de movimento possibilitam reduzir os resíduos os reduzir possibilitam movimento de estimação de técnicas das utilização A há não que em regiões as indica predominante acinzentado tom o figuras, Nas A de objetivo o com vídeo do temporal modelo no trabalha movimento de estimação A Onde expressapela DC componentes equação os é inversa para quantização A Onde Estimativa demovimento Figura 13 Figura >> é deslocamento binário para binário direita.>> é deslocamento floor QP V FQ X' ij ij é uma constante definida em definida constante é uma 7 é ovalor recuperado; é de luminâncias é definida em éem definida de luminâncias é o parâmetro de quantização. é oparâmetrode ij X é ovalor quantizado; é é operação que arredonda o número para baixo; onúmero quepara arredonda operação é apresenta dois quadros temporalmente consecutivos no vídeo. Já a a Já vídeo. no consecutivos temporalmente quadros dois apresenta ' ij = [ X FQ ' ij = ij · V X FQ V 0,0 ' ij ij = ij = · · 2 Qstep V FQ  1 − 0,0 floor Figura 14 Figura ij · 2 · · V   floor PF QP ij · / 6 2  28 ij  QP   · ] QP 27 64 ≫ ; / 6 b ilustra o resíduo obtido após a realização a após obtido resíduo o ilustra b /  . 6    QP

para QP >=para 12 QP

/ 6  para QP 12 < para 29 . Figura ( ( ( 29 28 27 48 ) ) )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) blocos de tamanho variável, interpolação de valores intermediários (atingindo resolução de resolução (atingindo intermediários valores de interpolação variável, tamanho de blocos vídeo. um de codificador em computacional complexidade maior a contém que módulo CHEN; o é interquadros (PURI; codificador o Segundo 2004) LUTHRA, interquadro. predição a constitui movimento de compensação a subseções nas detalhados seguintes. que serão de similaridade critérios em e casamento), (melhor atual bloco o com similaridade maior a possui que bloco (PORTO, 2008). de movimento) (compensação no incluído é vetor bitstream Este predição. na usada região da posição a define que movimento de vetor um e selecionado bloco o e atual bloco o entre diferença a apenas codificar possa-se que de fim a processado, sendo está que macrobloco ao assemelha se mais referência de quadros Figura Figura A A o encontrar visam que busca, de algoritmos em baseia-se movimento de estimação A dos bloco qual de determinação pela dá se movimento de estimativa da obtenção A O padrão H.264/AVC inovou na predição interquadro ao inserir a possibilidade de possibilidade a inserir ao interquadro predição na inovou H.264/AVC padrão O e fra a prii o dcdfcdr a raiaã o poes inverso processo do realização a decodificador ao permitir a forma de Figura 15 Figura 14 Na esquerda, o Naesquerda, semestimativa resíduomovimento. de o Na direita, resíduo com Figura Figura ilustra o procedimento de estimativa de movimento, que em conjunto com conjunto em que movimento, de estimativa de procedimento o ilustra 13 Quadros consecutivos vídeo(RICHARDSON, de 2003). (a) (b) (a) estimativa de estimativa movimento 2003).(RICHARDSON, (a) (b) (a)

49

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) futuros) (RICHARDSON, 2003). quadros (incluindo referência de quadros múltiplos de utilização e pixel) de quarto ou meio direito ou realizando uma busca em formato de espiral ao redor de uma posição central, por central, posição uma de redor ao espiral de formato em busca uma realizando ou direito inferior canto no finalizando e esquerdo superior canto no começando formas, diversas de ser sobretodosos pode candidatos iteração de busca.A dentrotodos os da janela blocos possíveis subótimo 2008). (PORTO, de movimento um vetor de através busca de tempo do obterem de custo ao analisados, serem a candidatos de quantidade a diminuem que heurísticas diminuição uma obtém rápidos maior algoritmos os com lado, outro bloco ao correspondente movimento de Por candidatos. possíveis de datodosos análise através atual ao bloco em relação similaridade vetor o obtém ótimos algoritmos complexidade na quanto compressão, da (PORTO, 2012). docodificador computacional eficiência na tanto significativo, impacto tem pois importante, extremamente é busca de algoritmo um de escolha A objetos). em baseados aos oposição (em pixeis de blocos em baseados os são Em utilizados busca. mais algoritmos de os janela geral, chamada pré-definido tamanho de área uma de dentro realizada será 3.4.4.1 O algoritmo algoritmo O os rápidos: e ótimos algoritmos em divididos ser podem busca de algoritmos Os similaridade maior com bloco pelo busca a como especificam busca de algoritmos Os Algoritmos debusca Full Search Full Figura Figura (FS) é um algoritmo ótimo, pois compara a similaridade de similaridade a compara pois ótimo, algoritmo um é (FS) 15 2009).Predição interquadro (DINIZ, 50

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) bloco em uma amostra, conforme ilustrado na amostra, ilustrado uma conforme bloco em do borda da deslocamento do através obtidos são candidatos blocos diferentes Os exemplo. comparação entre a similaridade da posição central e de quatro blocos vizinhos. A A vizinhos. blocos quatro de e central posição da similaridade a entre comparação a realizada é tanto, Para anterior. etapa na determinada posição da redor ao refinamento um realiza SDS a momento, segundo Num central. posição na esteja similaridade maior de bloco o que até repete se procedimento Este encontrado. bloco melhor no localizada central posição nova uma em base com repetida será etapa esta diamante, do centro no estiver não resíduo menor no resultar que bloco o Se busca. de janela da central posição da redor ao candidatos Search busca: de padrões dois emprega algoritmo esse Usualmente, busca. de da janela dentro candidatos considerados blocos dos posição a determina formato Este diamante. de algoritmos dois abordados serão seguir a deste nocontexto trabalho: interesse literatura, na propostas busca a realizar de formas diversas as Dentre blocos. possíveis os todos testar sem seja, ou exaustiva, busca uma (SOARES, 2007). de paralelismo nível um é possívelgrande portanto, explorar dados, de dependência possui não algoritmo Este fim. este para arquitetura especialmente uma desenvolvida utilizada seja que menos a resoluções, altas de real tempo em codificação (LDS) e (LDS) ncamne a LS cmaa a iiaiae nr lc ta oe blocos nove e atual bloco o entre similaridades as compara LDS a Inicialmente de formato um em busca a realiza que rápido algoritmo um é DS algoritmo O fazer sem mesmo movimentos de vetores bons obter tentam rápidos algoritmos Os requerem que práticas aplicações em empregado é dificilmente FS algoritmo O Small Search Diamond Figura Figura 16 Algoritmo Algoritmo busca de completa 2012) (PORTO, Diamond Search (SDS) Figura 16 Figura (ZHU;MA, 2000). (DS) e . Logarithmic Search Logarithmic Large Diamond Large (LS). Figura 17 Figura 51

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) pequeno. diamante“S” do e grande diamante do parte fazem “L” posições As procedimento. este ilustra relação ao algoritmo de busca completa (PORTO, 2012). No padrão de busca LS ocorre a ocorre LS busca de padrão No 2012). (PORTO, completa busca de algoritmo ao relação em comparada, e calculada similaridade a terem a candidatos blocos de número o vezes 150 de cerca média, em diminui, DS algoritmo o Entretanto, desempenho. do análise a dificulta emdestacado negrito. é similaridade maior com bloco o busca da iteração cada para dado, exemplo No inicialmente. anteriormente bloco de vetor do no predição. da a realização movimento para resulta redor etapa nesta ao similaridade menor posições com bloco oito O testadas. as são selecionado sequência, Na um. melhor valor o ao Quando passo chegue o posição. que até dois, nova por dividido é nessa passo do valor repetido o central posição é na ocorrer casamento procedimento o e anterior etapa na o encontrado bloco é melhor no posicionada é S origem a seguinte, etapa onde Na inicial. passo do vertical, valor na e horizontal na origem da pixeis S a blocos quatro e 0) (0, posição Figura Figura A quantidade de iterações executadas na LDS depende do vídeo em questão, o que o questão, em vídeo do depende LDS na executadas iterações de quantidade A A a candidatos: blocos cinco com atual bloco o compara inicialmente, LS, algoritmo O Figura 18 Figura 17

Large Large Diamond Figura Figura ilustra o funcionamento do algoritmo LS com o passo S valendo dois valendo S passo o com LS algoritmo do funcionamento o ilustra 18 Algoritmo Algoritmo busca de logarítmica 2002).(RICHARDSON,

Search (LDS) e(LDS) Small Small Diamond

Search (SDS) 2008) (PORTO, 52

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) uma dependência de dados entre os blocos de um mesmo quadro, o que dificulta a utilização a dificulta que o quadro, mesmo um de blocos os entre dados de dependência uma cria-se forma dessa entanto, No semelhante. movimentação ter a tendem vizinhos blocos que de fato o seja, ou espacial, localidade a explora ideia Essa atual. quadro do adjacentes blocos nos encontrados movimento de vetores nos baseando-se busca da pode-se inicial posição a determinar exemplo, Por 2001). (TOURAPIS, obtidos previamente movimento de vetores de (0,0)através a busca diferentede para posição deinicial uma determinação como e LS é DS a caso. em e varia cada efetuadas iterações de quantidade da depende necessárias comparações de número o situação: mesma bloco 2012). (PORTO, do energia da aproximação boa uma em resultar em e simplicidade sua a devido movimento (RICHARDSON, 2002). (MSE), literatura: na propostos foram critérios Diversos pixeis. de blocos dois quadro. um mesmo dentro de blocos de nível em paralelismos o possibilita mas, quadros, os entre uma dados de cria dependência abordagem Essa semelhante. movimentação quadros possuam em adjacentes bloco mesmo temporalmente o que de premissa na baseia-se ideia Essa temporal. localidade da exploração a seja, ou processados, previamente quadros de proveniente dados de partir a bloco. de nível em paralelismo de 3.4.4.2 Onde Equação A entre semelhança de grau o determinar para usados são similaridade de critérios Os rápidos busca de algoritmos a conjuntamente empregada vezes muitas técnica Uma en Aslt Error Absolute Mean Critérios desimilaridadeCritérios R C N ij ij édobloco otamanho é o pixel na posição opixel na é é o pixel na posição na éposição opixel 30 define o cálculo do SAD, que é usualmente empregado na estimativa de estimativa na empregado usualmente é que SAD, do cálculo o define SAD ME, (MAE), = Uma outra alternativa é escolher a posição inicial de busca de inicial posição a escolher é alternativa outra Uma N ∑ i = − (i,j) (i,j) 0 1 N ∑ j = − do bloco de referência dobloco de do bloco atual dobloco u f Aslt Differences Absolute of Sum 0 1 ∣  C ij − R ij  ∣

(SAD) Mean Square Error Square Mean nr outros entre ( 30 53 )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) serão corrigidas as diferenças entre o quadro original e o quadro estimado, utilizando oquadro utilizando estimado, oquadro originale oquadro entre diferenças as serão corrigidas de a estimação tanto, pela Para gerados parâmetros predito. os bloco movimento 2006). (AZEVEDO, obter o necessita obter movimento para de codificados compensação previamente blocos os atual dentre o com semelhantes mais blocos os movimento, de estimação pela obtido movimento com GPUs, atuando como coprocessadores, para a implementação de um codificador de vídeo um de codificador implementação de para coprocessadores, a com como GPUs,atuando duas referência. nas obtidos de implementação à ganhos relação em vezes Os cinco de torno definição). em ficaram propostas alta implementações de vídeos em qualidade consequências na (com algoritmo insignificantes no alteração uma necessária é vizinhos macroblocos dependências entre as eliminar para entanto, No macrobloco. de nível em paralelismo o explora alternativa outra A 4x4. blocos de nível em paralelismo maior um alcançar de fim a predição de modos dois eliminados foram implementação, primeira Na GPU. em H.264 codificador o alcançável. de paralelismo nível diminuiriam que interdependências eliminar de fim a predito vetor do aproximação uma utilizada foi entanto, no algoritmo, do execução na gasto tempo no vezes 56 de diminuição uma foi obtido resultado O CUDA. utilizando H.264 padrão do movimento de estimação de os resultados. que limitaram a destacada Foi barramento todo. do banda de largura pequena a e latência alta um a pois vídeo, como de placa a e CPU aplicativo a entre dados de o transferências as minimizar de importância analisado se diluídos severamente são resultados esses entanto, No implementação. da específicas partes em velocidade de ganhos significativos obtiveram e CUDA, tecnologia a utilizando MPEG-2, codificador do referência residual. 3.5 3.4.5 Trabalhos relacionadosTrabalhos Ren et al. (2010) al. et Ren (2009) al. et Chan al. et Sprandlin seguida, Em predito. quadro no base com reconstruído inicialmente, será, vídeo O de vetor do partir a encontrar, objetivo por tem movimento de compensação A Huang, Shen e Wu (2009) Wu e Shen Huang, Compensação demovimento ( propuseram duas implementações do módulo de predição-intra do predição-intra de módulo do implementações duas propuseram 2009) avaliaram a viabilidade de paralelizar a implementação de implementação a paralelizar de viabilidade a avaliaram 2009) demonstraram a viabilidade de implementar o algoritmo piramidal algoritmo o implementar de viabilidade a demonstraram estudaram a utilização de CPUs multi núcleo em conjunto em núcleo multi CPUs de utilização a estudaram PCIe foram apontadas como fatores como apontadas foram 54

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) H.264 na GPU, através da qual é explorado o o do explorado é movimento qual de da através estimativa GPU, a na H.264 implementada é fim, Por GPU. e CPU entre módulos dos particionamento e estruturação da acerca literatura da revisão uma faz trabalho Este vídeo. à comparado se desempenho melhor em na resultou completa CPU multi utilizando núcleo. implementação busca GPU de na algoritmo movimento do de execução estimativa a que apontaram obtidos resultados Os elas. entre dados de transição a GPUs) e (CPUs e arquiteturas duas as entre tarefas das divisão a estudada Foi escalável). codificação de técnicas com H.264/AVC do (extensão H.264/SVC do algoritmo de busca completa.do algoritmo de implementação na vezes 600 de velocidade de ganho um obtendo movimento, de estimativa de possível dados à GPU. paralelismo máximo o expor de importância a destacada foi e GPU da utilização a com rápida mais vezes três de cerca execução de resultados a levam experimentos Os obtida. qualidade otioMonteiro (2010) al. et Cheung t a. al. et 21) epoaa s a aqieua CD o cnet da contexto no CUDA arquitetura da uso o exploraram (2011) investigaram o uso de GPUs para codificação e decodificação de decodificação e codificação para GPUs de uso o investigaram trade-off entre os ganhos de velocidade e a e velocidade de ganhos os entre 55

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) otxo d oiiaã e vdo aa tno tlzus enlga NII CUDA, NVIDIA tecnologia a utilizou-se trabalho. capítulo nosegundo deste apresentada tanto, Para vídeo. de codificação no da coprocessadores contexto como NVIDIA, da vídeo de placas nas presentes GPUs, de utilização 2009). (DINIZ, resolução alta de vídeos para especialmente real, tempo em codificação a executar de capaz sistema um de implementação a desafiadora torna característica Essa significante. é anteriores dos algoritmos relacionados à codificação intraquadro e codificação interquadro. codificação e intraquadro à codificação relacionados dos algoritmos estudo o etapas: duas em dividido foi trabalho deste desenvolvimento O intraquadro. predição própria a e computacional) módulo de chamado ser pode que o compõe juntas (que inversas e diretas quantização e transformadas as destacam-se vídeo, do quadro um de dentro espaciais seja, ou interquadro, predição redundâncias das exploração na lado, outroPor vídeo. do temporais redundâncias as exploram na situam-se técnicas Essas movimento. de compensação (2005) et al. de a módulossegundo avaliação principais doH.264, dos computacional complexidade A 2003). (HOROWITZ, executadas operações de número ao aproximadamente equivale que o módulo, cada por necessário processamento de tempo o consideram análises as geral, Em literatura. na encontrados trabalhos diversos em analisada H.264. codificador do referência de implementação a da estudo necessária o e previamente faz-se apresentada literatura isso, de revisão Por paralelas. arquiteturas em implementação à apropriados são 4 DESCRIÇÃO DOSISTEMA DESENVOLVIDO Pode-se notar claramente que a parcela mais significativa localiza-se na estimativa e estimativa na localiza-se significativa mais parcela a que claramente notar Pode-se foi H.264 codificador do módulos diversos dos computacional complexidade A que vídeo de codificação de algoritmos dos identificação a foi importante ponto Um padrões aos relação em H.264 padrão no computacional complexidade na aumento O . Tabela Tabela Inserido nesse contexto, o presente trabalho consiste na investigação da investigação na consiste trabalho presente o contexto, nesse Inserido Fonte: ZHANG et al., 2003. Fonte: et ZHANG 6 Complexidade dos codificador do módulos H.264. Predição intraquadroPredição T / Q T T ME / MCME / Módulo Outros Filtro -1 / Q / -1 Complexidade % Complexidade 81,78 Tabela 6 Tabela 6,62 0,82 5,29 5,49 apresenta o percentual da percentual o apresenta Zhang 56

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) relação do módulo computacional com as demais etapas doprocesso. demais as etapas com computacional domódulo relação pela predição intra. predição pela utilizados serem a referência de macroblocos os fornecendo realimentação, de fazem laço do etapas parte últimas três as Já entropia. de codificador ao fornecida é que coeficientes de A função. poresta sequencialmente executadas são luminâncias. etapas as que apresenta de macrobloco um compõe que 4x4 blocos 16 os processar por as um quadro dentro dovídeo. de espaciais redundâncias explora que codificação de ferramentas das uma é módulo Este computacional. módulo da estágios os dentre nomódulo computacional. oparalelismo intraquadro, explorar, codificação por optou-se a trabalho, deste (AGOSTINI, é contexto intra no latência Portanto, computação 2007). de essa algoritmos diminuir nos encontrado para paralelismo alternativa do exploração Uma intraquadro. codificador ao latência um T/Q/T estágios dos oriundos dados dos depende 4.2 4.1 pipeline Codificação intraquadro Algoritmos decomputaçãointra As três primeiras etapas fazem parte do processo de codificação e resultam na matriz na resultam e codificação de processo do parte fazem etapas primeiras três As função uma implementada foi caso, de estudo deste contexto No o compõe conjunto em inversas e diretas quantização e transformadas de blocos Os predição-intra A intra. codificação de laço no localizado está computacional módulo O pela apresentada é intra codificador do arquitetura A Figura Figura nr sa tps o se mtv óuo cmuainl aiin uma adiciona computacional módulo o motivo este Por etapas. estas entre 19 codificaçãointraquadro, de Processo de adaptada2009). (DINIZ, -1 /Q -1 , o que inviabiliza a implementação de implementação a inviabiliza que o , Figura 19 Figura , que também ilustra a ilustra também que , kernel responsável Figura 20 Figura 57

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) needni e cd oiã a mti m rlço a eas á o sgno tp de tipo segundo o Já demais. as especificamente mais codificação, de laço relação do dentro tarefas diferentes a refere-se paralelismo em matriz da posição cada de à devido independência possível é Isto algoritmo. cada de dentro executadas operações das paralelização combinadas em um menor número de transações de acesso à memória global. Após isto, a de disponibilizar dados saída. os novamentepara é acessada só memória global isto, Após global. memória à acesso de transações de número menor um em combinadas cada Como threads de espécie uma como utilizada foi veloz, mais acesso possui que compartilhada, memória a motivo, este Por acessos. deste latência alta à devido A Figura 21 codificado. sendo estiver que vídeo do tamanho o com acordo de calculadas são blocos, do dimensões as Já imagem. da macroblocos os para threads próximos está os macroblocos. processando já computacional módulo o enquanto entropia de codificador ao quantizado macrobloco um de fornecimento o Um ponto importante é a minimização da quantidade de acessos à memória global memória à acessos de quantidade da minimização a é importante ponto Um do execução a organiza proposta implementação A à deve se deles primeiro O paralelismo. de tipos dois explora proposta solução A quando alocado para execução em um SM copia um macrobloco da memória global. memória da macrobloco um copia SM um em execução para alocado quando mapeados diretamente foram CUDA arquitetura da tridimensionais blocos os seja, ou , apresenta uma visão geral do funcionamento do dofuncionamento visão geral uma apresenta Figura Figura thread 21 copia o seu respectivo elemento do macrobloco, essas cópias podem ser podem cópias essas macrobloco, do elemento respectivo seu o copia Arquiteturapropostausandopara NVIDIA módulo computacional GPUs Figura Figura 20 Etapas do módulo computacional. do Etapas módulo (HUSEMANNetal.,2011b). cache grid kernel

kernel , que definem a quantidade de quantidade a definem que , . Dessa forma, cada bloco de bloco cada forma, Dessa . proposto. em blocos com 16x16x1 com blocos em 58

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) uma das etapas constituintes do módulo computacional na arquitetura CUDA. na arquitetura domódulo computacional constituintes uma etapas das resultados os com transferências duas as e vídeo inversa). DCT e saída da doprocessoquantização GPU (saída pela de calculados de placa a para entrada de dados dos único um 2009) barramento pelo criado gargalo ao devido GPU, e CPU entre matrizes que definem a transformada também foram armazenadas na memória de constantes. na memória de armazenadas também aforam transformada quematrizes definem as e matrizes de multiplicações calculadas são também pois DCT, na utilizada àquela similar Equação na apresentado que possuem valores distintos. que a definem transformada, threads diversas que evita Isto, memória. da distintas posições acessem simultaneamente, processados são que quadro, do 4x4 blocos 16 os que de fim a dimensão, foicada em vezes DCT quatro replicada da 4x4 matrizes matriz A as 16x16. dimensões H.264, possuem no constantes de 4x4 memória blocos na definidas para calculada seja DCT a Embora abordagem. nesta necessárias tabelas as todas armazenar para suficiente capacidade possui e acesso, de latência com acesso possui memória essa que de fato ao deve se escolha da memória. armazenadoem também foi da transposição resultado o requer multiplicação resultado o necessárias, operações segunda de número o diminuir de fim a A matriz. dessa transposição entanto, no matriz, dessa direto uso faz multiplicação primeira A memória. em armazenada foi transformada, da definição da através Equação na definido 4.2.2 4.2.1 . Portanto, a arquitetura proposta realiza todas as seis etapas listadas anteriormente em anteriormente listadas etapas seis as todas realiza proposta arquitetura a Portanto, . A Transformada de Hadamard também pode ser expressa em termos matriciais, como matriciais, termos em expressa ser pode também Hadamard de Transformada A matrizes das exceção com direta, DCT à idêntica é inversa DCT da implementação A Essa constantes. de memória a foi matrizes essas armazenar para escolhido local O como matriciais, multiplicações duas de através realizada é DCT da implementação A cada de implementação da respeito a considerações feitas serão seguintes seções Nas dados de transferência a é CUDA arquitetura da utilização na crítico ponto outro Um Implementação Transformada da deHadamard posição a mesma na memória. de acessar na tentativa conflitem Implementação e DCTinversa da direta kernel , realizando apenas três transferências através do barramento PCIe: a cópia a PCIe: barramento do através transferências três apenas realizando , 1 peetd aSbeã Subseção na apresentada 17 , definida na Subseção Subseção na definida , 3.4.2.2 3.4.2.1 . A abordagem adotada nessa etapa é etapa nessa adotada abordagem A . . A matriz de coeficientes, obtida coeficientes, de matriz A . PCIe (HUANG; SHEN; WU, SHEN; (HUANG; PCIe cache , o que pode diminuir a diminuir pode que o , 59

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) processado. As posições vazias não são utilizadas no cálculo de Hadamard. nocálculode nãoutilizadas são Asprocessado. posiçõesvazias A as todas nem que de fato ao levando de o bloco 4x4. Entretanto, dimensões possuem transformada nesta envolvidas matrizes as DCT, pela obtido resultado do DC coeficientes os sobre opera as como ã iiíes pr qar ã qea u rcsa s cmoets D , portanto, e, DC componentes os processam que demais. diferentedas levemente rotina executam uma aquelas são quatro por divisíveis são forma de as 4x4 todas para igual bloco é não executado cada código o diferenciada, de DC componentes os trata quantização a Como macrobloco. parâmetro do de constantes. na memória foram armazenadas definição e escala de fatores multiplicação, de fatores os com tabelas Tabelas nas definidas constantes nas custosas. outras operações entre estaretapa inserida esta a devido circunstâncias nessas vantajosa ainda é operação a entanto, No ocioso. SP um cada pois reduzida, é SM do utilização da 4.2.3 Figura 22 Figura aa ua ds das uma Cada Equações nas baseia-se direta quantização da implementação de código O eficiência a processamento, do etapa nessa matrizes das reduzido tamanho ao Devido maneira a é Hadamard de Transformada da implementação da particularidade Uma Implementação Quantização da threads lsr eaã nr úeod da número o entre relação a ilustra foram relacionadas aos elementos do macrobloco. Como esta transformada esta Como macrobloco. do elementos aos relacionadas foram Figura Figura threads 22 Relacionamento das o boo é rsosvl pr qatzr u lmno do elemento um quantizar por responsável é bloco do threads 3 , 4 thread e estarão envolvidas na execução deste algoritmo. deste execução na envolvidas estarão 5 oa peetdsn usçoSubseção na apresentadas todas , que não foi utilizada nessa etapa equivale a equivale etapa nessa utilizada foi não que threads thread com os DC. componentes com e a posição do componente DC componente do posição a e threads threads . As As . foi definido com 16x16, com definido foi threads cujos índices cujos 25 3.4.3 e e Qstep . As . 26 60 e

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) forma que a quantização direta. a quantização forma que quando as da índice para o bloco em questão no quadro anterior, de forma a explorar a localidade temporal da temporal localidade movimentação. a explorar a forma de anterior, quadro no questão em bloco o para obtido movimento de vetor pelo determinada é busca da inicial posição a disso, Além SDS. uma GPU. em eficiente execução sua a tornar de fim a adaptações algumas realizadas foram entanto, no tradicional, algoritmo Outra um em à baseia-se utilizado busca de algoritmo o trabalho, apropriados presente No questão. em CUDA. arquitetura mais sejam tecnologia que algoritmos a diferentes de utilizando exploração na conhecido consiste alternativa, já algoritmo algum implementar em simplesmente, consiste, abordagem Uma GPU. em movimento de estimação a implementar o apresentam implementação. os de algoritmo propostoe detalhes seções próximas As um questão. em proposto arquitetura foi à adequado disso, busca Além de algoritmo CUDA. tecnologia em SAD de à cálculo levou do estudo implementação Esse paralelizáveis. procedimentos identificar para envolvidos algoritmos e busca de algoritmo 2012). (PORTO, de similaridade de cálculos quantidadesignificativa realizaruma necessita o executa módulo Este interquadros. predição na utilizados serem a blocos os determinam que movimento de vetores os obter seja, ou movimento, de estimativa a 4.3.1 4.3 • Codificação interquadros Portanto, o algoritmo proposto consiste seguintes nos procedimentos: oalgoritmo Portanto, busca a apenas emprega porém, DS, ao semelhante é proposto busca de algoritmo O de formas diferentes propuseram literatura, na encontrados trabalhos Diversos os estudados foram GPU da auxílio com vídeos de codificação o acelerar de fim A obter por responsável bloco o é interquadros codificador do dentro módulo principal O Equações nas baseia-se inversa quantização A no baseada código de trechos diferentes de execução a determina que condição Esta definição da posição central da busca como sendo a posição indicada pelo vetor de noquadro atual anterior; obloco movimento para encontrado vetor pelo indicada posição a sendo como busca da central posição da definição debuscaAlgorítimo proposto thread threads leva a ocorrência da divergência no fluxo de execução ( execução de fluxo no divergência da ocorrência a leva que divergem encontram-se nomesmo queencontram-se divergem 27 warp e e 29 . e é implementada da mesma da implementada é e branch divergence branch 61 ),

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) de SAD. cálculo do implementação na explorado pixel, de nível em paralelismo o é segundo o e busca, de algoritmo no explorado bloco, de nível em paralelismo o é primeiro O CUDA. arquitetura operações consecutivas: (i) obtenção da diferença absoluta para cada pixel analisado e (ii) e analisado pixel cada para absoluta diferença da obtenção (i) consecutivas: operações de busca proposto. oalgoritmo alcançada com quadro dovídeo) mesmo um (em demais aos relação em macrobloco um de independência a graças possível é situação Essa paralelamente. tratados macroblocos de quantidade a determinará utilizada GPU na presentes multiprocessadores de quantidade a seja, ou simultaneamente, executados no prevista macrobloco, H.264. do sub-blocos para movimento de vetores obter de possibilidade a implementada sido tendo não pixeis, 16x16 de blocos considera realizada implementação A GPU. da SM um por tratado é vídeo do bloco cada organização, nessa base Com codificado. sendo está que vídeo do resolução da função em dinamicamente calculado é blocos de grade 8x1) (16, de blocos em organizada foi execução A GPU. na executadas funções outras de partir a função uma em implementado foi SAD de cálculo 4.3.2 • • threads ruttr saáe a GU prie qe vro lcs d de blocos vários que permite GPU da escalável arquitetura A função uma em implementado foi proposto busca de algoritmo O da através paralelismo de níveis dois de exploração a permite algoritmo Este Além do algoritmo de busca é executado o cálculo do SAD, que é composto por duas por composto é que SAD, do cálculo o executado é busca de algoritmo do Além busca é executada novamente em torno da posição que apresentou omenor queSAD. apresentou torno da posição novamenteem busca é executada a contrário, caso fim, ao chegou busca a central, posição na estiver SAD menor o se na SDS,ilustrado conforme opadrãosegundo de busca central, posição da redor ao posições quatro em e central posição na SAD do cálculo Implementação estimação da demovimento , de forma que o cálculo de SAD utilize 128 128 utilize SAD de cálculo o que forma de , Figura Figura 23 algoritmode do Padrão busca proposto. __ device__ threads , de forma a poder ser invocada ser poder a forma de , Figura 23 simultâneas. O tamanho da tamanho O simultâneas. ; __ threads kernel sejam __ e o e __ 62

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) usad instrução a Portanto, instruções. de números maior um em traduzida seria C linguagem em operações dessas implementação A terceiro. o com argumentos primeiros dois dos absoluta nível baixo de instrução a utilizada foi operação essa implementar Para anterior. operação da resultados dos somatório procedimento de redução é ilustrado na é ilustrado de redução procedimento mesmo no as estão todas ativas que visto desnecessária é sincronização de função à chamada a redução) threads 32 com 128 opera com da redução estágio foi já redução da instrução estágio pela primeiro o realizado que por bloco, do tamanho o é que 256, de invés ao posições 128 tem vetor o verdade, (na redução de procedimento um de através implementado é somatório Esse somados. ser precisam que valores 128 com vetor um tem-se mesma etapas, duas dessas na final Ao e, anterior. etapa na bloco obtidas diferenças do as com pixeis resultado o primeiros soma-se operação, 128 dos absolutas diferenças as calculadas são seguir, a bloco, do pixeis últimos 128 dos absoluta diferenças as calculadas são inicialmente Equação executa as duas operações conjuntamente de maneira mais veloz. maneiramais duasde as conjuntamente operações executa o xml, cniead-e mcolcs d aro H24 (61 pixeis): (16x16 H.264 padrão do macroblocos considerando-se exemplo, Por Onde A 2 __usad(unsignedintx,y,z); 1 nrtno unoonmr ede número o quando Entretanto, . threads 31 Listagem 2 Listagem . z é o valor aacumulado ser z é ovalor de referência dobloco y é opixel atual dobloco x é opixel __device__ unsignedint e assim por diante. Entre os estágios é necessário sincronizar a execução das execução a sincronizar necessário é estágios os Entre diante. por assim e xb rttp afnã função da protótipo o exibe Listagem warp usad, usad , permitindo que todas sejam executadas simultaneamente. O simultaneamente. executadas sejam todas que permitindo , que recebe três argumentos e calcula a soma da diferença da soma a calcula e argumentos três recebe que ofreiutaopl pela ilustrado conforme usad 2 Protótipo da função daintrínseca usad.Protótipo threads = ∣ Figura 24  x ativas, o segundo opera com 64 opera osegundo ativas, − threads y  ∣  z . ativas é 32 ou menos (últimas etapas da etapas (últimas menos ou 32 é ativas

usad que executa o cálculo definido na definido cálculo o executa que Listagem 3 Listagem ). Portanto, o primeiro o Portanto, ). threads e oterceiro e threads ( 31 63 )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) eói oprihd. Dsa fra sa aivi oe e csaa o por acessadas ser podem global. a memória quantidadede acessos de além diminuira bloco de um mesmo participantes variáveis essas forma, Dessa compartilhada. memória uma posição. em serádeslocada posição acessada de busca,a iteração doalgoritmo do onde quadro de referência, pixeis aos acesso do natureza à devido apropriada particularmente é característica Essa 2D. localidade com dados a acesso para otimizada cache de estrutura possui que texturas, de memória na armazenados foram codificado ser a quadro o e referência de quadro O CUDA. pela apenas sequenciais. executadas são busca de janela da e quadro do limites os verificar para testes os e calculado SAD menor o possui que posição a qual determinar para necessárias comparações As proposto. busca de algoritmo do lógica Figura Figura 1 s vráes d otoe nie eutds itreiro oa ooaa na colocadas foram intermediários resultados e índices controle, de variáveis As arquitetura na presentes memórias diferentes de uso fez realizada implementação A da implementação a realizada foi similaridade de cálculo do implementação da Além 7 6 absDiff[idx+128]); 5 ref[idx], 4 3 0); 2 ref[idx+128], 24 de cálculo Procedimento redução SAD,adaptadono (NVIDIA,usado de de 2012). __syncthreads(); absDiff[idx] =__usad(cur[idx], absDiff[idx +128]=__usad(cur[idx128], threads Listagem vizinhas acessam posições adjacentes da memória e, a cada da memória acessam posiçõesadjacentes vizinhas 3 Primeira etapa da reduçãoPrimeiraetapada thread 00, dvd ee operações serem a devido (0,0), threads 64

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) comunicação entre aGPU. CPU entre e a comunicação de latência a reduzir a forma de pixeis) (16x16 H.264 macroblocos múltiplos os comportam As transferências de dados entre o PC e a placa de vídeo ocorrem em pacotes que pacotes em ocorrem vídeo de placa a e PC o entre dados de transferências As 65

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) ouets u cmõ a seiiaã anra Es sfwr é ipnblzd aos disponibilizado é software Esse norma. da especificação a compõe que documentos codificação. da de escalabilidade os conceitos ( escalável Coding Video Model Video aaea a ipeetço d eeêca s mdls d oiiao eee um recebem codificador do módulos os referência, de implementação Na paralela. arquitetura da eficiente uso fazer possa se que para grande suficientemente dados de conjunto em alcançadono módulo questão. dodesempenho emresultados termos obtidos, os avaliar e proposta solução da funcionamento o validar possível foi forma, Desta GPU. da através algoritmos destes aceleração a ativar compilação, de tempo em possível, sendo 9.19.9, na experimentação. utilizadas a GPU. programas que utilizem desenvolvimento de necessárias ao GNU/Linux operacional CUDA sistema o utilizado e Foi Ubuntu) (distribuição Ti. 560 GTX e GT 8500 NVIDIA vídeo: processador com computador (ITU, C++ linguagem 2010). na escrito é JSVM O implementações. diferentes com comparação para ou algoritmos novos padrão, do detalhes os estudar para base de serve e pesquisadores 5.1 5 RESULTADOS PRÁTICOS Integração dereferência com osoftware A implementação dos algoritmos em arquitetura CUDA foi integrada ao JSVM versão JSVM ao integrada foi CUDA arquitetura em algoritmos dos implementação A A um por composto é experimentação e desenvolvimento no utilizado ambiente O aos complemento de servindo JVT, pela desenvolvido é JSVM software O ( JSVM referência de software do uso fez realizada experimentação A otae JV rcsu sr aatd aa tra osvl epr à GU um GPU à expor possível tornar para adaptado ser precisou JSVM software O Tabela 7 Tabela HUSEMANN et. al. al. et. HUSEMANN u mlmnaocdfcdrH24SC(T,21) aropadrão O 2010). (ITU, H.264/SVC codificador o implementa que ) (SVC) é um anexo à norma H.264/AVC, que trata da codificação de vídeo de codificação da trata que H.264/AVC, norma à anexo um é (SVC) Largura do barramento (bits) dobarramento Largura (GB/s) da memória de banda Largura Clock Núcleos CUDA (unidades) Compute Tabela Tabela apresenta uma comparação das principais especificações das duas placas duas das especificações principais das comparação uma apresenta dos(MHz) núcleos Capability 7 Principais características duas Principais das placas utilizadas. Modelo da placa Modelo Intel Core 2 Quad 2 Core Intel 2010 toolkit ). No entanto, no presente trabalho não foram explorados foram não trabalho presente no entanto, No ). , que contém o compilador e demais ferramentas demais e compilador o contém que , , 2 GB de memória RAM e duas placas de placas duas e RAM memória de GB 2 , 8500 GT 12,8 128 900 1.1 16 GTX 560TiGTX 1645 256 128 384 2.1 Joint Scalable Joint Scalable 66

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) que os quadros precisam ser copiados para a memória da placa de vídeo, o uso de variáveis de variáveis de uso o vídeo, de placa da memória a para copiados ser precisam quadros os que Sendo bits). (8 255 a 0 de valores apenas assumem pixeis os abordados foram que codificador do trechos nos entanto, no bits, 16 de variáveis utilizadas são JSVM software No pixeis. os codificação.para outrosestágios os da vez por macrobloco um em resultados os fornecendo continuassem funções as que forma de mantida foi interface a entanto, No codificados. serem a macroblocos de conjunto um vídeo de placa à entregar a forma de inteiro, quadro um a acessar pudessem questão em módulos os que com fizeram realizadas alterações As resultados. os devolvem e processam macrobloco, 12x00 pxi) s tse oa xctds e us paa e vdo pr is de fins para vídeo de placas duas comparação. em executados foram testes Os pixeis). (1920x1080 ( CUDA). em originaldoJSVM) da e implementação na GPU (através (implementação CPU na computacional módulo do execução na quadro por médio tempo do comparação da a . comparação byte a uma foramos submetidos arquivos compressão, de processo do final Ao CUDA. tecnologia da uso fazendo implementada versão da e original JSVM do através codificado foi compressão sem vídeo de arquivo mesmo um osoftware naJSVM. GPU com da implementação a integração para realizar técnica utilizada uma ser por apenas citado sido tendo escopo, do além estar por trabalho, neste detalhado ser vai não ponto Esse resolução. alta de quadro um transformar para necessário tempo no vezes é (SSE2) transformação essa fazer das linguagem pra tempo o necessário em implementada diminua foi cópia a operação, nessa tempo gasto tempo alteração o diminuir de fim A considerável. essa o Embora barramento, vídeo. pelo de seriam placa transferência PCIe a barramento para envio pelo do transferidos antes bytes dos bits 8 de variáveis para vídeo de metade quadro o transformar por optou-se Portanto, desnecessários. que significa bits 16 5.2 Common Intermediate Format Intermediate Common Avaliação resultados dos módulocomputacional no intra . A implementação otimizada resultou em uma diminuição de aproximadamente 3,5 aproximadamente de diminuição uma em resultou otimizada implementação A . Dois cenários foram avaliados, o primeiro considerando-se vídeos em resolução 4CIF resolução em vídeos considerando-se primeiro o avaliados, foram cenários Dois através realizada foi proposta implementação pela alcançado desempenho do análise A forma: seguinte da efetuada foi implementações das funcionamento do validação A representar pra usado dados de tipo o foi adaptação de necessitou que ponto outro Um assembly aed s a tcooi tecnologia da uso fazendo ) (704x576) e o segundo considerando HD ( HD considerando segundo o e (704x576) ) temn ID Etnin eso 2 Version Extensions SIMD Streaming High Definition High 67 )

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) de milissegundos. ep eeeuã mdd. A ieeç nr a us etrs o úeo e ciclos de número o é leituras duas as entre diferença A medido. execução de tempo o ciclos de contador do atual valor o retorna instrução Essa RDTSC. instrução da através realizada foi com osoftwareoriginal. e integração implementação a para de detalhes os considera que ambiente um em obtidos escrito foram resultados os forma, Dessa GPU. código no utilizado formato o e JSVM pela esperado formato o entre dados dos formato o adaptam que rotinas em necessário tempo o considerado é disso, Além vídeo. barramento pelo transferências os inferiores. resultados explica que o acentuado, muito é memória a acesso no gargalo o paralelismo, de menor muito nível um fornecer GT 8500 placa a de além Portanto, maior. vezes dez é recente mais placa da memória da banda de largura Ti a disso, 560 Além MHz. GTX 1645 a a operando enquanto núcleos, 384 MHz, possui 900 de operação de frequência com execução de núcleos ambas resoluções. para lenta ficou mais execução a GT 8500 placa a com Já vezes. 3,9 de cerca de foi aceleração a HD vídeos para que enquanto vezes, 3,6 de cerca em acelerada foi 4CIF vídeos de compressão a Ti, 560 GTX Tempo deexecução Tempo deexecução Ganho obtido Ganho obtido ( A medição do desempenho que resultou nos tempos de processamento apresentados processamento de tempos nos resultou que desempenho do medição A as GPU, na execução de tempo o consideração em levam apresentados resultados Os 16 apenas possui GT 8500 placa a pois justificam, se desempenho de diferenças As tabelas As unidades em quadro por médios tempos de resultados os resumem seguir a tabelas As ticks Tabela ) da CPU. O valor do contador foi lido antes e depois da chamada da função a ter a função da chamada da depois e antes lido foi contador do valor O CPU. da ) Tabela Tabela 8 8 Comparação dos tempos dos Comparação paravídeos4CIF. deprocessamento e e 9 9 Comparação dosvídeo Comparação deprocessamento HD. tempos sintetizam os resultados obtidos. Com a utilização da placa de vídeo de placa da utilização a Com obtidos. resultados os sintetizam 208,71 ms 40,99 ms PCIe CPU CPU 1 1 e as cópias entre os espaços de memória na placa de placa na memória de espaços os entre cópias as e Configuração Configuração 303,57 ms 8500 GT 8500 GT 70,75 ms 0,81 0,58 GTX 560Ti GTX 560Ti 53,89 ms 11,27 ms 3,87 3,63 68

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) ae at a ipeetço d eeêca uiiaa eslas u es tp do etapa nessa que Ressalta-se utilizada. referência de implementação da parte fazem que algoritmos, dois outros com comparada foi que C++, linguagem em realizada implementação uma foi proposto algoritmo do qualidade da avaliação a possível tornar Para anterior. de número do partir a fim, transcorrido. otempo pode-sedeterminar doprocessador frequência Por função. da execução a durante transcorridos apresentam o PSNR (que é a medida objetiva da qualidade do vídeo resultante) para cada para resultante) componente da imagem. vídeo do qualidade da objetiva medida a é (que PSNR o apresentam (em analisado algoritmo do execução Mbps montada é candidatos de lista seja reduzido. de movimento paraovetor o tempo computar Essa busca. a para que isso com fazendo anteriores, blocos dos movimento de vetores nos base com previamente partida de ponto como utilizados serem a candidatos blocos possíveis de lista uma recebe que de exceção com coisa, mesma a searchfast a seguir (Xiph,2012). brevemente são descritos Os704x576 (4CIF). três vídeos utilizados rates bit diferentes três em algoritmos diferentes três experimentados foram configurações: diferentes adequados. são algorítimo osproduzidosse pelo resultados verificar apenas é objetivo o pois GPU, da utilização a há não trabalho, do desenvolvimento 5.3 e Avaliação debusca algoritmo do proposto A tabelas tabelas A chamados: são proposto algoritmo o com comparados algoritmos dois Os utilizando vídeos, três de conjunto um de codificação da através feita foi avaliação A capítulo no proposto busca de algoritmo do avaliação uma apresentada é seguir A • • • et xeiet oa tlzds vdo o m eouã intermediária: resolução uma com vídeos utilizados foram experimento Neste . Mbps 5 . O O . Crew City direção; nessa desloca se câmera a posteriormente e lado ao construção uma para aponta Harbour log searchlog : visão panorâmica ao redor da torre doprédio ao redor : visão panorâmica : tripulação de um ônibus espacial se dirigindo para dirigindo se oveículo. de um ônibusespacial : tripulação rsetvmne trer cln arsna otmo cnuio pela consumido tempo o apresenta coluna terceira A respectivamente. , 10 : um personagem conversa com a câmera e em determinado momento, determinado em e câmera a com conversa personagem um : , , 11 e e foi apresentado na revisão de literatura e o e literatura de revisão na apresentado foi 12 apresentam os resultados para as configurações de de configurações as para resultados os apresentam ticks e CU. A oua uto ic seis e cinco quatro, colunas As CPU). de Empire State fast searchfast ; é basicamenteé log search e search log 3 Mbps 3 ticks e da e , , 69 4

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) Harbour Harbour Vídeo Vídeo Crew Crew City City Tabela Tabela Tabela Tabela fast search fast search fast search fast search fast search fast search Algoritmo Algoritmo log search log search log search log search log search log search proposto proposto proposto proposto proposto proposto 10 11 Avaliaçãodebusca para algoritmo do proposto Avaliaçãodebusca para algoritmo do proposto Tempo ( Tempo ( 11229536160 11851405480 10225264624 11380719656 11635612904 10107549840 8987651528 3871233064 7085572472 3684888104 6769695912 9992114448 8719348688 4012906120 6974555600 3733243384 6750188752 9958597952 tic ticks ks ) ) 35,8747 36,2318 36,1829 32,6770 32,7933 32,7228 30,2710 30,3693 30,3415 36,8556 37,1329 37,0798 33,3176 33,3960 33,3200 31,1224 31,2273 31,2119 Y (dB) Y Y (dB) Y 40,2853 40,5369 40,4985 41,0214 41,0663 41,0294 39,5181 39,5665 39,5439 40,9264 41,1184 41,0895 41,3311 41,3954 41,3341 39,7872 39,8481 39,8495 U (dB) U U (dB) U PSNR PSNR 4 Mbps 3 Mbps . . 40,3455 40,7081 40,6504 43,0427 43,1187 43,0708 41,1026 41,1435 41,1279 41,2279 41,5146 41,4683 43,3781 43,4468 43,3772 41,3755 41,4766 41,4876 V (dB) V V (dB) V 70 BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) oiiaã e dfrne íes m dvra iuçe, uiiad agrto d busca de algoritmo o diferentes em executado foi teste utilizando Cada GPU. na e CPU na proposto situações, diversas em vídeos diferentes de codificação a para movimento de vetores dos obtenção a durante transcorrido tempo do comparação da byte. byte a uma submetidos comparação arquivosa compressão, foram os JSVM do de processo do final Ao CUDA. tecnologia da uso fazendo implementada através versão da e original codificado foi vídeo de arquivo mesmo um forma: seguinte da efetuada foi implementações das funcionamento do validação A GPU. em implementada movimento blocos, de nível possui em paralelismos não do referência, mostrou-se adequado. utilização de a inviabilize implementação que na dados de presentes dependência algoritmos mais ser os de além que que do proposto, busca simples de algoritmo o forma, Desta execução. de tempo blocos de quantidade na no diminuição uma perceber pôde-se proposto, algoritmo diminuição no considerados serem a candidatos a devido disso, Além relevantes. muito mostram se 0,034 de torno em aumento um houve 0,066 de foi qualidade de perda de caso pior O insignificativo. é qualidade na observado impacto 5.4 Harbour Vídeo Crew City Avaliação resultados demovimento dos em GPU estimativa da dB A análise do desempenho alcançado pela implementação paralela foi realizada através realizada foi paralela implementação pela alcançado desempenho do análise A de estimação da desempenho ao relativos resultados os apresentam-se seção Nesta o pois, algoritmo, do satisfatório funcionamento o aponta realizada avaliação A . Em algumas situações chegou-se até a obter uma melhor qualidade, no melhor caso melhor no qualidade, melhor uma obter a até chegou-se situações algumas Em . Tabela Tabela fast search fast search fast search Algoritmo log search log search log search proposto proposto proposto 12 Avaliaçãodebusca para algoritmo do proposto Tempo ( 11052329032 12123661832 10394550536 10020192128 9263715632 3853508016 7202049016 3640855776 6808315320 dB ticks . Tanto as perdas quanto os ganhos de qualidade não qualidade de ganhos os quanto perdas as Tanto . ) 37,6367 37,8403 37,8085 33,8404 33,8946 33,8077 31,8457 31,9177 31,8960 Y (dB) Y 41,4021 41,5342 41,5126 41,6767 41,7076 41,6617 40,1952 40,2215 40,2111 U (dB) U PSNR bit rates bit 5 Mbps. e com diferentes com e 41,8864 42,0961 42,0599 43,7256 43,7387 43,7225 41,9102 41,9522 41,9473 V (dB) V 71

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) tempos medidos em em tempos medidos Harbour solução implementada. da desempenho no taxas e movimentações diferentes de efeitos os apurar a forma de vídeos, de execução tão elevado, fazendo com que os ganho sejam mais significativos. os com mais que ganho fazendo sejam elevado, tão de execução tempo num acarreta não iterações de mais número maior esse paralelismo, do virtude em GPU, Na movimentação uma maior. seja possui busca de algoritmo vídeo no executadas iterações esse de número o que com fazendo irregular, de fato ao deve se Isso significativos. foi oganho 4CIF médio 4,4 vezes. para Já vídeo em para 3,2vezes. médio vídeosficou CIF ganho O respectivamente. (704x576), 4CIF e (352x288) CIF resoluções as para quadros 300 média. em mais rápido, Bit Rate oes bevr qe o vdo vídeo o que observar Pode-se tabelas nas apresentados são seguir A vezes 2 de cerca estimativa da execução a foi experimento nesse obtido resultado O A vídeos: os utilizados foram 4CIF e CIF QCIF, resoluções com experimentos Nos 2,0 1,5 1,0 , (Mbps) City Tabela 13 Tabela e e Crew Tabela ticks mostra os resultados em resolução QCIF (176x144). São exibidos os exibidos São (176x144). QCIF resolução em resultados os mostra descritos anteriormente. Harbour Harbour Harbour Vídeo de 150quadros. desempenho na codificação e oganhoobtido de Crew Crew Crew City City City 13 Comparação dos desempenho dos Comparação em QCIF. 180118504 177143624 176833432 Crew 79218536 66220912 79241240 66479736 79181200 66362752 CPU 14 e dsaa pr poocoa ahs mais ganhos proporcionar por destaca se e e Tempo ( 15 os resultados obtidos na codificação de codificação na obtidos resultados os Ticks) 42030080 41451504 73542064 43974032 41946336 72008496 41844328 41451264 72193760 GPU Ganho 1,88 1,60 2,45 1,80 1,58 2,46 1,89 1,60 2,45 72

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) 2012): em todasresoluções. as ocorre situação mesma paralelo. Essa executadaem sendo acaba que operações de quantidade maior a devido maior é paralela implementação a com obtido necessitam que vídeo ganho o movimento, de Nos vetor o encontrar para busca de cena. algoritmo do iterações mais executar cada em contidas movimentações diferentes às deve se Bit Rate Bit Rate Pode-se perceber que para cada caso obteve-se diferentes ganhos de velocidade. Isso velocidade. de ganhos diferentes obteve-se caso cada para que perceber Pode-se Os testes realizados para a resolução de 720p usaram os seguintes vídeos (Xiph, vídeos seguintes os usaram 720p de resolução a para realizados testes Os • 2,0 1,5 2,5 5 4 3 (Mbps) (Mbps) bastante detalhes de árvores, neve e água ao fundo. e água de árvores,neve detalhes bastante Run Park Tabela Tabela m hmm cm u uracua cred m u aqe com parque, um em correndo guarda-chuva um com homem um : Harbour Harbour Harbour Harbour Harbour Harbour Vídeo Vídeo Crew Crew Crew Crew Crew Crew City City City City City City 15 14 Comparação dos desempenho dos Comparação em 4CIF. Comparação dos desempenho dos Comparação em CIF. 10984781680 11186873208 11321692552 1764680864 1790051832 1850875744 3834388056 3604432704 3879998576 3670192632 3987186552 3698837480 637199392 599781040 636971624 600011024 644581448 608962368 CPU CPU Tempo ( Tempo ( Ticks) Ticks) 1777918352 1118375600 1131506144 1722076480 1103117032 1072984904 1722507296 1071361776 1101751384 404803688 243116504 241923208 405597264 244448744 241781616 410079816 256862120 242260808 GPU GPU Ganho Ganho 4,36 2,62 2,48 4,41 2,61 2,48 4,51 2,51 2,51 6,18 3,43 3,19 6,50 3,52 3,42 6,57 3,72 3,36 73

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) resolução 720p (1280x720). O ganho médio obtido ficou em torno de 3,5vezes. em 720p(1280x720).Otorno ficou resolução obtido ganho médio resultou nas tabelas apresentadas foi o tempo de inicialização da memória de texturas. Essa texturas. de memória da que inicialização de análise tempo o na foi apresentadas desconsiderado tabelas nas foi resultou que tempo único O JSVM. software o com integração os vídeode e detalhes memória de RAM da placa e a a memória transferência entre tempos de média.vezes, em 5,7 de torno em foi obtido velocidade de ganho O quadros. 300 de codificação a realizando Bit Rate Todos os resultados apresentados foram obtidos em um ambiente real que considera os que considera real ambiente um em obtidos foram apresentados resultadosos Todos A osvídeos (Xiph, 2012): seguintes utilizados resolução testes 1080pforam em Nos A • • • • • • 7 6 5 (Mbps) Tabela 17 Tabela aea 16 Tabela Tractor 2 Station e pessoas.veículos Hour Rush movimentada; Area Pedestrian carrosem movimento.água e Stockholm de deescudos. cheia parede Shields movimento dotrator. : h : : vídeo de um trator trabalhando no campo com a câmera acompanhando o acompanhando câmera a com campo no trabalhando trator um de vídeo : : vista de trilhos de trem com a câmera em movimento. em câmera com de trem a de trilhos : vista apresenta os resultados obtidos para a resolução 1080p (1920x1080), 1080p resolução a para obtidos resultados os apresenta Tabela peet s rslao bio a cdfcço d 0 udo na quadros 300 de codificação na obtidos resultados os apresenta omem com barba e uma jaqueta manchada andando na frente de uma de frente na andando manchada jaqueta uma e barba com omem : vista panorâmica sobre a cidade de Estocolmo com detalhes de casas, de detalhes com Estocolmo de cidade a sobre panorâmica vista : Stockholm Stockholm Stockholm ea ua aeia ubn oietd, cm mvmnaã de movimentação com movimentada, urbana avenida uma cena : Park Run Park Run Park Run Park Shields Shields Shields Vídeo : imagem de pedestres e ciclistas se andando em uma esquina uma em andando se ciclistas e pedestres de imagem : 16 Comparação dos Comparação em 720p. desempenho 7692344128 6991465496 7214870912 7854453352 6967414440 7053992600 7454606568 6985800840 7115970144 CPU Tempo ( Ticks) 2094760952 2232668848 2015496392 2080444688 2039930968 2058054824 2043065824 2015903552 2002541160 GPU Ganho 3,67 3,14 3,58 3,78 3,42 3,43 3,65 3,47 3,55 74

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) uma câmera esse atraso devido a memória de texturas não serárelevante. texturas anão memória atrasode esse devido uma câmera de oriundos quadros codifica continuamente que aplicação uma em exemplo, Por diluída. será inicial for demora essa programa quadros de o grande suficientemente se número um Portanto, codificar para quadro. utilizado primeiro do tratamento no apenas ocorre operação vetores de movimento SADscorrespondentes. e os vetores de os obter apenas necessário é que visto tempo pouco consome laranja) cor (em RAM memória a para placa da resultados dos cópia A azul). (em vídeo de placa da memória a para quadros do na Os apresentados dados cena. na presentes movimentação de características as com acordo de iterações de diferente de tempos diferentes obtém-se função vídeo da execução cada Para anteriores. experimentos nos utilizados vídeos três mesmos os com 720p, resolução na foi vídeo experimento de O quadros 300 execução. codificando de realizado total tempo ao relação em vídeo, de placa e CPU a entre (nvvp) Profiler Visual NVIDIA 5.5 Bit Rate kernel GPU Os resultados deste experimento mostram que para vídeos 720p o tempo de execução de tempo o 720p vídeos para que mostram experimento deste resultados Os de análise breve uma apresentada é seção Nesta 14 12 10 (Mbps) (na cor amarela) é aproximadamente o mesmo tempo gasto na transferência dos transferência na gasto tempo mesmo o aproximadamente é amarela) cor (na profiling Pedestrian Area Pedestrian Area Pedestrian Area Pedestrian kernel Tabela Tabela Rush Hour Rush Hour Rush Hour Station 2 Station 2 Station 2 Tractor Tractor Tractor Vídeo Figura 25 devido ao fato de que o algoritmo de busca efetuará um número um efetuará busca de algoritmo o que de fato ao devido 17 , a fim de determinar a fração de tempo gasta na comunicação na gasta tempo de fração a determinar de fim a , dos Comparação desempenho em 1080p. são o resultado médio obtido nos três vídeos. nos obtido médio três oresultado são 15278702952 33590761832 61834028200 42607764448 15342743488 34157617704 61756846624 41325355408 15365570400 33467682088 61162550536 41746334120 CPU Tempo ( profiling Ticks) 4631230432 5999540512 8183602400 6656709832 4535798208 6056045560 8217576568 6575557472 4542242944 5967215752 8175085368 6589026472 GPU obtida através do aplicativo do através obtida Ganho 3,30 5,60 7,56 6,40 3,38 5,64 7,52 6,28 3,38 5,61 7,48 6,34 75

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) resolução utilizada. As cópias ocorrem a cada novo quadro, sendo necessário transferir o transferir necessário obtido. previamente sendo de referência quadro e atual oquadro quadro, novo cada a ocorrem cópias As utilizada. resolução significativo em relação ao total. em relação significativo A medida que se analise resoluções maiores o tempo de transferência se mostra menos mostra se transferência de tempo o maiores resoluções analise se que medida A da depende vídeo de placa a para movidos ser precisam que dados de quantidade A Figura Figura 25 Distribuição do tempoDistribuiçãodo etapas. entre as kernel GPU <- CPU GPU -> CPU 76

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) tlzço d urs tcoois cm ntuõs SM, cpoesdrs e hardware em coprocessadores a SIMD, alternativa instruções outras. entre dedicado como como explorada sendo tecnologias vem outras que de ideia utilização uma é contexto nesse GPU da uso codificadores dos computacional O real. tempo em resolução alta de de vídeos a codificação possível complexidade tornar a vistas com atuais, da aumento do encontro ao vai proposta Essa H.264. padrão o com acordo de vídeo, de codificação da aceleração para coprocessador nr P rnia P, arvs d tlzço d hmds asnrns t o Até assíncronas. chamadas de utilização da através GPU, a e principal CPU a entre paralelismo o utilizar é movimento de estimação na melhores ganhos Outra obter de paralelamente. possibilidade SADs os obter de forma a alguma blocos em cinco pensar são pode-se caso, tratados), pior serem (no blocos alguns de SAD o calcular necessário é busca da iteração cada que a Visto de busca. algoritmo no SAD executado de no cálculo do paralelismo exploração a é alternativa Uma movimento. de estimativa da implementação na melhorias de a interessante ser pode casos, alguns Em paralelismo. possuam um novos maior proposição que de algoritmos GPU. da execução de modelo no encaixá-lo a de forma algoritmo o expressar e possível é o paralelismo onde identificar de a fim algoritmos os estudar preciso é forma, Dessa GPU. da potencial o explorar não pode CUDA utilizar para C em implementação da adaptação simples a pois detalhes, em CUDA arquitetura da estudo o requer resultados bons de obtenção a que ressaltar Cabe viável. é codificadores de aceleração operações de quantidade maior a devido vezes, docodificador. módulo nesse realizadas 6 de cerca movimento de de ganho estimativa um a em com testes resultaram Os HD. vídeos para execução de tempo no vezes de movimento. presentes na estimação cálculo de similaridade e transformadas pelas composto o e busca de algoritmo um implementados foram interquadros, codificador no computacional, Já quantização. módulo do implementação a foi intraquadros realizada codificação da contexto para No proposta. caso da de viabilidade a estudos prática na dois verificar realizados Foram CUDA. paralela computação de arquitetura 6 CONCLUSÃO Como oportunidades de continuação desse trabalho de pesquisa, cita-se a possibilidade a cita-se pesquisa, de trabalho desse continuação de oportunidades Como a para CUDA arquitetura a utilizar de ideia a que mostram obtidos resultados Os 3,9 de cerca de ganho um mostraram computacional módulo no experimentos Os da e vídeos de compressão da fundamentos os apresentou literatura de revisão A como GPU da utilização da cerca a investigação uma apresentou trabalho presente O 77

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) urs mdls qe tmé osm sr prllzds oo flr antiblocagem, filtro como paralelizados, ser possam também intraquadros. e predição de movimento compensação que módulos outros de estimativa estudar pode-se disso, Além pixel. a de quarto um ou explorar pixel meio de resolução com é movimento possibilidade Outra sub-bloco. cada para movimento de vetor um gerando domacroblocoseparadamente, partições tratar doH.264 de a capacidade explorar pode-se exemplo, Por H.264. no possíveis funcionalidades outras considerando movimento de programação. grande esforçode não requer de movimento na estimativa empregá-lo entretanto, computacional, módulo no apenas usado foi conceito esse momento, Há ainda a possibilidade de fazer uma implementação mais abrangente da estimativa da abrangente mais implementação uma fazer de possibilidade a ainda Há 78

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) do Rio Grande do Sul, Porto Alegre, 2007. do Rio GrandedoSul, Porto Alegre, H.264. Federal Universidade (PPGC), Computação Padrão em Pós-Graduação de Programa – o Computação) Segundo Vídeo de Compressão V. L. AGOSTINI, UE .A AL .A Volume 24,1985 A. W. WALL, A; K. DUKE, Computação em Pós-Graduação de Programa – 2009. doRio Grande doSul, Federal Porto(PPGC), Alegre, Universidade Computação) da Ciência em (Mestrado Vídeo. de Compressão de H.264/AVC Padrão do Codificadores M. C. of DINIZ, University Engineering, and Science Computer of Nevada, Reno, 2004. Department Informática, Science), of de (Master Instituto – S. T. CROW, Computação) da Ciência em 2010. Grandedo Sul, Federal Porto Alegre, doRio Universidade (Graduação Conclusão de F. D. CONRAD, . Processors Graphics Multicore on Coding Video Processing Magazine, al. et. N.; CHEUNG, 2009, CUDA. using Algorithm Estimation Motion H.264 Paralellizing al. et L.; CHAN, 163-174, April 2009. on Symposium International simulator. GPU detailed a using workloads CUDA Analyzing al. et A.; BAKHODA, 2003. Elsevier, Aura. CONCI, Eduardo; AZEVEDO, em Pós-Graduação de Programa – Computação) da Porto Alegre, 2006. doRio GrandedoSul, Federal Computação (PPGC), Universidade Ciência H.264. em Padrão (Mestrado o Seguindo Dissertação Definição, Alta de Vídeo de Decodificadores A. AZEVEDO, TECHNOLOGY/Pages/stream-technology.aspx http://www.amd.com/US/PRODUCTS/TECHNOLOGIES/STREAM- AMD. Final .2009 Project T tem Technology. Stream ATI Evolution of the Graphical Processing Unit. Processing Graphical the of Evolution MoCHA: Arquitetura Dedicada para a Compensação de Movimento em Movimento de Compensação a para Dedicada Arquitetura MoCHA: ruttr e Hrwr eiaa pr rdço ItaQar em Intra-Quadro Predição para Dedicada Hardware de Arquitetura . Análise da Hierarquia de Memórias em GPGPUs. em Memórias de Hierarquia da Análise Desenvolvimento de Arquiteturas de Alta Performance Dedicadas à Dedicadas Performance Alta de Arquiteturas de Desenvolvimento [S.l.], v. 27, n. 2, p. 79-89, March 2010. [S.l.], v.27,n.2,p.79-89,March Performance Analysis of Systems and Software and Systems of Analysis Performance rfsinlgahc otolr controller. graphics professional A REFERÊNCIAS REFERÊNCIAS Computação grafica: teoria e pratica. e teoria grafica: Computação . Acesso em 13 de novembro. em2011. 13de .Acesso 01 ipnvl em: Disponível 2011. 07 7 . Ts Duoao em (Doutorado Tese p. 173 2007. 2004. 59 p. Professional Paper Professional p. 59 2004. 2009. 96 p. Dissertação p. 96 2009. IBM Systems Jounal. Systems IBM 2010. 43 p. Trabalho p. 43 2010. Rio de Janeiro: de Rio 2006. 120 p. 120 2006. EE Signal IEEE , , MIT IAP MIT [S.l.], p. [S.l.], IEEE 79

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) fiin P Ntokn 00 . 6 p ipnvl em: Disponível p. Magazine, Times 6 S. TULJAPURKAR P.; GREENE . digitias. M. R. JUNIOR, CESAE E.; R. WOODS, C.; R. GONZALEZ, 2010 Engineers, 2003. InstitutionofElectrical United The Kingdom: . M. GHANBARI, Networking 2011. IP http://www.fujitsu.com/emea/services/microelectronics/mpeg/ and Definition High Efficient Leveraging Encoding: Video H.264 for Markets Emerging FUJITSU. .99, 21. Dsoíe m < em Disponível version (JSVM Reference-Software.htm coding 2010. video advanced H.264 9.19.9), for Software Reference H.264/SVC ITU, da H.264/AVC (05/03): Ciência UNION. TELECOMMUNICATION em INTERNATIONAL - Pós-Graduação ITU de Programa – Ciências) SãoPaulo, 2011. de SâoPaulo, Computação, Universidade em (Mestrado Dissertação A. P. IKEDA, Sistemas de Brasileiro Simpósio XVI In 2010,Belo eHorizonte. WEB, Multimídia H.264/SVC. Codificador um de Computacional al. et R. HUSEMANN, Usando H.264 Intra Codificação 2011, Florianópolis. de Desempenho de Web, e Multimídia Sistemas Aumento de Brasileiro Simpósio In: CUDA. NVIDIA GPU de Arquitetura al. et R. HUSEMANN, Conference Multimedia. on CPU. multi-core and CUDA NVIDIA using J. WU, Y.; SHEN, Y.; HUANG, July 2003. Analysis. Complexity Technology Video for Systems and Circuits on Transactions Decoder Profile Baseline H.264/AVC al, et M. HOROWITZ, Graphics on Processing Purpose General programs. on GPU Processing Workshop Units in Fourth Divergence the Branch Reducing of S. Proceedings T. ABDELRAHMAN, D.; T. HAN, 1988. v.8,n.3,p.39-52. Microprocessor. Embedded An TMS34010: The al. et GUTTAG pageNumber=0 processing-dsp/4013356/The-basics-of-HD-H-264-and-next-generation-encoding? São Paulo: Edgard Blucher, Edgard 2000. São Paulo: Um estudo do uso eficiente de programas em placas gráficas. placas em programas de eficiente uso do estudo Um . Acesso em: 15de outubro. em: 2011. . Acesso

[S.l.]: 2011. Standard Codecs: Image Compression to Advanced Video Coding. Video Advanced to Compression Image Codecs: Standard uh, 20. Dsoíe m em: Disponível 2007. Julho, Anais . advanced video coding for generic audiovisual services. 2003. services. audiovisual forgeneric video advanced coding > Acesso em: 1º em: agosto de 2011. Acesso rpsa d ouã e H/W C-ein pr Módulo o para Co-Design HW/SW de Solução de Proposta [S.l.]: 2009. Florianópolis, 2011. Florianópolis, The basics of HD H.264 and next-generation encoding. encoding. next-generation and H.264 HD of basics The Scalable computation for spatially scalable video coding video scalable spatially for computation Scalable http://ip.hhi.de/imagecom_G1/savce/downloads/SVC- Anais . Proceedings of the 17 the of Proceedings Belo Horizonte, BH. Horizonte, 2010. Belo http://www.eetimes.com/design/signal- . Acesso em: 13 de novembro. de 13 em: Acesso . , [S.l.], v. 13, n. 7, p. 704-716, p. 7, n. 13, v. [S.l.], , Processamento de imagens de Processamento Proceedings... ITU-T Recommendation ITU-T th ACM International ACM [S.l.]: IEEE, [S.l.]: 2011. 80 p. 80 2011. IEEE EE 80

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) VDA NVIDIA. http://archive.msdn.microsoft.com/directcomputehol MICROSOFT. Porto Alegre, 2010. doRio GrandedoSul, Federal Universidade de EngenhariaElétrica, –Departamento Elétrica) H.264. Vídeo de Codificador M. MAJOLO, 2011. 13 de novembro. systems. heterogeneous Group. KHRONOS Movimento na Compressão de Vídeo de Alta Definição. Alta de Vídeo de Compressão na Movimento S. M. PORTO, Porto Sul, do Grande Rio do Federal Alegre, 2008. Universidade (PPGC), Computação em Graduação em: Digital. Vídeo de Compressão de H.264/AVC Padrão o Segundo Variáveis Tamanhos de Blocos C. E. R. PORTO, Hardware. Graphics on Computation General-Purpose of Forum.Computer Graphics Survey A al. et D; J. OWNEW, junho. 2012. em 25de Acesso Beta/x86_website/projects/reduction/doc/reduction.pdf. http://developer.download.nvidia.com/compute/cuda/1.1- NVIDIA. http://www.nvidia.com/object/cuda_home_new.html NVIDIA. 2011c. Acesso 5de agosto. em: http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/ptx_isa_2.3.pdf. NVIDIA. agosto. em:2011b. g_Guide.pdf. Acesso 5de http://developer.download.nvidia.com/compute/cuda/4_0/toolkit/docs/CUDA_C_Programmin NVIDIA. g_Guide.pdf http://developer.download.nvidia.com/compute/cuda/4_0/toolkit/docs/CUDA_C_Programmin NVIDIA. ture_Whitepaper.pdf http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architec Disponível NVIDIA. 2011. Acesso 13de novembro. em: http://developer.nvidia.com/system/files/akamai/gamedev/docs/TransformAndLighting.pdf. 2008. 96 p. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós- de Programa – Computação) da Ciência em (Mestrado Dissertação p. 96 2008. NVIDIA’s Next Generation CUDA Compute Architecture: Fermi Fermi Architecture: Compute CUDA Generation Next NVIDIA’s PTX: Parallel Thread Execution. ISA Version 2.3. Version ISA Execution. Thread Parallel PTX: NVIDIA CUDA CUDA C Best Practices Guide. Practices Best C CUDA CUDA NVIDIA ehia re: Tasom ad Lighting. and Transform Brief: Technical VDA CD rgamn Guide. Programming C CUDA NVIDIA UA aall Pormig Md Easy. Made Programming Parallel CUDA: piiig Prle euto n CUDA. in Reduction Parallel Optimizing . Acesso em: 5de agosto. em: 2011a. . Acesso Arquitetura dos Módulos de Transformadas e de Quantização de um de Quantização de e Transformadas de Módulos dos Arquitetura eevliet loíiio e Aqieua aa a Etmço de Estimação a para Arquitetural e Algorítimico Desenvolvimento iet Cmue PC HOL. PDC Compute Direct . Acesso em: 1de outubro. em: 2011. . Acesso eevliet ruttrl pr siaã e Mvmno de Movimento de Estimação para Arquitetural Desenvolvimento pnL OpenCL:

2011. Disponível em: em: Disponível 2011. v.26,n.1,p.80-113.March2007. 2010. 71 p. Projeto de Diplomação (Graduação em Engenharia em (Graduação Diplomação de Projeto p. 71 2010. h pn sadr o aall pormig of programming parallel for standard open The http://www.khronos.org/opencl/ http://www.khronos.org/opencl/ . Acesso em 13/11/2011.. Acesso . Acesso em 13 de novembro. 2011d. . Acesso13de novembro. em 01 8 . Dsoíe Disponível p. 187 2011. 2012. 166p. Tese (Doutorado Em (Doutorado Tese 166p. 2012. 09 ipnvl em: Disponível 2009. 99 3 p ipnvl em: Disponível p. 13 1999. 2011. 76 p. Disponível em: Disponível p. 76 2011. 2011. 76 p. Disponível em: Disponível p. 76 2011. 02 ipnvl em: Disponível 2012. 01 ipnvl em: Disponível 2011. . 2009. 22 p. 22 2009. . . Acesso em Acesso . em:

81

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) E, J; e l aall Sraig Ita Peito o ul H .6 noig Encoding. H.264 HD Full (EMC). for Computing Prediction Multimedia August 2010. Intra and Embedded Streaming on Parallel Conference International al. et J.; REN, Padrão do Movimento de Compensação a AVC para de Vídeo. H.264/AVC de Compressão Hardware H.264/MPEG-4 de Projeto al. the et F.; using REDIESS, coding Video A. (PPGC), LUTHRA, Computação X.; . compression standard CHEN, em A.; Pós-Graduação PURI, de Programa - 2012. GrandedoSul, FederalPorto Alegre, doRio Universidade Computação) da Ciência oig n EE ITRAINL SMOIM O ICIS AD SYSTEMS, AND CIRCUITS ON SYMPOSIUM ISCAS, 2003. INTERNATIONAL Video H.264/AVC IEEE for In: Optimization Joint Coding. Complexity and Performance al. et J. ZHANG, 2012. 11 de julho. XIPH. Piauí 2009v.1.p.1-25,2009. 2009,Parnaíba: -ERCEMAPI Maranhão e Computação Ceará, M. R. J. VIANA, VISUAL IEEE 2001.p.883-892. and SystemsSociety, Jose. Circuits Jose: IEEE In: San estimation. 2001, PROCESSING, motion IMAGE based AND COMMUNICATIONS block enhancing – (PMVFAST) technique search adaptive field vector motion Predictive L. M. LIOU, C.; O. AU, M.; A. TOURAPIS, PTR,Course Technology 2004. S. ST-LAURENT, 2009. Final .Standford, Project Existing GPGPU. a Porting to of Applications Feasibility CUDA: with MPEG-2 Parallelizing al. et M; SPRANDLIN, Alegre, 2007. Porto Sul, do Grande Rio do Federal Universidade (PPGC), Computação em Pós-Graduação Vídeo. e Imagens B. A. SOARES, CRCPress,Raton: 2008. H. SUN, Q; Y. SHI, 2010. andWiley Sons, I. RICHARDSON, Multimedia.Next-Generation I. RICHARDSON, 2002. and Wiley Sons, Systems. Chichester:John I. RICHARDSON, Xiph.org Test Media. Test Xiph.org Proceedings... Programação em GPU: Passado, Presente e Futuro. e Presente Passado, GPU: em Programação de Processamento para Arquiteturas em Paralelismo do Exploração 2007. 143p. Tese (Doutorado Em Ciência da Computação) - Programa de Programa - Computação) da Ciência Em (Doutorado Tese 143p. 2007. The H.264 Advanced Video Compression Standard. Compression Video Advanced H.264 The hdrfrteGm rgamr n rit.Artists. and Programmers Game the for Shader H.264/AVC and MPEG-4 Video Compression – Video Coding for Coding Video – Compression Video MPEG-4 and H.264/AVC ie oe Design Codec Video Image and Video Compreesion – Multimedia Engineering. Multimedia – Compreesion Video and Image Signal Processing: Communication. Image CS315a - Parallel Computer Architecture and Programming and Architecture Computer Parallel - CS315a [S.l.]: 2003.v.2,p. II888-II891. IEEE, Dsoíe m em: Disponível Chichester: John Wiley and Sons, 2003. and Wiley Sons, Chichester:John Hífen eeoig Iae ad Vdo Compression Video and Image Developing : , Uruguaiana, 2006. , Uruguaiana, http://media.xiph.org/video/derf/ v. 19,p.793-849,2004.

Proceedings... Escola Regional de Regional Escola Chichester: John Chichester: Boston: Thomson Boston: . . Acesso em: Acesso p. 1-6, p. Boca San 5 82 th ,

BDU – Biblioteca Digital da UNIVATES (http://www.univates.br/bdu) ZHU, S.; MA, K. A New Diamond Search Algorithm for Fast Block-Matching Motion Block-Matching Fast 2000.] for Algorithm Search Diamond New Estimation. A K. MA, S.; ZHU, IEEE Transactions on Image Processing Image on Transactions IEEE , [S.l.], v. 9, n. 2, p. 287-290, Fev. 287-290, p. 2, n. 9, v. [S.l.], , 83