Podemos criar um ambiente de programação que não exija que todo pesquisador seja um cientista da computação? Crédito:Unsplash / Markus Spiske
Décadas atrás, computadores eram caros, complexo e raro.
A revolução do computador pessoal mudou tudo isso, fornecendo à maioria de nós gadgets mais baratos e acessíveis que eram menores, mais rápido e fácil de usar. Os cientistas também se beneficiaram. Eles desenvolveram técnicas computadorizadas para estudar o funcionamento interno das células, as órbitas dos planetas em torno de estrelas distantes e outros fenômenos que estavam muito além de seus poderes de observação.
Mas para pesquisadores de ponta, surgiu uma certa ironia:instrumentos novos e sofisticados estão começando a produzir tantos dados que são necessários supercomputadores para analisar os resultados experimentais. E os cientistas que tentam analisar conjuntos de dados tão grandes geralmente lutam para dominar a complexidade do software necessário para programar o hardware.
Digite o regente, uma nova linguagem de programação desenvolvida por um grupo liderado pelo cientista da computação de Stanford Alex Aiken. Entre outras coisas, O Regent torna os supercomputadores mais fáceis de usar. “Queríamos criar um ambiente de programação que não exigisse que todo pesquisador fosse um cientista da computação, "diz Aiken, o Professor Alcatel-Lucent em Comunicações e Redes.
O Regent ajuda a resolver um dos maiores desafios da supercomputação:os supercomputadores de hoje são muito mais complexos do que nunca, e as linguagens de programação existentes têm se esforçado para acompanhar o ritmo. Um supercomputador pode parecer na imaginação popular como uma máquina gigante, mas é na verdade uma série de milhares de microprocessadores que funcionam juntos. Os cientistas normalmente programam essas matrizes usando C ++, uma linguagem de software inventada há cerca de 40 anos - uma era na era da ciência da computação. Naquela época, o microprocessador predominante era a unidade de processamento central, ou CPU, o chip que lançou a revolução do PC. CPUs resolvem grandes problemas rapidamente, um cálculo após o outro, no que os programadores chamam de estilo serial.
Mais recentemente, Contudo, um segundo tipo de microprocessador tornou-se importante para a supercomputação:a unidade de processamento gráfico, ou GPU. Usado pela primeira vez para controlar milhões de pixels em telas de computador para melhorar o visual dos videogames, GPUs podem realizar muitos cálculos semelhantes simultaneamente, ou em paralelo, como diriam os programadores. O processamento paralelo tem se mostrado extremamente útil em aplicativos como aprendizado de máquina. C ++ foi atualizado para acompanhar essas e outras mudanças de hardware. Infelizmente, o acréscimo de patches tornou a linguagem cada vez mais difícil de usar. Regente, Contudo, torna mais fácil para um programador de supercomputador fazer coisas como atribuir tarefas de processamento serial a CPUs e tarefas de processamento paralelo a GPUs.
Uma vez que o Regent estruturou o programa em um nível conceitual, as intenções do programador são traduzidas - ou, para usar o termo técnico, compilado em uma segunda camada de software chamada Legion, que Aiken também desenvolveu. Legion gera código de máquina - instruções precisas que direcionam o hardware do supercomputador sobre como executar o programa. A forte integração entre Regent e Legion torna mais fácil para os programadores tomarem outras decisões importantes; notavelmente, onde armazenar os dados que o supercomputador deve analisar.
Elliott Slaughter, um cientista do SLAC National Accelerator Laboratory que trabalhou no Regent and Legion quase desde o seu início, afirma que a integração entre as duas camadas economiza tempo e dinheiro para os programadores. Os computadores consomem energia, que tem um custo. Mas o custo de energia para mover dados pode ser 100 vezes o custo de realizar cálculos nesses dados. Além disso, grandes experimentos geralmente contam com instrumentos que coletam enormes quantidades de dados. Slaughter disse que alguns instrumentos podem coletar dados equivalentes a 20 DVDs de vídeo a cada segundo para experimentos que duram 15 minutos. Mesmo movendo-se na velocidade da luz sobre a fibra óptica, obter tantos dados do instrumento para o supercomputador pode criar atrasos que podem atrapalhar a análise. "Onde você coloca os dados acaba sendo uma das decisões mais importantes que um programador faz, "Slaughter diz. Regent e Legion economizam tempo e dinheiro, dando ao programador um controle sem precedentes sobre onde armazenar os dados enquanto aguardam a computação.
O Regent se espalhará? Os pesquisadores dizem que as novas linguagens devem superar uma grande quantidade de inércia. "Regent é uma forma muito diferente de programação, "Aiken diz." Vai demorar um pouco para os pesquisadores adotarem a mentalidade necessária. "
Mas dois fatores atuam a seu favor. Primeiro, o hardware de supercomputação continua a melhorar. O Departamento de Energia dos EUA está impulsionando os desenvolvimentos com seu Projeto de Computação Exascale, que visa atingir um aumento de 50 vezes no poder da supercomputação por volta de 2021. O DOE está apoiando projetos de software, incluindo regente, para ajudar a manter o ritmo da programação.
Além disso, muitos cientistas que gostariam de usar supercomputadores não estão familiarizados com as ferramentas atuais e desconfiam da curva de aprendizado íngreme necessária para programar grandes experimentos. Até mesmo programadores de supercomputadores experientes podem achar o sistema atual complicado e se perguntar se não há uma maneira melhor. "Conversamos regularmente com cientistas que percebem como o Regent torna a vida muito mais fácil para eles, "Aiken disse.