0564

Título
REESCRITA DE CÓDIGO E UTILIZAÇÃO DE PARALELISMO DE DADOS PARA A BUSCA DE SMALL RNAS (SRNAS)

Aluno: Alexandre Beltzac - PIBIC/CNPq - Curso de Tecnologia em Análise e Desenvolvimento de Sistemas (T) - Orientador: Lucas Ferrari de Oliveira - Departamento de Escola Técnica da UFPR - Área de conhecimento: 10303014 - Palavras-chave: srna; reescrita de código; gpu e processamento paralelo.

O programa sRNAscanner é uma ferramenta utilizada em bioinformática para a detecção de prováveis sRNAs ("small srna") bacterianos. O sRNAscanner utiliza matrizes de frequência derivadas do genoma da E. coli K-12 MG1655 para identificar possíveis sRNAs, pequenas moléculas de RNA não-codificante, os quais tem varias funções regulatórias dentro de uma bactéria. Descobrir e catalogar esses sRNAs, juntamente com suas funções são de grande importância à Bioinformática e o software sRNAScanner é um dos mais novos e precisos nesta tarefa. Ele é escrito em C++, tem características de um programa que não foi projetado para executar em paralelo, utilizando poucas threads, e sem a capacidade de escalonamento para mais, e utilizando de forma excessiva o disco rígido para armazenar dados intermediários com o intuito de preservar memória RAM. Neste trabalho o programa foi totalmente reescrito para utilizar com maior eficiência o poder de processamento de computadores modernos, tirando vantagem de diferentes arquiteturas multithreading (Processadores Multi-núcleos e Placas de Vídeo) e utilizando da melhor forma conceitos de paralelismo. Os programas OpenSpeedShop, gprof e callgrind são ferramentas que calculam o custo de processamento de cada função na execução de um programa. Elas foram utilizadas neste trabalho e indicaram quais funções tinham um maior impacto na performance do programa e deveriam ser o foco das otimizações. Entre as mudanças feitas ao programa pode-se citar a redução do acesso ao disco rígido através da substituição do uso de arquivos por estruturas de dados em memória, melhor estruturação de funções removendo duplicidade de código, alteração de algoritmos para torna-los compatíveis com processamento paralelo e redução da complexidade computacional dos mesmos. Após as alterações a reescrita obteve um resultado que são milhares de vezes mais rápidos isso gera um resultado em alguns poucos segundos ajudando na resposta do programa que pode ser executado mais vezes com variações em seus valores de entrada, aumentando a capacidade de experimentação de pesquisadores.