SHMT - Simultaneous and Heterogenous Multithreading

Kuan-Chieh Hsu e Hung-Wei Tseng
University of California, Riverside


Avaliando o trabalho de Tseng e Hsu, torna-se difícil considerar uma visão única das contribuições e evoluções constatadas. Assim, discorro abaixo, de uma maneira objetiva sobre alguns aspectos em destaque. São eles:


  • Do ponto de vista de performance
Durante um período de tempo de 5 décadas na evolução dos computadores, 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. Recebeu até o nome de Lei de Moore, em homenagem ao cofundador da Intel, que previa que o número de transistores em um processador dobraria a cada dois anos. O conceito de nanoescala impulsionou de forma contundente a indústria de harware no mundo.
O trabalho supra citado renova essa expectativa de crescimento na capacidade dos processadores atuando com novas técnicas como paralelismo. Os resultados demonstrados apontam uma diminuição na latência fim-a-fim que praticamente duplicou a capacidade do processador. Além disso, atuou numa necessidade que não era prioridade alguns anos atrás, assim, a redução no consumo de energia de mais de 50% é um fator super relevante para o momento atual. No caso, os resultados obtidos foram comparados com testes com GPUs (Graphics Processing Unit).
A essência, nesse caso, foi a proposta de um escalonador que cria uma plano inicial de particionamento uniforme de conjuntos de dados com base no modelo de paralelização do agendamento de operações virtuais e a atribuição de cada partição de dados. Assim, poderiam associar a computação dessas partições para a execução em uma recurso específico.


  • Do ponto de vista de arquitetura
Interessante sobre o SHMT é que ele propõe a manutenção do modelo tradicional onde a CPU (Central Processing Unit) continua com seu papel original mas que é auxiliada por meio de tres elementos que se encarregam de executar determinadas áreas do código. Temos assim:
1. VOPs (Virtual Operations): permite que um programa de CPU “descarregue” sua computação para este conjunto extensível de dispositivos de operação virtual independentes;
2. HLOPs (High Level Operations): sistema que executa o agendamento de tarefas de baixa sobrecarga para manipular o uso de diferentes hardwares particionando a computação em múltiplos dispositivos;
3. Sistema de execução que direciona os HLOPs para as filas de tarefa do hardware de destino.
Analisando em termos de camadas, podemos confirmar uma distribuição top-down em Particionamento, Amostragem e Processamento.


  • Do ponto de vista de evolução tecnológica
O SHMT propõs um novo framework, que de fato, pudesse promover uma evolução no pipelining, técnica que se consolidou na evolução dos processos em computação. Este framework possibilita que sub-rotinas menores sejam executadas em paralelo de forma eficiente em threads e aceleradores ociosos, otimizando desempenho e consumo.
Na escala de evolução tecnolõgica, é 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.
De acordo com o gráfico apresentado no trabalho, é notável a "produtividade" do paralelismo implantado. Assim, pode ser considerado um marco no processo de inovação tecnológica na área de processamento em computação.


  • Do ponto de vista de desafios
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, nada simples, como por exemplo:
1. Prover um mecanismo que descrevesse e dividisse dados e operações equivalentes e em diferentes recursos de computação
2. Orquestrar uma coordenação da 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;
3.Garantir uma política de qualidade, de forma que os resultados não gerassem em uma sobrecarga significativa, visto que unidades de hardware entregam resultados em diferentes níveis de qualidade.


  • Do ponto de vista das aplicações
Levando em conta que no mecanismo implementado pelo SHMT, sub-rotinas menores do código podem ser tratadas por uma estrutura separada que procura utilizar modernas técnicas como paralelismo, escalonamento e redes neurais as aplicações podem ser criadas de forma a utilizar melhor este recurso.
Como essas sub-rotinas menores são executadas em paralelo de forma oportunista em threads e aceleradores ociosos, otimizando desempenho e consumo, nada mais natural que os desenvolvedores entendam essa visão e possam criar códigos que utilizem o máximo dessa característica.
Pode ser considerada uma nova era no desenvolvimento de aplicações visto que este framework tem um direcionamento todo especial para tratar de casos que já usam aceleradores que se demonstram ociosos usando os computadores com arquiteturas tradicionais.