Websites

O paralelismo requer aplicação de assassino para adoção em massa

Áudio revelador pode indicar possível assassino de ex-policial - Tribuna da Massa (07/01/19)

Áudio revelador pode indicar possível assassino de ex-policial - Tribuna da Massa (07/01/19)
Anonim

Muito foco e dinheiro foram investidos na construção de máquinas rápidas e melhores linguagens de programação, disse David Patterson, um computador. professor de ciências na Universidade da Califórnia, Berkeley, na conferência em Stanford na segunda-feira. Comparativamente pouca atenção tem sido dada à criação de programas de desktop em paralelo, mas aplicativos como jogos e música podem mudar isso. Usuários de tais programas exigem o melhor desempenho em tempo real, portanto os programadores podem ter que adotar modelos que dividem tarefas em vários threads e núcleos.

Por exemplo, novas formas de paralelismo podem melhorar a qualidade da música reproduzida em PCs e smartphones, Patterson disse. Código que faz um trabalho melhor de separar canais e instrumentos poderia gerar som por meio de interação paralela.

A Universidade da Califórnia, Berkeley, tem um laboratório de computação paralelo onde pesquisadores tentam entender como os aplicativos são usados, o que poderia ajudar a otimizar o código. para dispositivos portáteis. Um projeto visa levar a navegação com qualidade de desktop a dispositivos portáteis, otimizando o código com base em tarefas específicas, como renderização e análise de páginas. Outro projeto envolve a otimização de código para recuperação mais rápida de informações de saúde. O laboratório é financiado principalmente pela Intel e Microsoft.

Os pesquisadores de Berkeley estão tentando trazer o paralelismo substituindo pedaços de código originalmente escritos usando linguagens de script como Python e Ruby on Rails com o novo código C de baixo nível. O novo código se concentra especificamente em tarefas específicas, como analisar um padrão de voz específico em um aplicativo de reconhecimento de fala, Patterson disse em uma entrevista quarta-feira. O código é escrito usando OpenMP ou MPI, interfaces de programação de aplicativos projetadas para escrever aplicações paralelas em nível de máquina.

Os especialistas precisam escrever este código paralelo altamente especializado, disse Patterson. Ele reduz o tempo de desenvolvimento para os programadores que, de outra forma, usariam Python e Ruby on Rails, o que facilita o desenvolvimento de aplicativos, mas não se concentra no paralelismo, disse Patterson na entrevista. O laboratório mostrou um salto de execução de tarefas específico por um fator de 20 com o código de máquina de baixo nível.

O conceito de paralelismo não é novo e tem sido principalmente o domínio da computação de alto desempenho. Baixos níveis de paralelismo sempre foram possíveis, mas os programadores enfrentaram uma tarefa difícil com a falta de ferramentas de software e ambientes de hardware em constante mudança.

"Os threads precisam sincronizar corretamente", disse Christos Kozyrakis, professor de engenharia elétrica e ciência da computação na Universidade de Stanford, durante uma apresentação antes do painel de discussão. O código precisa ser escrito de uma forma que se torne previsível e escalável à medida que mais núcleos se tornem disponíveis.

Os compiladores também precisam ser mais inteligentes e perspicazes o suficiente para dividir os threads no tempo, para que as saídas sejam recebidas em uma sequência correta, disse Kozyrakis.. Tentativas defeituosas de criar paralelismo no código podem criar software com bugs se cálculos específicos não forem executados em uma determinada ordem. Esse é um problema comumente chamado de condições de corrida. Os codificadores também podem precisar aprender a usar várias ferramentas de programação para alcançar níveis mais sutis de paralelismo, disseram os painelistas."Não há uma abordagem preguiçosa para a programação", disse Patterson na conferência.

A memória e a latência de rede criaram gargalos na taxa de transferência de dados, o que poderia negar o desempenho alcançado pela execução paralela de tarefas. Há também diferentes ferramentas de programação para diferentes arquiteturas, o que dificulta o aproveitamento de todo o hardware disponível.

Muitas ferramentas de paralelismo disponíveis hoje são projetadas para aproveitar as capacidades de processamento paralelo de CPUs e unidades de processamento gráfico para melhorar o desempenho do sistema. Apple, Intel, Nvidia e Advanced Micro Devices estão entre as empresas que promovem o OpenCL, um ambiente de programação paralela que será suportado no próximo sistema operacional Mac OS X 10.6 da Apple, também chamado de Snow Leopard, que será lançado na sexta-feira. A OpenCL concorre com a Microsoft, que está promovendo suas ferramentas proprietárias de programação paralela DirectX, e Nvidia, que oferece a estrutura CUDA.

OpenCL inclui uma linguagem de programação tipo C com APIs (interfaces de programação de aplicativos) para gerenciar a distribuição de kernels através de hardware como núcleos de processador e outros recursos. O OpenCL pode ajudar o Mac OS a decodificar o vídeo mais rapidamente, distribuindo o processamento de pixels em várias unidades de processamento gráfico e de CPU em um sistema. Todas as ferramentas existentes são voltadas para diferentes ambientes de software e aproveitam diferentes recursos, disse Patterson. O OpenCL, por exemplo, é voltado mais para a execução de tarefas em GPUs. Modelos proprietários como o DirectX são difíceis de implementar em ambientes de computação heterogêneos, enquanto alguns modelos como o OpenCL se adaptam apenas a ambientes específicos que dependem de GPUs. “Eu não acho que o OpenCL será adotado em todas as arquiteturas”. Patterson disse. "Precisamos, entretanto, de tentar outras coisas", como tentar melhorar os modelos de programação com ferramentas de desenvolvimento comumente usadas, como Ruby on Rails, ele disse.

Enquanto os membros da platéia apontaram que o paralelismo tem sido um problema para décadas, os palestrantes disseram que as universidades estão agora adotando uma nova abordagem para trabalhar em várias ferramentas de programação para permitir o paralelismo. Após anos de financiamento do desenvolvimento de chips, o governo também está prestando mais atenção ao processamento paralelo financiando programas relacionados.

Kozyrakis disse que Stanford estabeleceu um laboratório que visa "tornar o desenvolvimento de aplicativos paralelo prático para as massas" até 2012. Os pesquisadores estão trabalhando com empresas como Intel, AMD, IBM, Sun, Hewlett-Packard e Nvidia.

Um teste de tarefa imediato para desenvolvedores poderia ser tentar converter código legado existente em paralelo para execução em chips modernos, Patterson de Berkeley disse. Algumas empresas estão oferecendo paralelização automática, mas reescrever e compilar o código legado originalmente escrito para execução sequencial pode ser um grande desafio. “Há dinheiro a ser feito nessas áreas”, disse Patterson.