Sunita Chandrasekaran, professor assistente de ciências da computação e da informação, está projetando estruturas para adaptar o código a sistemas de computador cada vez mais poderosos. Ela está trabalhando com padrões complexos conhecidos como wavefronts, que são retratados no fundo desta imagem. Crédito:Joy Smoker
O supercomputador mais rápido do mundo agora pode executar 200, 000 trilhões de cálculos por segundo, e várias empresas e agências governamentais em todo o mundo estão competindo para construir uma máquina que terá o poder do computador para simular redes na escala do cérebro humano. Este hardware extremamente poderoso requer software extremamente poderoso, portanto, o código de software existente deve ser atualizado continuamente para acompanhar.
Sunita Chandrasekaran, professor assistente de ciências da computação e da informação na Universidade de Delaware, é perfeitamente adequado para este desafio. Com uma nova bolsa da National Science Foundation, ela está projetando estruturas para adaptar o código a sistemas cada vez mais poderosos. Ela está trabalhando com padrões complexos conhecidos como wavefronts, que são comumente encontrados em códigos científicos usados na análise do fluxo de nêutrons em um reator nuclear, extração de padrões de dados biomédicos ou previsão de padrões atmosféricos.
Chandrasekaran é um especialista em programação paralela - escrevendo código de software que pode ser executado simultaneamente em muitos processadores multi-core. A programação paralela é uma disciplina cada vez mais importante dentro da ciência da computação, à medida que mais e mais universidades e empresas usam supercomputadores poderosos para analisar grandes faixas de dados, de resultados científicos a percepções sobre o comportamento do consumidor e muito mais.
Chandrasekaran está procurando aplicações científicas para ver como foram escritas, como eles têm se desempenhado em arquiteturas desatualizadas, que tipo de modelos de programação foram usados, e quais desafios surgiram.
"Na maioria das vezes, os modelos de programação são criados em um amplo curso, "disse ela." Porque eles são generalizados para abordar um grande conjunto de padrões paralelos comumente encontrados, muitas vezes os modelos perdem a criação de recursos para alguns padrões paralelos complexos, como as frentes de onda, que estão ocultos em algumas aplicações científicas. "
Uma frente de onda permite a análise de padrões em menos etapas. A questão é:como você faz com que o modelo de programação faça isso?
Um exemplo é Minisweep, um miniapp que modela cenários dentro de um reator nuclear ao "varrer" uma grade com quadrados que representam pontos no espaço e são usados para calcular as posições, energias, e fluxos de nêutrons. Este aplicativo pai para Minisweep é usado para reduzir as chances de um colapso e para proteger os engenheiros que trabalham ao redor do reator nuclear da exposição à radiação. No início deste ano, Chandrasekaran e o estudante de doutorado Robert Searles demonstraram como eles modificaram o miniapp para executar 85,06 vezes mais rápido do que o código que não foi paralelizado. Este trabalho foi recentemente apresentado na conferência Platform for Advanced Scientific Computing (PASC) 2018 e publicado pela Association for Computing Machinery (ACM).
"Nós nos perguntamos:esse padrão é específico do Minisweep ?, "disse ela." Ou vai existir em outros códigos? Existem outros códigos que poderiam se beneficiar se eu colocasse esse tipo de padrão em um modelo de programação, criasse uma implementação e avaliasse? "
Por exemplo, Chandrasekaran descobriu que alguns algoritmos em bioinformática, o estudo de grandes conjuntos de dados biológicos, continha padrões semelhantes. Ela suspeita que, adaptando o software escrito para Minisweep, ela pode fazer grandes avanços para melhorar o código. Ela vai tentar isso com dados de Erez Lieberman Aiden, professor assistente de genética molecular e humana no Baylor College of Medicine e professor assistente de ciência da computação na Rice University. Chandrasekaran conheceu Aiden quando ele visitou a UD para dar uma palestra intitulada "Processamento Paralelo dos Genomas, pelos Genomas e pelos Genomas. "
Chandrasekaran foi inspirado pelo trabalho de Aiden com sequências de DNA. Ele usa uma ferramenta de computação para encontrar interações de longo alcance entre quaisquer dois elementos no mesmo cromossomo, por sua vez, mostrando a base genética das doenças. Chandrasekaran suspeitou que ela poderia utilizar os padrões existentes e atualizar o código, permitindo uma análise mais rápida destes importantes dados biológicos.
"O objetivo não é simplesmente criar uma ferramenta de software, "ela disse." O objetivo é construir estudos de caso da vida real onde o que eu criar terá importância em termos de tornar a ciência mais fácil. "
Modelos de programação paralela baseados em diretivas, como OpenACC e OpenMP, serão explorados para fazer isso.
Chandrasekaran visa manter o desempenho e a portabilidade enquanto ela redesenha algoritmos. Ela também manterá os cientistas que usam os algoritmos em mente.
"Você não pode criar um modelo de programação olhando apenas para o aplicativo ou apenas para a arquitetura, "ela disse." Tem que haver algum equilíbrio. "
Este projeto beneficiará desenvolvedores de aplicativos científicos que não são necessariamente cientistas da computação. "Eles podem se concentrar mais na ciência e menos no software, "disse Chandrasekaran. Os cientistas vêm até ela com conjuntos de dados e problemas que levam horas, dias, às vezes, meses para calcular, e ela descobre como fazê-los correr mais rápido, permitindo assim a ciência mais recente.
Chandrasekaran analisará os dados fornecidos por Aiden em Baylor e físicos no Oak Ridge National Lab. Searles também trabalhará no projeto, e Chandrasekaran está procurando outro aluno de pós-graduação com aptidão para programação paralela para ajudar neste projeto.