Code profiling and optimization in transactional memory systems
Autor(a) principal: | |
---|---|
Data de Publicação: | 2014 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da UFRGS |
Texto Completo: | http://hdl.handle.net/10183/97866 |
Resumo: | Memória Transacional tem se demonstrado um paradigma promissor na implementação de aplicações concorrentes sob memória compartilhada que busquem evitar um modelo de sincronização baseado em locks. Em vez de sujeitar a execução a um acesso exclusivo com base no valor de um lock que é compartilhado por threads concorrentes, uma aplicação sob Memória Transacional tenta executar seções críticas de modo otimista, desfazendo as modificações no caso de um conflito de acesso à memória. Entretanto, apesar de a abordagem baseada em locks ter adquirido um número significativo de ferramentas automatizadas para a depuração, profiling e otimização automatizados (por ser uma das técnicas de sincronização mais antigas e mais bem pesquisadas), o campo da Memória Transacional ainda é comparativamente recente, e programadores frequentemente precisam adaptar manualmente suas aplicações transacionais ao encontrar problemas de eficiência. Este trabalho propõe um sistema no qual o profiling de código em uma implementação de Memória Transacional simulada é utilizado para caracterizar uma aplicação transacional, formando a base para uma parametrização automatizada do respectivo sistema especulativo para uma execução eficiente do código em questão. Também é proposta uma abordagem de escalonamento de threads guiado por profiling em uma implementação de Memória Transacional baseada em software, usando dados coletados pelo profiler para prever a probabilidade de conflitos e determinar que thread escalonar com base nesta previsão. São apresentados os resultados de experimentos sob ambas as abordagens. |
id |
URGS_10906281048c7662acce4e03303fe00a |
---|---|
oai_identifier_str |
oai:www.lume.ufrgs.br:10183/97866 |
network_acronym_str |
URGS |
network_name_str |
Biblioteca Digital de Teses e Dissertações da UFRGS |
repository_id_str |
1853 |
spelling |
Cordeiro, Silvio RicardoMaillard, Nicolas Bruno2014-07-16T02:07:46Z2014http://hdl.handle.net/10183/97866000922011Memória Transacional tem se demonstrado um paradigma promissor na implementação de aplicações concorrentes sob memória compartilhada que busquem evitar um modelo de sincronização baseado em locks. Em vez de sujeitar a execução a um acesso exclusivo com base no valor de um lock que é compartilhado por threads concorrentes, uma aplicação sob Memória Transacional tenta executar seções críticas de modo otimista, desfazendo as modificações no caso de um conflito de acesso à memória. Entretanto, apesar de a abordagem baseada em locks ter adquirido um número significativo de ferramentas automatizadas para a depuração, profiling e otimização automatizados (por ser uma das técnicas de sincronização mais antigas e mais bem pesquisadas), o campo da Memória Transacional ainda é comparativamente recente, e programadores frequentemente precisam adaptar manualmente suas aplicações transacionais ao encontrar problemas de eficiência. Este trabalho propõe um sistema no qual o profiling de código em uma implementação de Memória Transacional simulada é utilizado para caracterizar uma aplicação transacional, formando a base para uma parametrização automatizada do respectivo sistema especulativo para uma execução eficiente do código em questão. Também é proposta uma abordagem de escalonamento de threads guiado por profiling em uma implementação de Memória Transacional baseada em software, usando dados coletados pelo profiler para prever a probabilidade de conflitos e determinar que thread escalonar com base nesta previsão. São apresentados os resultados de experimentos sob ambas as abordagens.Transactional Memory has shown itself to be a promising paradigm for the implementation of shared-memory concurrent applications that eschew a lock-based model of data synchronization. Rather than conditioning exclusive access on the value of a lock that is shared across concurrent threads, Transactional Memory attempts to execute critical sections optimistically, rolling back the modifications in the event of a data access conflict. However, while the lock-based approach has acquired a significant body of debugging, profiling and automated optimization tools (as one of the oldest and most researched synchronization techniques), the field of Transactional Memory is still comparably recent, and programmers are usually tasked with an unguided manual tuning of their transactional applications when facing efficiency problems. We propose a system in which code profiling in a simulated hardware implementation of Transactional Memory is used to characterize a transactional application, which forms the basis for the automated tuning of the underlying speculative system for the efficient execution of that particular application. We also propose a profile-guided approach to the scheduling of threads in a software-based implementation of Transactional Memory, using collected data to predict the likelihood of conflicts and determine what thread to schedule based on this prediction. We present the results achieved under both designs.application/pdfengProcessamento paraleloProcessamento : Alto desempenhoTransactional memoryProfilingSchedulingShared memoryParallel programmingHigh-performance computingCode profiling and optimization in transactional memory systemsProfiling e otimização de código em sistemas de memória transacional info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisUniversidade Federal do Rio Grande do SulInstituto de InformáticaPrograma de Pós-Graduação em ComputaçãoPorto Alegre, BR-RS2014mestradoinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFRGSinstname:Universidade Federal do Rio Grande do Sul (UFRGS)instacron:UFRGSORIGINAL000922011.pdf000922011.pdfTexto completo (inglês)application/pdf881018http://www.lume.ufrgs.br/bitstream/10183/97866/1/000922011.pdf3e230ad5371e541594bf39f32038a88aMD51TEXT000922011.pdf.txt000922011.pdf.txtExtracted Texttext/plain195412http://www.lume.ufrgs.br/bitstream/10183/97866/2/000922011.pdf.txt37f1174710aae1f9657f4e796c803bbeMD52THUMBNAIL000922011.pdf.jpg000922011.pdf.jpgGenerated Thumbnailimage/jpeg1006http://www.lume.ufrgs.br/bitstream/10183/97866/3/000922011.pdf.jpgd12829582c08556d9628a2d442b832f2MD5310183/978662021-05-26 04:28:21.644513oai:www.lume.ufrgs.br:10183/97866Biblioteca Digital de Teses e Dissertaçõeshttps://lume.ufrgs.br/handle/10183/2PUBhttps://lume.ufrgs.br/oai/requestlume@ufrgs.br||lume@ufrgs.bropendoar:18532021-05-26T07:28:21Biblioteca Digital de Teses e Dissertações da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS)false |
dc.title.pt_BR.fl_str_mv |
Code profiling and optimization in transactional memory systems |
dc.title.alternative.pt.fl_str_mv |
Profiling e otimização de código em sistemas de memória transacional |
title |
Code profiling and optimization in transactional memory systems |
spellingShingle |
Code profiling and optimization in transactional memory systems Cordeiro, Silvio Ricardo Processamento paralelo Processamento : Alto desempenho Transactional memory Profiling Scheduling Shared memory Parallel programming High-performance computing |
title_short |
Code profiling and optimization in transactional memory systems |
title_full |
Code profiling and optimization in transactional memory systems |
title_fullStr |
Code profiling and optimization in transactional memory systems |
title_full_unstemmed |
Code profiling and optimization in transactional memory systems |
title_sort |
Code profiling and optimization in transactional memory systems |
author |
Cordeiro, Silvio Ricardo |
author_facet |
Cordeiro, Silvio Ricardo |
author_role |
author |
dc.contributor.author.fl_str_mv |
Cordeiro, Silvio Ricardo |
dc.contributor.advisor1.fl_str_mv |
Maillard, Nicolas Bruno |
contributor_str_mv |
Maillard, Nicolas Bruno |
dc.subject.por.fl_str_mv |
Processamento paralelo Processamento : Alto desempenho |
topic |
Processamento paralelo Processamento : Alto desempenho Transactional memory Profiling Scheduling Shared memory Parallel programming High-performance computing |
dc.subject.eng.fl_str_mv |
Transactional memory Profiling Scheduling Shared memory Parallel programming High-performance computing |
description |
Memória Transacional tem se demonstrado um paradigma promissor na implementação de aplicações concorrentes sob memória compartilhada que busquem evitar um modelo de sincronização baseado em locks. Em vez de sujeitar a execução a um acesso exclusivo com base no valor de um lock que é compartilhado por threads concorrentes, uma aplicação sob Memória Transacional tenta executar seções críticas de modo otimista, desfazendo as modificações no caso de um conflito de acesso à memória. Entretanto, apesar de a abordagem baseada em locks ter adquirido um número significativo de ferramentas automatizadas para a depuração, profiling e otimização automatizados (por ser uma das técnicas de sincronização mais antigas e mais bem pesquisadas), o campo da Memória Transacional ainda é comparativamente recente, e programadores frequentemente precisam adaptar manualmente suas aplicações transacionais ao encontrar problemas de eficiência. Este trabalho propõe um sistema no qual o profiling de código em uma implementação de Memória Transacional simulada é utilizado para caracterizar uma aplicação transacional, formando a base para uma parametrização automatizada do respectivo sistema especulativo para uma execução eficiente do código em questão. Também é proposta uma abordagem de escalonamento de threads guiado por profiling em uma implementação de Memória Transacional baseada em software, usando dados coletados pelo profiler para prever a probabilidade de conflitos e determinar que thread escalonar com base nesta previsão. São apresentados os resultados de experimentos sob ambas as abordagens. |
publishDate |
2014 |
dc.date.accessioned.fl_str_mv |
2014-07-16T02:07:46Z |
dc.date.issued.fl_str_mv |
2014 |
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/10183/97866 |
dc.identifier.nrb.pt_BR.fl_str_mv |
000922011 |
url |
http://hdl.handle.net/10183/97866 |
identifier_str_mv |
000922011 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
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:Biblioteca Digital de Teses e Dissertações da UFRGS instname:Universidade Federal do Rio Grande do Sul (UFRGS) instacron:UFRGS |
instname_str |
Universidade Federal do Rio Grande do Sul (UFRGS) |
instacron_str |
UFRGS |
institution |
UFRGS |
reponame_str |
Biblioteca Digital de Teses e Dissertações da UFRGS |
collection |
Biblioteca Digital de Teses e Dissertações da UFRGS |
bitstream.url.fl_str_mv |
http://www.lume.ufrgs.br/bitstream/10183/97866/1/000922011.pdf http://www.lume.ufrgs.br/bitstream/10183/97866/2/000922011.pdf.txt http://www.lume.ufrgs.br/bitstream/10183/97866/3/000922011.pdf.jpg |
bitstream.checksum.fl_str_mv |
3e230ad5371e541594bf39f32038a88a 37f1174710aae1f9657f4e796c803bbe d12829582c08556d9628a2d442b832f2 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS) |
repository.mail.fl_str_mv |
lume@ufrgs.br||lume@ufrgs.br |
_version_ |
1810085292484329472 |