Leitura

Descoberta pode dobrar desempenho de PCs
Daniel Trefilio |
https://canaltech.com.br/hardware/descoberta-pode-dobrar-desempenho-de-pcs-282305/


Resumo

  • Nova estrutura de processamento de dados capaz de utilizar de forma mais eficiente os recursos de CPUs com múltiplos núcleos e threads
    • Multithreading Simultâneo e Heterogêneo (SHMT): quase dobram o desempenho de CPUs e reduzem o consumo pela metade
  • Os PCs modernos são heterogêneos em termos de estruturas físicas, com CPU, GPUs, coprocessadores e, agora, NPUs, as linguagens de programação ainda são tecnicamente homogêneas
  • Novo framework: evolução do pipelining, ao permitir que sub-rotinas menores sejam executadas em paralelo de forma oportunista em threads e aceleradores ociosos, otimizando desempenho e consumo


  • CPU: Constituída por bilhões de transistores, a CPU pode ter vários núcleos de processamento e é comumente referida como o "cérebro" do computador. A CPU é importante para determinar a velocidade de execução dos programas, desde a navegação na web até a elaboração de planilhas.
  • GPU: Unidade de Processamento Gráfico é composto por muitos núcleos menores e mais especializados. Ao trabalhar em conjunto, os núcleos oferecem desempenho massivo quando uma tarefa de processamento pode ser dividida em muitos núcleos ao mesmo tempo (ou em paralelo). A GPU é um componente integral para jogos modernos, permitindo visuais de qualidade mais alta e jogabilidade mais suave. As GPUs também são úteis em IA.
  • NPU: Unidade de Processamento Neural responsável por acelerar tarefas de IA, como aprendizado de máquina e redes neurais. Está presente em smartphones, PCs e outros eletrônicos modernos. Também podem ser chamadas de TPU (Tensor Processing Unit) pelo Google e de Neural Engine pela Apple. Outra sigla menos conhecida é IPU (Intelligence Processing Unit).


Artigo

Simultaneous and Heterogenous Multithreading
Kuan-Chieh Hsu, Hung-Wei Tseng
University of California, Riverside
https://dl.acm.org/doi/pdf/10.1145/3613424.3614285


Resumo


  • A programação tradicional subutiliza o poder de processamento dentro dos computadores heterogêneos, preocupando-se em usar apenas as unidades de processamento mais eficientes para cada região do código
  • SHMT (Simultaneous and Heterogenous Multithreading) é um modelo de programação e execução que permite implementar um processamento paralelo real usando unidades de processamento heterogêneas e para isso pode utilizar tipos heterogêneos de unidades de processamento concorrentemente para a mesma região do código
  • Além disso, o SHMT apresenta uma abstração e um sistema de processamento para facilitar a execução paralela
  • Mais importante ainda, SHMT precisa abordar adicionalmente a heterogeneidade na precisão dos dados que várias unidades de processamento suportam para garantir a qualidade do resultado.
  • Este artigo implementa e avalia SHMT em uma plataforma de sistema embarcado com uma GPU e um Edge TPU alcançando até 1,95× de aceleração e 51,0% de redução de energia em comparação com linha de base da GPU.


  • Exemplos de modelos de computação heterogêneos:
    • Tensor Cores (TCs)
    • Ray Tracing Cores (RT Cores)
    • NVIDIA GPUs
    • Tensor Processing Units (TPUs) on Google Cloud servers
    • Neural Engines on Apple’s iPhones
    • Edge Tensor Processing Units (Edge TPUs) on Google Pixel Phones.
  • Usados no framework:
    • Plataforma de sistema embutido equipado com um processador multi-core ARM, um NVIDIA GPU, e um Edge TPU.


  • Na programação convencional conseguem delegar uma região do código exclusivamente para um tipo de processador, deixando outros recursos de computação ociosos
  • SHMT pode dividir o cálculo da mesma função para vários tipos de recursos de computação e explorar tipos heterogêneos de paralelismo


Figura 1 - Vantagens do SHMT frente o modelo de execução convencional
  • Programa contendo 5 funções primárias e 5 recursos de computação incluindo CPUs, GPUs e 3 aceleradores
  1. Fluxo de execução em um modelo de execução convencional
  2. Programa pode progredir com resultados parciais e execução de pipeline de diferentes funções em diferentes unidades de hardware. O desbalanço entre as fubções pode levar a perdas
  3. Permite à função B usar GPUs e outros aceleradores
  • Resultado: Melhor latência fim-a-fim e menor consumo de energia.


  • Desafios do SHMT:
  1. Deve prover algum mecanismo que possa descrever e dividir dados e operações equivalentes e em diferentes recursos de computação
  2. Diferentes da programação tradicional que delega cada região do código para um único tipo de hardware, SHMT deve ser habil a coordenar a execução em hardwares heterogêneos de maneira eficiente
  3. Como várias unidades de hardware entregam resultados em diferentes níveis de qualidade, SHMT deve garantir os resultados sem incorrer em uma sobrecarga significante.


  • Framework SHMT - 3 componentes
  1. VOPS, conjunto de operações virtuais e HLOPS, operações de alto nível intermediando a linguagem de programação e as instruções do hardware facilitando as tarefas de casamento e distribuição
  2. SHMT apresenta um sistema de tempo de execução que ajusta dinamicamente as cargas de trabalho em várias unidades de hardware para maximizar a eficiência do hardware enquanto flexibiliza as políticas de agendamento
  3. SHMT apresenta uma política de escalonamento de baixa sobrecarga que considera tanto os resultados quanto desempenho.


  • Contribuições:
    • SHMT apresenta uma nova programação e execução paralela usando hardware heterogêneo simultaneamente para realizar tarefas paralelas do mesmo trecho de código
    • SHMT avalia e demonstra o potencial de alavancagem de hardware antigo usando modelos de programação heterogêneos por meio de uma plataforma de sistema real
    • SHMT apresenta uma abstração e mecanismos para coordenar execução simultânea em componentes de hardware heterogêneos
    • SHMT propõe um mecanismo e agendamento de políticas com baixa sobrecarga para garantir a qualidade dos resultados.


Tarefa da semana

Entrega 12/04/2024


  • Na evoluçãodos computadores, aconteceram estágios onde novas tecnologias foram sendo implantadas gradativamente, permitindo basicamente, maior velocidade e maior capacidade. As primeiras máquinas eram extremamente simples, com poucos modos de endereçamento e reduzidas instruções. Desde o início, utilizaram o conceito de camadas para estruturar o funcionamento da máquina. A organização do sistema computacional era regida por um modelo hierárquico onde os principais componentes eram processador, memória e dispositivos de entrada e saída, seguindo a proposta de Von Neumann.


  • Durante um período de tempo razoável, ocorreu uma corrida incessante no aumento da potência de processamento do chip de silício, forçando uma densidade cada vez maior de transistores de forma a dobrar sua capacidade a cada 18 meses. Nessa saga, surgiu a arquitetura CISC (Complex Instruction Set Computer), uma arquitetura bem complexa capaz de executar várias centenas de instruções diferentes, e demonstrou ser extremamente versátil. Concorrendo com ela, lançaram a arquitetura RISC (Reduced Instruction Set Computer) constituída por um pequeno conjunto de instruções simples, executadas diretamente pelo hardware, sem intervenção de um interpretador (microcódigo), onde as instruções são executadas em apenas uma micro-instrução, de uma única forma e seguindo um mesmo padrão. [UEA - Costa, Cleinaldo de Almeida].


  • A partir da adoção da microprogramação, mais uma camada foi adicionada, sobrepondo À
  • Os equipamentos modernos, com diferentes estruturas físicas, como CPUs, GPUs, coprocessadores e NPUs, coexistem com linguagens de programação que subutilizam o poder de processamento destes computadores heterogêneos, e se satisfazem usando apenas as unidades de processamento mais eficientes para cada região do código. Para tentar explorar os atributos destas máquinas utilizam o conceito de pipelining de uma forma muito reduzida.


  • Para permitir que sub-rotinas menores sejam executadas em paralelo de forma oportunista em threads e aceleradores ociosos, otimizando desempenho e consumo propuseram um vovo framework que implementasse de fato uma evolução do pipelining. Assim, o SHMT (Simultaneous and Heterogenous Multithreading) é um modelo de programação e execução que permite implementar um processamento paralelo real usando unidades de processamento heterogêneas e para isso pode utilizar tipos heterogêneos de unidades de processamento concorrentemente para a mesma região do código.


  • O SHMT também apresenta uma abstração e um sistema de processamento para facilitar a execução paralela e para isso precisa abordar adicionalmente a heterogeneidade na precisão dos dados que várias unidades de processamento suportam para garantir a qualidade do resultado. Os resultados são animadores pois atingiram quase o dobro de aceleração e uma redução de energia pela metade se comparado aos teste executados em uma plataforma de sistema embarcado com uma GPU. Ficou provado que a nova estrutura de processamento de dados foi capaz de utilizar de forma mais eficiente os recursos de CPUs com múltiplos núcleos e threads.


  • Essa implementação exigiu a superação de alguns obstáculos como por exemplo, prover um mecanismo que descrevesse e dividisse dados e operações equivalentes e em diferentes recursos de computação. Requereu ainda que fosse possível coordenar a execução em hardwares heterogêneos de maneira eficiente porém diferente da programação tradicional que delega cada região do código a um único tipo de hardware, e por fim, que garantisse os resultados sem incorrer em uma sobrecarga significativa, visto que unidades de hardware entregam resultados em diferentes níveis de qualidade.



<br.

  • Pontos de vista
    • Evolução da tecnologia
    • Arquitetura
    • Performance
    • Desafios
    • Revolução tecnológica
    • Aplicação