Otimização de software via SHMT pode dobrar desempenho de PCs

Pesquisadores da Universidade de da California desenvolveram uma nova estrutura de processamento de dados capaz de utilizar de forma mais eficiente os recursos de CPUs com múltiplos núcleos e threads. Os teste preliminares do processo batizado de Multithreading Simultâneo e Heterogêneo (SHMT) são promissores, quase dobrando o desempenho de CPUs e reduzindo seu consumo pela metade.

  • O que é a arquitetura RISC? Veja sua importância para as CPUs
  • Quais são as diferenças entre as arquiteturas RISC e CISC

Apesar de os PCs modernos serem 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. O novo framework é praticamente uma 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. 

Desbloqueando o potencial da computação heterogênea

Mesmo com o paralelismo parcial do pipelining, as instruções são realizadas de forma relativamente linear, com cada thread executando todo um conjunto, e novos threads sendo acionados apenas conforme solicitados pelo código original. Isto ocorre porque os modelos de programação “entrincheirados” atuais, delimitam quais as unidades de processamento mais eficientes para cada região do código.

No entanto, operar dessa forma naturalmente deixa muitos núcleos e threads liberados, subutilizando recursos do sistema. Na prática, uma das vantagens iniciais das NPUs já é otimizar um pouco essa questão por meio do aprendizado de máquina, mas efetivamente, a estrutura de processamento continua sendo linear, apenas com uma alocação mais “inteligente”.

Exemplos de execução de instruções em: (a) computadores heterogêneos sem pipelining; (b) computadores heterogêneos com pipelining; (c) computadores hetergêneos com SHMT.  (Imagem: Association for Computing Machinery / Reprodução)

A proposta do SHMT é programar em modelos menos engessados, possibilitando que o código seja segmentado com o máximo de partes possíveis sendo processadas em paralelo. De forma bastante rasa, seria o equivalente e rodar e armazenar os resultados de partes diferentes de um jogo ao mesmo tempo, e apenas ir registrando os resultados conforme eles são solicitados.

Evidentemente, no exemplo específico de um programa interativo, como um jogo, isso não parece muito viável, uma vez que as variáveis são inseridas em tempo real. Contudo, em uma renderização de um código fechado como uma plotagem de um modelo 3D, treinamento de modelos LLM ,ou processamento de Big Data, desbloquear o poder da computação heterogênea pode representar um salto gigantesco no desempenho de workstations para aplicações profissionais, pesquisa e Inteligência Artificial.

  • 🛒 Compre processador Intel Core pelo melhor preço!
  • 🛒 Compre processador AMD Ryzen pelo melhor preço!

Leia a matéria no Canaltech.

Trending no Canaltech:

  • Spin | Instagram deve ganhar novo recurso para republicar Reels
  • TCL lança TVs com até 165 polegadas e brilho de 10 mil nits
  • Os 45 filmes mais esperados de 2024
  • Quais as diferenças entre Galaxy A05, A15, A25, A35 e A55?
  • One UI 6.1 chegará ao S23 e mais celulares a partir de março
  • Copilot está mais poderoso e oferece GPT-4 Turbo de graça
Adicionar aos favoritos o Link permanente.