quinta-feira, 9 de agosto de 2012

Programas gráficos mais fáceis com linguagem livre



Linguagem de código aberto facilita escrever programas gráficos
O tratamento de imagens, mesmo em funções disponíveis com o apertar de um botão em uma câmera ou celular, requer um processamento pesado, que é difícil de programar. [Imagem: Christine Daniloff]
Gráficos abertos
Engenheiros do MIT, nos Estados Unidos, criaram uma nova linguagem de programação otimizada para a criação de algoritmos para processamento de imagens.
O código resultante não apenas é mais claro, facilitando a manutenção e a reutilização, como também resulta em um executável mais rápido.
A nova linguagem, chamada Halide, tenta imitar ao máximo a linguagem convencional, para facilitar a programação, a revisão e a correção do código.
Isto significa que suas funções automatizam a otimização de código necessária quando o programa é feito em outras linguagens. Na média, essa otimização automatizada resulta em programas significativamente mais rápidos.
A maior vantagem, porém, é que a nova linguagem para programação gráfica não apenas é gratuita, como é de código aberto.
Otimização de código
O teste da nova linguagem não poderia ser feito de outra forma: os criadores da Halide reescreveram vários algoritmos de processamento de imagens que já foram extensivamente otimizados por programadores experientes.
O código escrito em Halide é cerca de 30% maior - em termos de linhas de código - mas apresentou ganhos em velocidade de processamento que variaram de duas a seis vezes em relação ao algoritmo original. Em um caso específico, o código em Halide gerou um executável 70 vezes mais rápido.
Uma das maiores vantagens da nova linguagem é que ela cuida automaticamente de paralelizar o processamento para cada plataforma - um processador multicore de um PC ou o processador de um smartphone, por exemplo.
Agenda de processamento
O programa em Halide tem duas seções: uma para os algoritmos, e outra para o "agendamento" do processamento.
Essa agenda pode especificar o tamanho e o formato dos blocos da imagem que cada núcleo precisa processar em cada etapa, além das dependências de dados - por exemplo, os passos executados em um determinado núcleo precisarão acessar os resultados do processamento realizado em outro núcleo.
Uma vez estabelecida a agenda, o compilador cuida do resto. Se for necessário exportar o programa para uma plataforma diferente, basta refazer a agenda, sem precisar mexer no algoritmo.
Jonathan Ragan-Kelley e Andrew Adams, os criadores do Halide, já disponibilizaram o código da nova linguagem no endereço http://halide-lang.org

Nenhum comentário:

Postar um comentário