NeurOMP: Paralelização automática de código utilizando Aprendizagem por Reforço - Saffran, João; Rocha, Rodrigo Caetano; Góes, Luís Fabrício (Anais do Simpósio em Sistemas Computacionais de Alto Desempenho (SSCAD); 2020: Anais do XXI Simpósio em Sistemas Computacionais de Alto Desempenho, 2020)
A criação de aplicações que obtenham o máximo de desempenho computacional nas arquiteturas modernas é uma tarefa complexa. Além de utilizar conhecimentos de paralelismo, o programador precisar ter um amplo conhecimento de vários outros aspectos da aplicação. Por este motivo, os compiladores modernos tentam paralelizar algoritmos de maneira automática, utilizando a análise estática do código. Uma maneira de melhorar o processo de tomada de decisão do compilador é utilizando Aprendizagem por Reforço (RL). Este trabalho propõe e avalia uma otimização, chamada NeurOMP, que utiliza RL para paralelizar for loops em códigos C utilizando a biblioteca OpenMP. Os resultados experimentais mostram que o NeurOMP obtém um speedup médio no CAP Bench de 1.6, similar a um especialista humano.