Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V

Detalhes bibliográficos
Autor(a) principal: Souza Filho, Reinaldo Agostinho de
Data de Publicação: 2022
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFRN
Texto Completo: https://repositorio.ufrn.br/handle/123456789/48990
Resumo: 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.
id UFRN_f5a14f491deb314a58a8b015390edf1b
oai_identifier_str oai:https://repositorio.ufrn.br:123456789/48990
network_acronym_str UFRN
network_name_str Repositório Institucional da UFRN
repository_id_str
spelling Souza Filho, Reinaldo Agostinho dehttp://lattes.cnpq.br/7696645664619092https://orcid.org/0000-0001-8747-4580http://lattes.cnpq.br/9892239670106361Freitas, Henrique Cota deSilva, Kayo Gonçalves ehttp://lattes.cnpq.br/8953461509650063Barros, Tiago Tavares LeiteSouza, Samuel Xavier de2022-08-02T19:56:48Z2022-08-02T19:56:48Z2022-04-26SOUZA FILHO, Reinaldo Agostinho de. Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V. 2022. 67f. Dissertação (Mestrado em Engenharia Elétrica e de Computação) - Centro de Tecnologia, Universidade Federal do Rio Grande do Norte, Natal, 2022.https://repositorio.ufrn.br/handle/123456789/48990Programar 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.Multicore programming is not a trivial task. In some cases, multicore systems have no parallel programming interfaces, which requires operating system support to be made available. This work implements a version of the development interface of parallel programming Open Multi-Processing (OpenMP) for the Nanvix operating system. OpenMP is a parallel application development interface that allows for the intuitive abstraction of parallelism and the division of workload across processes. It is common to have memory limitations in platforms that embed codes in their projects. These memory limitations could make unavailable the use of an operating system with programming-friendly interfaces. The system software of embedded processing platforms is limited in programmability, requiring more knowledge from the programmer about the process and the hardware architecture used. Nanvix is an operating system embedded in multicore platforms, being light enough to fit in memory restriction environments; however, it has standards that ease the programming. Nanvix includes native parallel programming interfaces inspired on the Portable Operating System Interface (POSIX) adopted to implement some versions of OpenMP, that hopes to build an OpenMP version to Nanvix it is going to result in easy coding for the operating system. In this work, the version of OpenMP uses the Nanvix’s compilator to translate the compilation directives, and it assembles a library to the running routines. It was tested in an emulator of the RISC-V architecture. Some applications were built in the OpenMP version and their equivalent on the native Nanvix library of parallel programming to validate the library. The programmability of Nanvix is improved with OpenMP, lowering the development time of parallel applications without a considerable performance loss. The results show that, in some cases, OpenMP has more parallel efficiency compared to Nanvix’s native API kthreads, and in other cases, the kthreads has more efficiency.Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - CAPESUniversidade Federal do Rio Grande do NortePROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA E DE COMPUTAÇÃOUFRNBrasilCNPQ::ENGENHARIAS::ENGENHARIA ELETRICASistema operacionalNanvixOpenMPEmbarcadoParalelismoImplementação de OpenMP para o Sistema Operacional Nanvix em RISC-Vinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFRNinstname:Universidade Federal do Rio Grande do Norte (UFRN)instacron:UFRNORIGINALImplementacaoOpenMPSistema_SouzaFilho_2022.pdfapplication/pdf1166474https://repositorio.ufrn.br/bitstream/123456789/48990/1/ImplementacaoOpenMPSistema_SouzaFilho_2022.pdf96133ca652f78e2b0649fb9486e70af2MD51123456789/489902022-08-02 16:57:36.091oai:https://repositorio.ufrn.br:123456789/48990Repositório de PublicaçõesPUBhttp://repositorio.ufrn.br/oai/opendoar:2022-08-02T19:57:36Repositório Institucional da UFRN - Universidade Federal do Rio Grande do Norte (UFRN)false
dc.title.pt_BR.fl_str_mv Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V
title Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V
spellingShingle Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V
Souza Filho, Reinaldo Agostinho de
CNPQ::ENGENHARIAS::ENGENHARIA ELETRICA
Sistema operacional
Nanvix
OpenMP
Embarcado
Paralelismo
title_short Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V
title_full Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V
title_fullStr Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V
title_full_unstemmed Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V
title_sort Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V
author Souza Filho, Reinaldo Agostinho de
author_facet Souza Filho, Reinaldo Agostinho de
author_role author
dc.contributor.authorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/7696645664619092
dc.contributor.advisorID.pt_BR.fl_str_mv https://orcid.org/0000-0001-8747-4580
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/9892239670106361
dc.contributor.referees1.none.fl_str_mv Freitas, Henrique Cota de
dc.contributor.referees2.none.fl_str_mv Silva, Kayo Gonçalves e
dc.contributor.referees2Lattes.pt_BR.fl_str_mv http://lattes.cnpq.br/8953461509650063
dc.contributor.referees3.none.fl_str_mv Barros, Tiago Tavares Leite
dc.contributor.author.fl_str_mv Souza Filho, Reinaldo Agostinho de
dc.contributor.advisor1.fl_str_mv Souza, Samuel Xavier de
contributor_str_mv Souza, Samuel Xavier de
dc.subject.cnpq.fl_str_mv CNPQ::ENGENHARIAS::ENGENHARIA ELETRICA
topic CNPQ::ENGENHARIAS::ENGENHARIA ELETRICA
Sistema operacional
Nanvix
OpenMP
Embarcado
Paralelismo
dc.subject.por.fl_str_mv Sistema operacional
Nanvix
OpenMP
Embarcado
Paralelismo
description 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.
publishDate 2022
dc.date.accessioned.fl_str_mv 2022-08-02T19:56:48Z
dc.date.available.fl_str_mv 2022-08-02T19:56:48Z
dc.date.issued.fl_str_mv 2022-04-26
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv SOUZA FILHO, Reinaldo Agostinho de. Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V. 2022. 67f. Dissertação (Mestrado em Engenharia Elétrica e de Computação) - Centro de Tecnologia, Universidade Federal do Rio Grande do Norte, Natal, 2022.
dc.identifier.uri.fl_str_mv https://repositorio.ufrn.br/handle/123456789/48990
identifier_str_mv SOUZA FILHO, Reinaldo Agostinho de. Implementação de OpenMP para o Sistema Operacional Nanvix em RISC-V. 2022. 67f. Dissertação (Mestrado em Engenharia Elétrica e de Computação) - Centro de Tecnologia, Universidade Federal do Rio Grande do Norte, Natal, 2022.
url https://repositorio.ufrn.br/handle/123456789/48990
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal do Rio Grande do Norte
dc.publisher.program.fl_str_mv PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO
dc.publisher.initials.fl_str_mv UFRN
dc.publisher.country.fl_str_mv Brasil
publisher.none.fl_str_mv Universidade Federal do Rio Grande do Norte
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFRN
instname:Universidade Federal do Rio Grande do Norte (UFRN)
instacron:UFRN
instname_str Universidade Federal do Rio Grande do Norte (UFRN)
instacron_str UFRN
institution UFRN
reponame_str Repositório Institucional da UFRN
collection Repositório Institucional da UFRN
bitstream.url.fl_str_mv https://repositorio.ufrn.br/bitstream/123456789/48990/1/ImplementacaoOpenMPSistema_SouzaFilho_2022.pdf
bitstream.checksum.fl_str_mv 96133ca652f78e2b0649fb9486e70af2
bitstream.checksumAlgorithm.fl_str_mv MD5
repository.name.fl_str_mv Repositório Institucional da UFRN - Universidade Federal do Rio Grande do Norte (UFRN)
repository.mail.fl_str_mv
_version_ 1802117536570933248