Tecnologia Científica

Resultados de computação mais rápidos sem medo de erros
Os pesquisadores desenvolveram um novo sistema que pode tornar os programas de computador mais rápidos, garantindo a precisão.
Por Adam Zewe - 08/06/2022


Pesquisadores criaram uma técnica que aumenta a velocidade de programas executados no shell Unix, um ambiente de programação onipresente criado há50 anos, paralelizando os programas. Créditos: Imagem: Christine Daniloff, MIT

Os pesquisadores foram pioneiros em uma técnica que pode acelerar drasticamente certos tipos de programas de computador automaticamente, garantindo que os resultados dos programas permanea§am precisos.

Seu sistema aumenta a velocidade dos programas executados no shell do Unix, um ambiente de programação onipresente criado há50 anos que ainda éamplamente utilizado hoje. Seu manãtodo paraleliza esses programas, o que significa que ele divide os componentes do programa em partes que podem ser executadas simultaneamente em vários processadores de computador.

Isso permite que os programas executem tarefas como indexação da Web, processamento de linguagem natural ou análise de dados em uma fração de seu tempo de execução original.

“Ha¡ tantas pessoas que usam esses tipos de programas, como cientistas de dados, bia³logos, engenheiros e economistas. Agora eles podem acelerar automaticamente seus programas sem medo de obter resultados incorretos”, diz Nikos Vasilakis, pesquisador do Laborata³rio de Ciência da Computação e Inteligaªncia Artificial (CSAIL) do MIT.

O sistema também facilita para os programadores que desenvolvem ferramentas que cientistas de dados, bia³logos, engenheiros e outros usam. Eles não precisam fazer nenhum ajuste especial nos comandos de seus programas para permitir essa paralelização automa¡tica e sem erros, acrescenta Vasilakis, que preside um comitaª de pesquisadores de todo o mundo que trabalham nesse sistema háquase dois anos.

Vasilakis éo autor saªnior do último trabalho de pesquisa do grupo , que inclui o coautor do MIT e estudante de pós-graduação do CSAIL, Tammam Mustafa, e seráapresentado no Simpa³sio USENIX sobre Projeto e Implementação de Sistemas Operacionais. Os coautores incluem o autor principal Konstantinos Kallas, estudante de pós-graduação da Universidade da Pensilva¢nia; Jan Bielak, estudante da Varsãovia Staszic High School; Dimitris Karnikis, engenheiro de software da Aarno Labs; Thurston HY Dang, um ex-pa³s-doc do MIT que agora éengenheiro de software no Google; e Michael Greenberg, professor assistente de ciência da computação no Stevens Institute of Technology.

Um problema de décadas

Este novo sistema, conhecido como PaSh, concentra-se em programas, ou scripts, que são executados no shell do Unix. Um script éuma sequaªncia de comandos que instrui um computador a realizar um ca¡lculo. A paralelização correta e automa¡tica de scripts de shell éum problema espinhoso com o qual os pesquisadores lutam hádécadas.

O shell Unix continua popular, em parte, porque éo aºnico ambiente de programação que permite que um script seja composto de funções escritas em várias linguagens de programação. Diferentes linguagens de programação são mais adequadas para tarefas ou tipos de dados específicos; se um desenvolvedor usa a linguagem certa, resolver um problema pode ser muito mais fa¡cil.

“As pessoas também gostam de desenvolver em diferentes linguagens de programação, então compor todos esses componentes em um aºnico programa éalgo que acontece com muita frequência”, acrescenta Vasilakis.

Embora o shell Unix permita scripts multila­ngues, sua estrutura flexa­vel e dina¢mica torna esses scripts difa­ceis de paralelizar usando manãtodos tradicionais.

Paralelizar um programa geralmente écomplicado porque algumas partes do programa dependem de outras. Isso determina a ordem na qual os componentes devem ser executados; erra o pedido e o programa falha.

Quando um programa éescrito em uma única linguagem, os desenvolvedores tem informações expla­citas sobre seus recursos e a linguagem que os ajuda a determinar quais componentes podem ser paralelizados. Mas essas ferramentas não existem para scripts no shell Unix. Os usuários não podem ver facilmente o que estãoacontecendo dentro dos componentes ou extrair informações que ajudariam na paralelização.

Uma solução just-in-time

Para superar esse problema, o PaSh usa uma etapa de pré-processamento que insere anotações simples em componentes do programa que ele acha que podem ser paraleliza¡veis. Em seguida, o PaSh tenta paralelizar essas partes do script enquanto o programa estãoem execução, no momento exato em que atinge cada componente.

Isso evita outro problema na programação shell — éimpossí­vel prever o comportamento de um programa com antecedaªncia.

Ao paralelizar os componentes do programa “just in time”, o sistema evita esse problema. Ele écapaz de acelerar efetivamente muito mais componentes do que os manãtodos tradicionais que tentam executar a paralelização antecipadamente.

A paralelização just-in-time também garante que o programa acelerado ainda retorne resultados precisos. Se o PaSh chegar a um componente de programa que não pode ser paralelizado (talvez seja dependente de um componente que ainda não foi executado), ele simplesmente executa a versão original e evita causar um erro.

“Nãoimporta os benefa­cios de desempenho osse vocêprometer fazer algo funcionar em um segundo em vez de um ano osse houver alguma chance de retornar resultados incorretos, ninguanãm usara¡ seu manãtodo”, diz Vasilakis.

Os usuários não precisam fazer nenhuma modificação para usar o PaSh; eles podem simplesmente adicionar a ferramenta ao seu shell Unix existente e dizer a seus scripts para usa¡-la.

Aceleração e precisão

Os pesquisadores testaram o PaSh em centenas de scripts, de programas cla¡ssicos a modernos, e não quebrou nenhum. O sistema foi capaz de executar programas seis vezes mais rápido, em média, quando comparado a scripts não paralelos, e alcana§ou uma aceleração máxima de quase 34 vezes.

Tambanãm aumentou a velocidade dos scripts que outras abordagens não conseguiam paralelizar.

“Nosso sistema éo primeiro que mostra esse tipo de transformação totalmente correta, mas também háum benefa­cio indireto. A maneira como nosso sistema foi projetado permite que outros pesquisadores e usuários da indústria desenvolvam esse trabalho”, diz Vasilakis.

Ele estãoanimado para obter feedback adicional dos usuários e ver como eles aprimoram o sistema. O projeto de ca³digo aberto se juntou a  Linux Foundation no ano passado, tornando-o amplamente dispona­vel para usuários da indústria e da academia.

Seguindo em frente, Vasilakis quer usar o PaSh para resolver o problema da distribuição osdividir um programa para rodar em muitos computadores, em vez de muitos processadores dentro de um computador. Ele também estãoprocurando melhorar o esquema de anotação para que seja mais fa¡cil de usar e possa descrever melhor os componentes complexos do programa.

“Os scripts de shell Unix desempenham um papel fundamental nas tarefas de análise de dados e engenharia de software. Esses scripts podem ser executados mais rapidamente, fazendo com que os diversos programas que eles invocam utilizem as várias unidades de processamento disponí­veis nas CPUs modernas. No entanto, a natureza dina¢mica do shell dificulta a elaboração de planos de execução paralela com antecedaªncia”, diz Diomidis Spinellis, professor de engenharia de software da Universidade de Economia e Nega³cios de Atenas e professor de análise de software da Delft Technical University, que não esteve envolvido com essa pesquisa. “Atravanãs da análise just-in-time, o PaSh-JIT consegue conquistar a complexidade dina¢mica do shell e, assim, reduzir os tempos de execução dos scripts, mantendo a exatida£o dos resultados correspondentes.”

“Como um substituto imediato para um shell comum que orquestra etapas, mas não as reordena ou divide, o PaSh oferece uma maneira fa¡cil de melhorar o desempenho de tarefas de processamento de big data”, acrescenta Douglas McIlroy, professor adjunto da Departamento de Ciência da Computação do Dartmouth College, que anteriormente liderou o Departamento de Pesquisa de Tanãcnicas de Computação nos Laborata³rios Bell (que foi o bera§o do sistema operacional Unix). “A otimização manual para explorar o paralelismo deve ser feita em umnívelpara o qual as linguagens de programação comuns (incluindo shells) não oferecem abstrações limpas. O ca³digo resultante mistura questões de lógica e eficiência. a‰ difa­cil de ler e difa­cil de manter em face da evolução dos requisitos. PaSh habilmente intervanãm neste na­vel,

Este trabalho foi apoiado, em parte, pela Agência de Projetos de Pesquisa Avana§ada de Defesa e pela National Science Foundation.

 

.
.

Leia mais a seguir