Resultados de cálculo mais rápidos sem medo de erros Notícias do MIT

By | Junho 7, 2022

Os pesquisadores introduziram uma técnica que pode acelerar drasticamente certos tipos de programas de computador automaticamente, garantindo que os resultados do programa permaneçam precisos.

Seu sistema aumenta a velocidade dos programas executados no shell Unix, um ambiente de programação onipresente criado há 50 anos que ainda é amplamente utilizado hoje. Seu método é paralelo a 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.

“Há tantas pessoas usando esses tipos de programas, como cientistas de dados, biólogos, engenheiros e economistas. Agora eles podem acelerar automaticamente seus programas sem medo de obter resultados imprecisos ”, diz Nikos Vasilakis, cientista do Laboratório de Ciência da Computação e Inteligência Artificial (CSAIL) do MIT.

O sistema também torna mais fácil para os desenvolvedores desenvolverem ferramentas usadas por cientistas de dados, biólogos, engenheiros e outros. Eles não precisam fazer nenhum ajuste especial nos comandos de seus programas para permitir essa paralelização automática sem erros, acrescenta Vasilakis, que preside um conselho de pesquisadores de todo o mundo que trabalham no sistema há quase dois anos.

Vasilakis é o autor sênior do grupo o mais recente trabalho de pesquisaque inclui a coautora do MIT e graduada em CSAIL, Tammama Mustafa, e será apresentada no Simpósio USENIX sobre Projeto e Implementação de Sistemas Operacionais. Entre os co-autores estão o autor principal Konstantinos Kallas, graduado pela Universidade da Pensilvânia; Jan Bielak, aluno do Ginásio Staszic de Varsóvia; Dimitris Karnikis, engenheiro de software da Aarno Labs; Thurston HY Dang, um ex-pó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 em um shell Unix. Um script é uma série de comandos que instruem um computador a realizar um cálculo. A paralelização correta e automá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 único ambiente de programação que permite que um único 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 o programador usar a linguagem correta, resolver o problema pode ser muito mais fácil.

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

Embora o shell Unix permita scripts multilíngues, sua estrutura flexível e dinâmica dificulta a paralelização desses scripts usando métodos tradicionais.

Paralelizar programas geralmente é difícil porque algumas partes do programa dependem de outras. Isso determina a ordem na qual os componentes devem ser executados; ordem errada e o programa falha.

Quando um programa é escrito em uma linguagem, os desenvolvedores têm informações explícitas sobre seus recursos e uma linguagem que os ajuda a determinar quais componentes podem ser paralelizados. Mas essas ferramentas não existem para scripts de shell Unix. Os usuários não podem ver facilmente o que está acontecendo nos componentes ou extrair informações que ajudariam na paralelização.

Solução na hora

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

Isso evita outro problema com a programação do shell – é impossível prever o comportamento do programa com antecedência.

Ao paralelizar componentes de software “no momento certo”, o sistema evita esse problema. Ele é capaz de acelerar efetivamente muito mais componentes do que os métodos tradicionais que tentam executar a paralelização antecipadamente.

A paralelização de tempo também garante que o programa acelerado continue a fornecer resultados precisos. Se o PaSh atingir um componente de software que não pode ser paralelizado (pode depender de um componente que ainda não foi iniciado), ele simplesmente executa a versão original e evita causar um erro.

“Independentemente dos benefícios do desempenho – se você prometer executar algo em um segundo em vez de um ano – se houver alguma chance de obter resultados imprecisos, ninguém usará seu método”, diz Vasilakis.

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

Aceleração e precisão

Os pesquisadores testaram o PaSh em centenas de scripts, de programas clássicos a modernos, e não quebrou nenhum. O sistema foi capaz de executar programas seis vezes mais rápido, em média, em comparação com scripts incomparáveis, e alcançou uma aceleração máxima de quase 34 vezes.

Também aumentou as velocidades de script que outras abordagens não podiam comparar.

“Nosso sistema é o primeiro a mostrar esse tipo de transformação completamente correta, mas também há um benefício indireto. A forma como nosso sistema é projetado permite que outros pesquisadores e usuários do setor atualizem esse trabalho”, afirma Vasilakis.

Ele está animado para receber feedback adicional dos usuários e ver como eles melhoram o sistema. O projeto de código aberto ingressou na Linux Foundation no ano passado, tornando-o amplamente disponível para usuários da indústria e da academia.

Daqui para frente, Vasilakis quer usar o PaSh para resolver o problema da distribuição – dividir programas que serão executados em muitos computadores em vez de em muitos processadores em um único computador. Ele também quer melhorar o esquema de notas para torná-las mais fáceis de usar e descrever melhor os componentes complexos do programa.

“Os scripts de shell do Unix desempenham um papel fundamental na análise de dados e nas tarefas de engenharia de software. Esses scripts podem ser executados mais rapidamente para que os vários programas de chamada usem várias unidades de processador disponíveis em CPUs modernas. No entanto, a natureza dinâmica do shell torna isso difícil
elaborar planos de execução paralela com antecedência”, diz Diomidis Spinellis, professor de engenharia de software da Universidade de Economia e Negócios de Atenas e professor de análise de software da Delft Technical University, que não esteve envolvido no estudo. “Através da análise pontual, o PaSh-JIT consegue superar a complexidade dinâmica do shell, reduzindo assim o tempo de execução do script, mantendo a precisão dos resultados correspondentes.”

“Como um substituto para um shell simples que orquestra etapas, mas não as reorganiza ou compartilha, o PaSh oferece uma maneira despreocupada de melhorar o desempenho de trabalhos de processamento de big data”, acrescenta Douglas McIlroy, professor assistente do Departamento de Computação da Dartmouth College, que anteriormente liderou o Departamento de Pesquisa em Engenharia de Computação dos Laboratórios Bell (que foi o berço do sistema operacional Unix). “A otimização manual para explorar o paralelismo deve ser feita em um nível para o qual as linguagens de programação comuns (incluindo shells) não oferecem abstrações puras. O código resultante mistura questões de lógica e eficiência. É difícil ler e acompanhar as demandas crescentes. O PaSh entra nesse nível de maneira inteligente, mantendo a lógica original na superfície enquanto obtém eficiência ao executar o programa. ”

Este trabalho foi parcialmente financiado pela Agência para Projetos de Defesa Avançada e pela National Science Foundation.

Deixe uma resposta

O seu endereço de email não será publicado.