PROCESSAMENTO EM CUDA UTILIZANDO PARALELIZAÇÃO DE DADOS PARA A BUSCA DE SMALL RNAS (SRNAS)

0052

Aluno de Iniciação Científica: Júlia Pacholok Veiga e Souza (PIBIC/Fundação Araucária)

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

Orientador: Lucas Ferrari de Oliveira

Colaborador: Maria Berenice Steffens

Departamento: Escola Técnica da UFPR

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

Área de Conhecimento: 10300007


RESUMO

Devido ao rápido avanço da tecnologia das GPUs (Graphic Processing Units) e com o surgimento da GPGPU (GPU de Propósito Geral) visando utilizar a GPU como processador auxiliar e não apenas como placa gráfica, a NVIDIA desenvolveu a plataforma de programação CUDA (Compute Unified Device Structure), a primeira solução para programação de propósito geral em GPUs. Essa plataforma de desenvolvimento contém ferramentas que formam um modelo de programação paralela de fácil aprendizagem e vasta aplicação. As aplicações com maior potencial de paralelização são aquelas que executam uma mesma operação em grande quantidade de dados, realizando a operação para cada dado paralelamente. Partindo do trabalho de otimização do sRNAScanner, foram selecionadas funções que poderiam passar por outro processo de reescrita, utilizando CUDA. O trabalho de paralelização começou com o estudo da plataforma CUDA e do software otimizado em si, seguido por estudos de bibliotecas especializadas: a biblioteca STL, da linguagem C++, que é uma coleção de estruturas de dados; e sua implementação em CUDA que está disponível através da biblioteca Thrust. Utilizando os conhecimentos adquiridos, primeiramente foi analisada a possibilidade de paralelização de um conjunto de três funções do programa, que tratam dos valores de espaçamento entre os promotores -35 e -10 numa sequência de sRNA previamente encontrada. Durante a análise da função percebeu-se que para realizar a paralelização com sucesso seria necessário copiar muitos dados para a memória da GPU antes da execução, o que caracterizaria um processamento custoso demais, mesmo utilizando a programa otimizado. Assim, a reescrita que deveria aprimorar o processamento acabaria desfavorecendo-o. Logo, analisou-se outra função com grande potencial para paralelização, esta responsável por realizar o cálculo das matrizes de peso posicional, a parte principal do programa, pois a partir desse cálculo são encontradas as possíveis sequências de sRNA. São utilizadas 3 matrizes, cujos valores são calculados utilizando a mesma sequência de dados, o que possibilitou uma paralelização mais efetiva que a função anterior. A paralelização do código ainda está em fase de testes, mas com os resultados prévios é possível afirmar que o custo da cópia de dados para a memória da GPU será compensado pelo processamento, considerando que com a paralelização a função pode ser abordada de outras maneiras além da original, possibilitando assim uma comparação entre as formas de estruturar a função na plataforma CUDA, para assim atingir o melhor resultado possível.

Palavras-chave: GPGPU, CUDA, Processamento de Alto Desempenho