Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V - Souza Filho, Reinaldo Agostinho de (2022)
Programar sistemas embarcados com múltiplos núcleos de processamento não é uma tarefa trivial pois, em muitos casos, esses sistemas não têm suporte a interfaces de programação paralela que, por muitas vezes, requerem de recursos de um sistema operacional. Esse trabalho implementa uma versão da interface de programação paralela Multi processamento aberto (OpenMP do inglês Open Multi Processing) para o sistema operacional Nanvix. O OpenMP é uma interface de desenvolvimento de aplicações paralelas que permite a abstração intuitiva do paralelismo e da divisão da carga de trabalho nos processos. Na utilização de projetos com códigos embarcados, é comum haver limitações de memória nas plataformas utilizadas. Isto pode inviabilizar o uso de sistemas operacionais que implementam interfaces amigáveis para a programação. Os sistemas operacionais utilizados em plataformas de processamento embarcado costumam ser limitados em programabilidade, exigindo que o programador tenha um vasto conhecimento de processos do sistema operacional e da arquitetura de hardware utilizada. O Nanvix é um sistema operacional desenvolvido para plataformas embarcadas de múltiplos núcleos de processamento com foco em ser leve o suficiente para a utilização em ambientes com restrição de memória, mas, ao mesmo tempo, com foco na utilização de padrões que facilitam a programação. O Nanvix possui interfaces de programação paralela nativas que se inspiram no padrão Portable Operating System Interface (POSIX) utilizado para a implementação de algumas versões de OpenMP, sendo então esperado que seja possível criar uma versão para o Nanvix que resultará em uma com maior facilidade de programação em paralelo para o sistema operacional. Nesse trabalho a versão de OpenMP implementada utiliza o compilador do Nanvix para traduzir as diretivas de compilação e foi criada uma biblioteca para as rotinas de execução, sendo esta testada através de um emulador de arquitetura RISC-V. Para validação, foram utilizadas aplicações com a versão de OpenMP e versões equivalentes na biblioteca de programação paralela nativa do Nanvix. A programabilidade do Nanvix foi melhorada com OpenMP diminuindo o tempo de desenvolvimento de aplicações paralelas. Os resultados mostraram que, em alguns casos, o OpenMP possui maior eficiência paralela que a interface de programação paralela nativa do Nanvix kthreads, e em outros casos kthreads tiveram maior eficiência paralela.