Suporte de Computações Octave Independentes em Multiprocessadores de Memória Partilhada

Detalhes bibliográficos
Autor(a) principal: Freitas, Duarte Filipe de
Data de Publicação: 2023
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: http://hdl.handle.net/10362/160378
Resumo: O objetivo deste projeto é desenvolver uma biblioteca para o Octave capaz de paralelizar funções em sistemas de memória partilhada, neste caso, o problema principal que a biblioteca está a resolver são algoritmos de otimização de funções sem derivadas. O Octave é open source, ou seja, qualquer pessoa pode criar uma biblioteca para qualquer problema que tenha, por isso existem várias, nomeadamente bibliotecas que correm fun- ções Octave em paralelo, como a parallel package. No entanto, esta biblioteca foi desenvolvida principalmente para paralelizar usando diferentes máquinas em sistemas distribuídos resultando num sistema de paralelização de memória partilhada bastante simples onde apenas se cria os processos, corre-se a função uma vez e devolve-se os resultados. Portanto para este projeto criei uma biblioteca do zero. Difere da que já existe porque funciona mais como uma worker pool, isto é, cria o número requerido de workers que ficam inifinitamente à espera de receber novos jobs, jobs, no contexto deste projeto são um novo conjunto de valores de entrada que os workers recebem para correr a função. A biblioteca tem suporte para funções implementadas em Octave (funções interpretadas) e funções implementadas em C/C++ (funções compiladas) compiladas em bibliotecas dinâmicas com duas interfaces diferentes, mas usadas da mesma maneira. Para implementar a biblioteca usei octfiles que são pedaços de código C++ compilados com o API do Octave e podem ser usados como funções normais no Octave. Além disso, usei bibliotecas padrão do C e sistemas do Linux: os threads do C++11 e a system call fork do Linux para a paralelização. Os threads foram usados na interface para funções compiladas e os processos para a interface de funções interpretadas. Para verificar a eficácia e correção da biblioteca modifiquei um algoritmo de otimização BoostDMS para, no passo que avalia a função com os vários valores de entrada gerados, sequencialmente, usar a minha biblioteca e correr este passo concorrentemente e corri-o em máquinas com processadores de vários núcleos de computação onde obti resultados positivos. Os resultados mostram uma têndencia a diminuir o tempo de computação do algoritmo com o aumento de workers utilizados maximizando quando o número de workers é igual ou superior ao número valores gerados para analisar.
id RCAP_b91e52dde31f7c5180c810aa0eb3228e
oai_identifier_str oai:run.unl.pt:10362/160378
network_acronym_str RCAP
network_name_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository_id_str 7160
spelling Suporte de Computações Octave Independentes em Multiprocessadores de Memória PartilhadaOctavePralelizaçãoC++WorkersDomínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaO objetivo deste projeto é desenvolver uma biblioteca para o Octave capaz de paralelizar funções em sistemas de memória partilhada, neste caso, o problema principal que a biblioteca está a resolver são algoritmos de otimização de funções sem derivadas. O Octave é open source, ou seja, qualquer pessoa pode criar uma biblioteca para qualquer problema que tenha, por isso existem várias, nomeadamente bibliotecas que correm fun- ções Octave em paralelo, como a parallel package. No entanto, esta biblioteca foi desenvolvida principalmente para paralelizar usando diferentes máquinas em sistemas distribuídos resultando num sistema de paralelização de memória partilhada bastante simples onde apenas se cria os processos, corre-se a função uma vez e devolve-se os resultados. Portanto para este projeto criei uma biblioteca do zero. Difere da que já existe porque funciona mais como uma worker pool, isto é, cria o número requerido de workers que ficam inifinitamente à espera de receber novos jobs, jobs, no contexto deste projeto são um novo conjunto de valores de entrada que os workers recebem para correr a função. A biblioteca tem suporte para funções implementadas em Octave (funções interpretadas) e funções implementadas em C/C++ (funções compiladas) compiladas em bibliotecas dinâmicas com duas interfaces diferentes, mas usadas da mesma maneira. Para implementar a biblioteca usei octfiles que são pedaços de código C++ compilados com o API do Octave e podem ser usados como funções normais no Octave. Além disso, usei bibliotecas padrão do C e sistemas do Linux: os threads do C++11 e a system call fork do Linux para a paralelização. Os threads foram usados na interface para funções compiladas e os processos para a interface de funções interpretadas. Para verificar a eficácia e correção da biblioteca modifiquei um algoritmo de otimização BoostDMS para, no passo que avalia a função com os vários valores de entrada gerados, sequencialmente, usar a minha biblioteca e correr este passo concorrentemente e corri-o em máquinas com processadores de vários núcleos de computação onde obti resultados positivos. Os resultados mostram uma têndencia a diminuir o tempo de computação do algoritmo com o aumento de workers utilizados maximizando quando o número de workers é igual ou superior ao número valores gerados para analisar.The objective of this project is to develop a library for Octave capable of parallelizing functions on shared memory systems. In this case, the main problem that the library is addressing is optimization algorithms for functions without derivatives. Octave is open source, which means anyone can create a library for any problem they may have, which is why there are several, including libraries that run Octave functions in parallel, such as the ’parallel’ package. However, this library was mainly developed to parallelize using different machines in distributed systems, resulting in a very simple shared memory parallelization system where processes are created, the function is run once, and the results are returned. Therefore, for this project, I created a library from scratch. It differs from what already exists because it works more like a worker pool, that is, it creates the required number of workers that are infinitely waiting to receive new jobs. In the context of this project, jobs are a new set of input values that workers receive to run the function. The library supports functions implemented in Octave (interpreted functions) and functions implemented in C/C++ (compiled functions) compiled into dynamic libraries with two different interfaces, but used in the same way. To implement the library, I used octfiles, which are pieces of C++ code compiled with the Octave API and can be used as regular functions in Octave. In addition to this, I used standard C libraries and Linux systems: C++11 threads and the Linux fork system call, for parallelization. Threads were used in the interface for compiled functions, and processes were used in the interface for interpreted functions. To verify the effectiveness and correctness of the library, I modified an optimization algorithm named BoostDMS to use my library to run the step that evaluates the function with the various generated input values concurrently instead of sequentially. I ran this modified algorithm on machines with processors with multiple computing cores and obtained positive results. The results show a tendency to decrease the computation time of the algorithm with the increase of workers used, maximizing when the number of workers is equal to or greater than the number of generated values to analyze.Medeiros, PedroRUNFreitas, Duarte Filipe de2023-11-23T18:23:27Z2023-072023-07-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10362/160378porinfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2024-03-11T05:43:04Zoai:run.unl.pt:10362/160378Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-20T03:58:00.767663Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse
dc.title.none.fl_str_mv Suporte de Computações Octave Independentes em Multiprocessadores de Memória Partilhada
title Suporte de Computações Octave Independentes em Multiprocessadores de Memória Partilhada
spellingShingle Suporte de Computações Octave Independentes em Multiprocessadores de Memória Partilhada
Freitas, Duarte Filipe de
Octave
Pralelização
C++
Workers
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
title_short Suporte de Computações Octave Independentes em Multiprocessadores de Memória Partilhada
title_full Suporte de Computações Octave Independentes em Multiprocessadores de Memória Partilhada
title_fullStr Suporte de Computações Octave Independentes em Multiprocessadores de Memória Partilhada
title_full_unstemmed Suporte de Computações Octave Independentes em Multiprocessadores de Memória Partilhada
title_sort Suporte de Computações Octave Independentes em Multiprocessadores de Memória Partilhada
author Freitas, Duarte Filipe de
author_facet Freitas, Duarte Filipe de
author_role author
dc.contributor.none.fl_str_mv Medeiros, Pedro
RUN
dc.contributor.author.fl_str_mv Freitas, Duarte Filipe de
dc.subject.por.fl_str_mv Octave
Pralelização
C++
Workers
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
topic Octave
Pralelização
C++
Workers
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
description O objetivo deste projeto é desenvolver uma biblioteca para o Octave capaz de paralelizar funções em sistemas de memória partilhada, neste caso, o problema principal que a biblioteca está a resolver são algoritmos de otimização de funções sem derivadas. O Octave é open source, ou seja, qualquer pessoa pode criar uma biblioteca para qualquer problema que tenha, por isso existem várias, nomeadamente bibliotecas que correm fun- ções Octave em paralelo, como a parallel package. No entanto, esta biblioteca foi desenvolvida principalmente para paralelizar usando diferentes máquinas em sistemas distribuídos resultando num sistema de paralelização de memória partilhada bastante simples onde apenas se cria os processos, corre-se a função uma vez e devolve-se os resultados. Portanto para este projeto criei uma biblioteca do zero. Difere da que já existe porque funciona mais como uma worker pool, isto é, cria o número requerido de workers que ficam inifinitamente à espera de receber novos jobs, jobs, no contexto deste projeto são um novo conjunto de valores de entrada que os workers recebem para correr a função. A biblioteca tem suporte para funções implementadas em Octave (funções interpretadas) e funções implementadas em C/C++ (funções compiladas) compiladas em bibliotecas dinâmicas com duas interfaces diferentes, mas usadas da mesma maneira. Para implementar a biblioteca usei octfiles que são pedaços de código C++ compilados com o API do Octave e podem ser usados como funções normais no Octave. Além disso, usei bibliotecas padrão do C e sistemas do Linux: os threads do C++11 e a system call fork do Linux para a paralelização. Os threads foram usados na interface para funções compiladas e os processos para a interface de funções interpretadas. Para verificar a eficácia e correção da biblioteca modifiquei um algoritmo de otimização BoostDMS para, no passo que avalia a função com os vários valores de entrada gerados, sequencialmente, usar a minha biblioteca e correr este passo concorrentemente e corri-o em máquinas com processadores de vários núcleos de computação onde obti resultados positivos. Os resultados mostram uma têndencia a diminuir o tempo de computação do algoritmo com o aumento de workers utilizados maximizando quando o número de workers é igual ou superior ao número valores gerados para analisar.
publishDate 2023
dc.date.none.fl_str_mv 2023-11-23T18:23:27Z
2023-07
2023-07-01T00:00:00Z
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.uri.fl_str_mv http://hdl.handle.net/10362/160378
url http://hdl.handle.net/10362/160378
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.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron:RCAAP
instname_str Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron_str RCAAP
institution RCAAP
reponame_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
collection Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository.name.fl_str_mv Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
repository.mail.fl_str_mv
_version_ 1799138161679400960