LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM
| Ano de defesa: | 2021 |
|---|---|
| Autor(a) principal: | |
| Orientador(a): | |
| Banca de defesa: | |
| Tipo de documento: | Dissertação |
| Tipo de acesso: | Acesso aberto |
| Idioma: | por |
| Instituição de defesa: |
Universidade Federal de Pelotas
|
| Programa de Pós-Graduação: |
Programa de Pós-Graduação em Computação
|
| Departamento: |
Centro de Desenvolvimento Tecnológico
|
| País: |
Brasil
|
| Palavras-chave em Português: | |
| Área do conhecimento CNPq: | |
| Link de acesso: | http://guaiaca.ufpel.edu.br/handle/prefix/8016 |
Resumo: | Memória transacional em Software (STM) é uma alternativa à sincronização utilizando locks e monitores. A STM permite ao programador escrever códigos paralelos de forma mais simples, pois é possível substituir o uso de bloqueios por blocos atômicos. Porém, com o aumento do paralelismo existe um aumento na contenção que em STM se reflete em um maior número de conflitos. Buscando otimizar o desempenho de STM, muitos estudos focam na redução do número de conflitos por meio de escalonadores. Contudo, nas arquiteturas atuais também é importante considerar onde a memória do programa está alocada e como ela é acessada. Esta dissertação propõe um escalonador NUMA-Aware para STM, intitulado Lups Transactional Memory Scheduler (LTMS), o qual em tempo de execução, coleta dados sobre a aplicação e arquitetura utilizada para otimizar a execução de STM em arquiteturas NUMA. Para isto a estratégia de escalonamento é dividido em três etapas. A primeira fornece um mecanismo de inicialização, com criação de filas que reflitam a arquitetura e estratégias de distribuição de threads, para analisar o impacto que a distribuição de threads possui sobre a aplicação. A segunda etapa apresenta um mecanismo para coletar dados em tempo de execução, nesta etapa são coletados dados sobre as threads e suas transações, os acessos à memória e a arquitetura utilizada. A terceira etapa traz um sistema para migração de threads em tempo de execução, o qual entra em ação após a ocorrência de um conflito, esta etapa busca agrupar threads conflitantes minimizando conflitos futuros e reduzindo o custo de acesso à memória. Para a tomada de decisão desta etapa, foram desenvolvidas duas heurísticas para entender o comportamento da STM em relação ao custo de latência e intensidade de conflitos. Para realização de testes o LTMS foi implementado junto a biblioteca TinySTM e foi utilizado com conjunto de benchmarks STAMP. Os experimentos foram executados utilizando as diferentes estratégias de distribuição e migração de threads desenvolvidos e comparados com a biblioteca TinySTM 1.0.5. Os experimentos apresentaram para maioria dos benchmarks menor taxa de abort e melhor tempo de execução. |
| id |
UFPL_22dc3c826dafbcc71b45c2a22b82628b |
|---|---|
| oai_identifier_str |
oai:guaiaca.ufpel.edu.br:prefix/8016 |
| network_acronym_str |
UFPL |
| network_name_str |
Repositório Institucional da UFPel - Guaiaca |
| repository_id_str |
|
| spelling |
2021-10-04T22:00:36Z2021-10-04T22:00:36Z2021-06-24COSTA, Michael Alexandre. LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM.. Orientador: André Du Bois. 2021. 57 f. Dissertação (Mestrado em Ciência da Computação) – Centro de Desenvolvimento Tecnológico, Universidade Federal de Pelotas, Pelotas, 2021.http://guaiaca.ufpel.edu.br/handle/prefix/8016Memória transacional em Software (STM) é uma alternativa à sincronização utilizando locks e monitores. A STM permite ao programador escrever códigos paralelos de forma mais simples, pois é possível substituir o uso de bloqueios por blocos atômicos. Porém, com o aumento do paralelismo existe um aumento na contenção que em STM se reflete em um maior número de conflitos. Buscando otimizar o desempenho de STM, muitos estudos focam na redução do número de conflitos por meio de escalonadores. Contudo, nas arquiteturas atuais também é importante considerar onde a memória do programa está alocada e como ela é acessada. Esta dissertação propõe um escalonador NUMA-Aware para STM, intitulado Lups Transactional Memory Scheduler (LTMS), o qual em tempo de execução, coleta dados sobre a aplicação e arquitetura utilizada para otimizar a execução de STM em arquiteturas NUMA. Para isto a estratégia de escalonamento é dividido em três etapas. A primeira fornece um mecanismo de inicialização, com criação de filas que reflitam a arquitetura e estratégias de distribuição de threads, para analisar o impacto que a distribuição de threads possui sobre a aplicação. A segunda etapa apresenta um mecanismo para coletar dados em tempo de execução, nesta etapa são coletados dados sobre as threads e suas transações, os acessos à memória e a arquitetura utilizada. A terceira etapa traz um sistema para migração de threads em tempo de execução, o qual entra em ação após a ocorrência de um conflito, esta etapa busca agrupar threads conflitantes minimizando conflitos futuros e reduzindo o custo de acesso à memória. Para a tomada de decisão desta etapa, foram desenvolvidas duas heurísticas para entender o comportamento da STM em relação ao custo de latência e intensidade de conflitos. Para realização de testes o LTMS foi implementado junto a biblioteca TinySTM e foi utilizado com conjunto de benchmarks STAMP. Os experimentos foram executados utilizando as diferentes estratégias de distribuição e migração de threads desenvolvidos e comparados com a biblioteca TinySTM 1.0.5. Os experimentos apresentaram para maioria dos benchmarks menor taxa de abort e melhor tempo de execução.Software Transactional Memory (STM) is an alternative to synchronization using locks and monitors. STM allows the programmer to write parallel codes in a simpler way, as it is possible to replace the use of locks with atomic blocks. However, with the increase in parallelism, there is an increase in contention, which in STM is reflected in a greater number of conflicts. Seeking to optimize STM performance, many studies focus on reducing the number of conflicts through schedulers. However, in current architectures, it is also important to consider where program memory is allocated and how it is accessed. This dissertation proposes a NUMA-Aware scheduler for STM, entitled Lups Transactional Memory Scheduler (LTMS), which, at runtime, collects data about the application and architecture used to optimize the execution of STM in NUMA architectures. For this, the scheduling strategy is divided into three steps. The first provides an initialization mechanism, creating queues that reflect the thread distribution architecture and strategies, to analyze the impact that thread distribution has on the application. The second step presents a mechanism to collect data at runtime, in this step data about the threads and their transactions, memory accesses and the used architecture are collected. The third step brings a system for migration of threads at runtime, which comes into action after a conflict occurs, this step seeks to group conflicting threads minimizing future conflicts and reducing the cost of memory access. For decision-making at this stage, two heuristics were developed to understand the STM behavior in relation to latency cost and conflict intensity. To carry out tests, the LTMS was implemented with the TinySTM library and was used with a set of STAMP benchmarks. The experiments were performed using the different thread distribution and migration strategies developed and compared with the TinySTM 1.0.5 library. The experiments showed for most benchmarks lower abort rate and better execution time.Sem bolsaporUniversidade Federal de PelotasPrograma de Pós-Graduação em ComputaçãoUFPelBrasilCentro de Desenvolvimento TecnológicoCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOComputaçãoMemórias Transacionais - TMNon-Uniform Memory Access - NUMAEscalonadorTransactional Memory - TMNon-Uniform Memory Access - NUMASchedulerLTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STMTransaction Scheduler for NUMA Architecturesinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesishttp://lattes.cnpq.br/9077460145415117http://lattes.cnpq.br/3277487290886063Du Bois, André RauberCosta, Michael Alexandreinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFPel - Guaiacainstname:Universidade Federal de Pelotas (UFPEL)instacron:UFPELTEXTmestrado_michael_costa.pdf.txtmestrado_michael_costa.pdf.txtExtracted texttext/plain95200http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/6/mestrado_michael_costa.pdf.txtc09f5a69a0a5912570fc914c191ae144MD56open accessTHUMBNAILmestrado_michael_costa.pdf.jpgmestrado_michael_costa.pdf.jpgGenerated Thumbnailimage/jpeg1268http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/7/mestrado_michael_costa.pdf.jpg01e4238f978c99bd6e97b25b2db16df2MD57open accessORIGINALmestrado_michael_costa.pdfmestrado_michael_costa.pdfapplication/pdf1217431http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/1/mestrado_michael_costa.pdf880f1bf01eed86f52215a732b8d84688MD51open accessCC-LICENSElicense_urllicense_urltext/plain; charset=utf-849http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/2/license_url4afdbb8c545fd630ea7db775da747b2fMD52open accesslicense_textlicense_texttext/html; charset=utf-80http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/3/license_textd41d8cd98f00b204e9800998ecf8427eMD53open accesslicense_rdflicense_rdfapplication/rdf+xml; charset=utf-80http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/4/license_rdfd41d8cd98f00b204e9800998ecf8427eMD54open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-81866http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/5/license.txt43cd690d6a359e86c1fe3d5b7cba0c9bMD55open accessprefix/80162023-07-13 03:02:57.442open accessoai:guaiaca.ufpel.edu.br:prefix/8016TElDRU7Dh0EgREUgRElTVFJJQlVJw4fDg08gTsODTy1FWENMVVNJVkEKCkNvbSBhIGFwcmVzZW50YcOnw6NvIGRlc3RhIGxpY2Vuw6dhLCB2b2PDqiAobyBhdXRvciAoZXMpIG91IG8gdGl0dWxhciBkb3MgZGlyZWl0b3MgZGUgYXV0b3IpIGNvbmNlZGUgYW8gUmVwb3NpdMOzcmlvIApJbnN0aXR1Y2lvbmFsIG8gZGlyZWl0byBuw6NvLWV4Y2x1c2l2byBkZSByZXByb2R1emlyLCAgdHJhZHV6aXIgKGNvbmZvcm1lIGRlZmluaWRvIGFiYWl4byksIGUvb3UgZGlzdHJpYnVpciBhIApzdWEgcHVibGljYcOnw6NvIChpbmNsdWluZG8gbyByZXN1bW8pIHBvciB0b2RvIG8gbXVuZG8gbm8gZm9ybWF0byBpbXByZXNzbyBlIGVsZXRyw7RuaWNvIGUgZW0gcXVhbHF1ZXIgbWVpbywgaW5jbHVpbmRvIG9zIApmb3JtYXRvcyDDoXVkaW8gb3UgdsOtZGVvLgoKVm9jw6ogY29uY29yZGEgcXVlIG8gRGVwb3NpdGEgcG9kZSwgc2VtIGFsdGVyYXIgbyBjb250ZcO6ZG8sIHRyYW5zcG9yIGEgc3VhIHB1YmxpY2HDp8OjbyBwYXJhIHF1YWxxdWVyIG1laW8gb3UgZm9ybWF0byAKcGFyYSBmaW5zIGRlIHByZXNlcnZhw6fDo28uCgpWb2PDqiB0YW1iw6ltIGNvbmNvcmRhIHF1ZSBvIERlcG9zaXRhIHBvZGUgbWFudGVyIG1haXMgZGUgdW1hIGPDs3BpYSBkZSBzdWEgcHVibGljYcOnw6NvIHBhcmEgZmlucyBkZSBzZWd1cmFuw6dhLCBiYWNrLXVwIAplIHByZXNlcnZhw6fDo28uCgpWb2PDqiBkZWNsYXJhIHF1ZSBhIHN1YSBwdWJsaWNhw6fDo28gw6kgb3JpZ2luYWwgZSBxdWUgdm9jw6ogdGVtIG8gcG9kZXIgZGUgY29uY2VkZXIgb3MgZGlyZWl0b3MgY29udGlkb3MgbmVzdGEgbGljZW7Dp2EuIApWb2PDqiB0YW1iw6ltIGRlY2xhcmEgcXVlIG8gZGVww7NzaXRvIGRhIHN1YSBwdWJsaWNhw6fDo28gbsOjbywgcXVlIHNlamEgZGUgc2V1IGNvbmhlY2ltZW50bywgaW5mcmluZ2UgZGlyZWl0b3MgYXV0b3JhaXMgCmRlIG5pbmd1w6ltLgoKQ2FzbyBhIHN1YSBwdWJsaWNhw6fDo28gY29udGVuaGEgbWF0ZXJpYWwgcXVlIHZvY8OqIG7Do28gcG9zc3VpIGEgdGl0dWxhcmlkYWRlIGRvcyBkaXJlaXRvcyBhdXRvcmFpcywgdm9jw6ogZGVjbGFyYSBxdWUgCm9idGV2ZSBhIHBlcm1pc3PDo28gaXJyZXN0cml0YSBkbyBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMgcGFyYSBjb25jZWRlciBhbyBEZXBvc2l0YSBvcyBkaXJlaXRvcyBhcHJlc2VudGFkb3MgCm5lc3RhIGxpY2Vuw6dhLCBlIHF1ZSBlc3NlIG1hdGVyaWFsIGRlIHByb3ByaWVkYWRlIGRlIHRlcmNlaXJvcyBlc3TDoSBjbGFyYW1lbnRlIGlkZW50aWZpY2FkbyBlIHJlY29uaGVjaWRvIG5vIHRleHRvIApvdSBubyBjb250ZcO6ZG8gZGEgcHVibGljYcOnw6NvIG9yYSBkZXBvc2l0YWRhLgoKQ0FTTyBBIFBVQkxJQ0HDh8ODTyBPUkEgREVQT1NJVEFEQSBURU5IQSBTSURPIFJFU1VMVEFETyBERSBVTSBQQVRST0PDjU5JTyBPVSBBUE9JTyBERSBVTUEgQUfDik5DSUEgREUgRk9NRU5UTyBPVSBPVVRSTyAKT1JHQU5JU01PLCBWT0PDiiBERUNMQVJBIFFVRSBSRVNQRUlUT1UgVE9ET1MgRSBRVUFJU1FVRVIgRElSRUlUT1MgREUgUkVWSVPDg08gQ09NTyBUQU1Cw4lNIEFTIERFTUFJUyBPQlJJR0HDh8OVRVMgCkVYSUdJREFTIFBPUiBDT05UUkFUTyBPVSBBQ09SRE8uCgpPIERlcG9zaXRhIHNlIGNvbXByb21ldGUgYSBpZGVudGlmaWNhciBjbGFyYW1lbnRlIG8gc2V1IG5vbWUgKHMpIG91IG8ocykgbm9tZShzKSBkbyhzKSBkZXRlbnRvcihlcykgZG9zIGRpcmVpdG9zIAphdXRvcmFpcyBkYSBwdWJsaWNhw6fDo28sIGUgbsOjbyBmYXLDoSBxdWFscXVlciBhbHRlcmHDp8OjbywgYWzDqW0gZGFxdWVsYXMgY29uY2VkaWRhcyBwb3IgZXN0YSBsaWNlbsOnYS4KRepositório InstitucionalPUBhttp://repositorio.ufpel.edu.br/oai/requestrippel@ufpel.edu.br || repositorio@ufpel.edu.br || aline.batista@ufpel.edu.bropendoar:2023-07-13T06:02:57Repositório Institucional da UFPel - Guaiaca - Universidade Federal de Pelotas (UFPEL)false |
| dc.title.pt_BR.fl_str_mv |
LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM |
| dc.title.alternative.pt_BR.fl_str_mv |
Transaction Scheduler for NUMA Architectures |
| title |
LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM |
| spellingShingle |
LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM Costa, Michael Alexandre CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO Computação Memórias Transacionais - TM Non-Uniform Memory Access - NUMA Escalonador Transactional Memory - TM Non-Uniform Memory Access - NUMA Scheduler |
| title_short |
LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM |
| title_full |
LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM |
| title_fullStr |
LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM |
| title_full_unstemmed |
LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM |
| title_sort |
LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM |
| author |
Costa, Michael Alexandre |
| author_facet |
Costa, Michael Alexandre |
| author_role |
author |
| dc.contributor.authorLattes.pt_BR.fl_str_mv |
http://lattes.cnpq.br/9077460145415117 |
| dc.contributor.advisorLattes.pt_BR.fl_str_mv |
http://lattes.cnpq.br/3277487290886063 |
| dc.contributor.advisor1.fl_str_mv |
Du Bois, André Rauber |
| dc.contributor.author.fl_str_mv |
Costa, Michael Alexandre |
| contributor_str_mv |
Du Bois, André Rauber |
| dc.subject.cnpq.fl_str_mv |
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO |
| topic |
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO Computação Memórias Transacionais - TM Non-Uniform Memory Access - NUMA Escalonador Transactional Memory - TM Non-Uniform Memory Access - NUMA Scheduler |
| dc.subject.por.fl_str_mv |
Computação Memórias Transacionais - TM Non-Uniform Memory Access - NUMA Escalonador Transactional Memory - TM Non-Uniform Memory Access - NUMA Scheduler |
| description |
Memória transacional em Software (STM) é uma alternativa à sincronização utilizando locks e monitores. A STM permite ao programador escrever códigos paralelos de forma mais simples, pois é possível substituir o uso de bloqueios por blocos atômicos. Porém, com o aumento do paralelismo existe um aumento na contenção que em STM se reflete em um maior número de conflitos. Buscando otimizar o desempenho de STM, muitos estudos focam na redução do número de conflitos por meio de escalonadores. Contudo, nas arquiteturas atuais também é importante considerar onde a memória do programa está alocada e como ela é acessada. Esta dissertação propõe um escalonador NUMA-Aware para STM, intitulado Lups Transactional Memory Scheduler (LTMS), o qual em tempo de execução, coleta dados sobre a aplicação e arquitetura utilizada para otimizar a execução de STM em arquiteturas NUMA. Para isto a estratégia de escalonamento é dividido em três etapas. A primeira fornece um mecanismo de inicialização, com criação de filas que reflitam a arquitetura e estratégias de distribuição de threads, para analisar o impacto que a distribuição de threads possui sobre a aplicação. A segunda etapa apresenta um mecanismo para coletar dados em tempo de execução, nesta etapa são coletados dados sobre as threads e suas transações, os acessos à memória e a arquitetura utilizada. A terceira etapa traz um sistema para migração de threads em tempo de execução, o qual entra em ação após a ocorrência de um conflito, esta etapa busca agrupar threads conflitantes minimizando conflitos futuros e reduzindo o custo de acesso à memória. Para a tomada de decisão desta etapa, foram desenvolvidas duas heurísticas para entender o comportamento da STM em relação ao custo de latência e intensidade de conflitos. Para realização de testes o LTMS foi implementado junto a biblioteca TinySTM e foi utilizado com conjunto de benchmarks STAMP. Os experimentos foram executados utilizando as diferentes estratégias de distribuição e migração de threads desenvolvidos e comparados com a biblioteca TinySTM 1.0.5. Os experimentos apresentaram para maioria dos benchmarks menor taxa de abort e melhor tempo de execução. |
| publishDate |
2021 |
| dc.date.accessioned.fl_str_mv |
2021-10-04T22:00:36Z |
| dc.date.available.fl_str_mv |
2021-10-04T22:00:36Z |
| dc.date.issued.fl_str_mv |
2021-06-24 |
| 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 |
COSTA, Michael Alexandre. LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM.. Orientador: André Du Bois. 2021. 57 f. Dissertação (Mestrado em Ciência da Computação) – Centro de Desenvolvimento Tecnológico, Universidade Federal de Pelotas, Pelotas, 2021. |
| dc.identifier.uri.fl_str_mv |
http://guaiaca.ufpel.edu.br/handle/prefix/8016 |
| identifier_str_mv |
COSTA, Michael Alexandre. LTMS - Lups Transactional Memory Scheduler: um escalonador NUMA-Aware para STM.. Orientador: André Du Bois. 2021. 57 f. Dissertação (Mestrado em Ciência da Computação) – Centro de Desenvolvimento Tecnológico, Universidade Federal de Pelotas, Pelotas, 2021. |
| url |
http://guaiaca.ufpel.edu.br/handle/prefix/8016 |
| 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 de Pelotas |
| dc.publisher.program.fl_str_mv |
Programa de Pós-Graduação em Computação |
| dc.publisher.initials.fl_str_mv |
UFPel |
| dc.publisher.country.fl_str_mv |
Brasil |
| dc.publisher.department.fl_str_mv |
Centro de Desenvolvimento Tecnológico |
| publisher.none.fl_str_mv |
Universidade Federal de Pelotas |
| dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFPel - Guaiaca instname:Universidade Federal de Pelotas (UFPEL) instacron:UFPEL |
| instname_str |
Universidade Federal de Pelotas (UFPEL) |
| instacron_str |
UFPEL |
| institution |
UFPEL |
| reponame_str |
Repositório Institucional da UFPel - Guaiaca |
| collection |
Repositório Institucional da UFPel - Guaiaca |
| bitstream.url.fl_str_mv |
http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/6/mestrado_michael_costa.pdf.txt http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/7/mestrado_michael_costa.pdf.jpg http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/1/mestrado_michael_costa.pdf http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/2/license_url http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/3/license_text http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/4/license_rdf http://guaiaca.ufpel.edu.br/xmlui/bitstream/prefix/8016/5/license.txt |
| bitstream.checksum.fl_str_mv |
c09f5a69a0a5912570fc914c191ae144 01e4238f978c99bd6e97b25b2db16df2 880f1bf01eed86f52215a732b8d84688 4afdbb8c545fd630ea7db775da747b2f d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e 43cd690d6a359e86c1fe3d5b7cba0c9b |
| bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 MD5 |
| repository.name.fl_str_mv |
Repositório Institucional da UFPel - Guaiaca - Universidade Federal de Pelotas (UFPEL) |
| repository.mail.fl_str_mv |
rippel@ufpel.edu.br || repositorio@ufpel.edu.br || aline.batista@ufpel.edu.br |
| _version_ |
1856426097357357056 |