UTILIZAÇÃO DE OTIMIZAÇÃO MANUAL DE CÓDIGO NA REESCRITA DO SOFTWARE SRNA SCANNER

0057

Aluno de Iniciação Científica: André Gehring Dias de Almeida (PIBIC/CNPq)

Curso: Tecnologia em Análise e Desenvolvimento de Sistemas (T)

Orientador: Lucas Ferrari de Oliveira

Departamento: Escola Técnica da UFPR

Setor: Setor de Educação Profissional e Tecnológica

Área de Conhecimento: 10304002


RESUMO

Nos últimos anos o barateamento do preço da memória RAM e o aumento da sua capacidade alterou um paradigma utilizado na área de Bioinformática. Este paradigma de desenvolvimento de softwares utiliza muito o disco rígido e não há otimização de código. Com o advento da arquitetura multi-core e de memórias de baixo custo, o acesso ao disco passou a ser o maior entrave de qualquer aplicação, pois o disco não possui velocidade compatível com os demais componentes. Dessa maneira, as aplicações que necessitam de muito poder de processamento devem ser otimizadas para aproveitar o hardware ao máximo. O software otimizado foi o sRNAScanner, utilizado para encontrar sequências de sRNAs dentro de genomas bacterianos. O código original do software utiliza cinco arquivos de entrada, quarenta e quatro arquivos temporários e quatro arquivos de saída todos gravados em disco. A reescrita do código fonte foi feita em três etapas. A primeira etapa teve foco em uma análise parcial do código, para compreender o funcionamento do programa e o seu papel na área de biologia, além de identificar funções que pudessem ser paralelizadas. Na segunda etapa do trabalho foi desenvolvida a primeira versão reescrita do código. Utilizando a hierarquia de memória, foram substituídos os arquivos textos temporários originais por estruturas de dados dinâmicas. Na terceira etapa foi feita uma análise mais minuciosa do código e uma segunda versão do código foi desenvolvida. Nesta versão foram utilizadas técnicas de otimização manual de código. Nessa parte mais aprofundada do projeto foram detectados erros de vazamento de dados no programa original. Após corrigido esses erros o programa passou a encontrar mais sRNAs do que o original. Em todo o processo de reescrita, testes com os resultados parciais garantiram a coerência dos resultados. O teste, sempre usando as 6 threads do processador, com a bactéria Bacillus anthracis Ames AE016879, ficou 19,721 vezes mais rápido na primeira versão do código, e 108,760 vezes mais rápido na segunda versão. Nesse caso de teste o software original apresentava 255 sequências de sRNAs, com a correção dos erros na segunda versão da reescrita, o software passou a apresentar 1872 sequências de sRNAs. Segundo o software valgrind, esse caso de teste utiliza durante toda a execução aproximadamente 22,3 MB de memória.

Palavras-chave: Processamento de Alto Desempenho, Otimização, Bioinformática