Descoberta pode dobrar desempenho de PCs
Por Daniel Trefilio • Editado por Jones Oliveira |
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 testes 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.
- Quais são as diferenças entre as arquiteturas RISC e CISC
- Hacker roda GTA Vice City em um roteador com uma eGPU e Linux
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”.
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.