PROCESSAMENTO EM CUDA UTILIZANDO PARALELIZAÇÃO DE DADOS PARA A BUSCA DE SMALL RNAS (SRNAS) Júlia Pacholok Veiga e Souza PIBIC/Fundação Araucária Lucas Ferrari de Oliveira Partindo do trabalho realizado com a reescrita do código do software sRNAScanner, observou-se que a linguagem CUDA, apresentada em 2006 pela NVIDIA, poderia auxiliar na otimização do programa de busca de small RNAs considerando a presença de funções que trabalham sobre uma grande quantidade de dados, realizando um mesmo conjunto de operações para todos eles, e caracterizam-se assim como candidatas à paralelização de dados. Para o desenvolvimento do projeto utilizou-se a linguagem de programação CUDA, conhecimentos sobre a biblioteca STL para C++, a biblioteca Thrust para CUDA, além de conceitos sobre o funcionamento das GPGPUs NVIDIA e estudos sobre programação paralela. 1. KIRK, D. Programando para processadores paralelos: uma abordagem prática à programação de GPU. 2. NVIDIA Corporation. An Introduction to the Thrust Parallel Algorithms Library. 3. TARIQ, S. An Introduction to GPU Computing and CUDA Architecture. Com a linguagem CUDA, a programação paralela apresentase mais acessível ao programador. O leque de oportunidades que se apresentam com a programação paralela é vasto, permitindo ao programador explorar diferentes abordagens para a resolução de problemas. Contudo, as aplicações que podem aplicar os conceitos da programação paralela com sucesso são relativamente específicas, de forma que os trabalhos realizados não diferem muito entre si quando analisamos simplesmente o código, desconsiderando a finalidade da aplicação. Na reescrita do sRNAScanner para utilizar a paralelização, obteve-se resultados positivos considerando as possibilidades encontradas, comparando o desempenho entre as abordagens ao delegar trechos de código que contém estruturas de decisão tanto para a CPU quanto para a GPU, analisando assim quais partes do código são melhor tratadas pela programação paralela. Partindo dos devidos estudos sobre o funcionamento das GPGPUs e a plataforma CUDA, aliada à bibliotecas especializadas, é possível adaptar programas para versões paralelizadas mais eficientes que não exigirão conhecimentos adicionais do usuário final e são de fácil aprendizado para o programador.