Busca avançada
Ano de início
Entree


Improving Transactional Code Generation via Variable Annotation and Barrier Elision

Texto completo
Autor(es):
de Carvalho, Joao P. L. ; Honorio, Bruno C. ; Baldassin, Alexandro ; Araujo, Guido ; IEEE
Número total de Autores: 5
Tipo de documento: Artigo Científico
Fonte: 2020 IEEE 34TH INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM IPDPS 2020; v. N/A, p. 10-pg., 2020-01-01.
Resumo

With chip manufacturers such as Intel, IBM and ARM offering native support for transactional memory in their instruction set architectures, memory transactions are on the verge of being considered a genuine application tool rather than just an interesting research topic. Despite this recent increase in popularity on the hardware side of transactional memory (HTM), software support for transactional memory (STM) is still scarce and the only compiler with transactional support currently available, the GNU Compiler Collection (GCC), does not generate code that achieves desirable performance. This paper presents a detailed analysis of transactional code generated by GCC and by a proposed transactional memory support added to the Clang/LLVM compiler framework. Experimental results support the following contributions: (a) STM's performance overhead is due to an excessive amount of read and write barriers added by the compiler; (b) a new annotation mechanism for the Clang/LLVM compiler framework that aims to overcome the barrier over-instrumentation problem by allowing programmers to specify which variables should be free from transactional instrumentation; (c) a profiling tool that ranks the most accessed memory locations at runtime, working as a guiding tool for programmers to annotate the code. Furthermore, it is revealed that, by correctly using the annotations on just a few lines of code, it is possible to reduce the total number of instrumented barriers by 95% and to achieve speed-ups of up to 7x when compared to the original code generated by GCC and the Clang compiler. (AU)

Processo FAPESP: 19/04536-9 - Melhorando o desempenho do cálculo da seção de choque transversal através de anotações de componentes
Beneficiário:Bruno Chinelato Honorio
Modalidade de apoio: Bolsas no Brasil - Doutorado
Processo FAPESP: 13/08293-7 - CECC - Centro de Engenharia e Ciências Computacionais
Beneficiário:Munir Salomao Skaf
Modalidade de apoio: Auxílio à Pesquisa - Centros de Pesquisa, Inovação e Difusão - CEPIDs
Processo FAPESP: 16/15337-9 - Memória Transacional Distribuída e Modelos Eficientes de Distribuição de Dados para Acelerar Aplicações com Estruturas de Dados Irregulares.
Beneficiário:João Paulo Labegalini de Carvalho
Modalidade de apoio: Bolsas no Brasil - Doutorado
Processo FAPESP: 18/15519-5 - Otimizações de desempenho para arquiteturas multicore
Beneficiário:Alexandro José Baldassin
Modalidade de apoio: Auxílio à Pesquisa - Jovens Pesquisadores - Fase 2