Pesquisadores desenvolveram um novo sistema que pode tornar os programas de computador mais rápidos, garantindo a precisão.
Por MIT – Instituto de Tecnologia de Massachusetts – com informaçõe de Science Daily.
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 permaneç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 mé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.
“Há tantas pessoas que usam 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 incorretos”, diz Nikos Vasilakis, pesquisador da Computer Laboratório de Ciência e Inteligência Artificial (CSAIL) do MIT.
O sistema também facilita para os programadores que desenvolvem ferramentas que cientistas de dados, biólogos, engenheiros e outros usam. Eles não precisam fazer nenhum ajuste especial nos comandos de seus programas para permitir essa paralelização automática e sem erros, acrescenta Vasilakis, que preside um comitê de pesquisadores de todo o mundo que trabalham nesse sistema há quase dois anos.
Vasilakis é o autor sê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 Simpósio USENIX sobre Projeto e Implementação de Sistemas Operacionais. na Universidade da Pensilvânia; Jan Bielak, estudante da Varsóvia Staszic High School; 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 no shell do Unix. Um script é uma sequência de comandos que instrui 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 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 fácil.
“As pessoas também gostam de desenvolver em diferentes linguagens de programação, então compor todos esses componentes em um único 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 torna esses scripts difíceis de paralelizar usando mé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 têm informações explí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á acontecendo 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 paralelizáveis. 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 na programação shell – é impossível prever o comportamento de um programa com antecedê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 mé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 do 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ão importa os benefícios de desempenho – se você prometer fazer algo funcionar em um segundo em vez de um ano – se houver alguma chance de retornar resultados incorretos, ninguém usará seu mé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 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, quando comparado a scripts não paralelos, e alcançou uma aceleração máxima de quase 34 vezes.
També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 benefício indireto. A maneira como nosso sistema é projetado permite que outros pesquisadores e usuários da indústria desenvolvam esse trabalho”, diz Vasilakis.
Ele está animado para obter feedback adicional dos usuários e ver como eles aprimoram o sistema. O projeto de código aberto se juntou à Linux Foundation no ano passado, tornando-o amplamente disponí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 – dividir um programa para rodar em muitos computadores, ao invés de muitos processadores dentro de um computador. Ele também está procurando melhorar o esquema de anotação para que seja mais fácil de usar e possa descrever melhor os componentes complexos do programa.
Este trabalho foi apoiado, em parte, pela Agência de Projetos de Pesquisa Avançada de Defesa e pela National Science Foundation.
Fonte da história:
Materiais fornecidos pelo Instituto de Tecnologia de Massachusetts . Original escrito por Adam Zewe.