Estudo da Viabilidade de uma Interface para Memórias Transacionais em OpenMP

  • Henry Pereira UFPel
  • Kevin de Oliveira UFPel
  • André Jardim UFPel
  • André Du Bois UFPel
  • Gerson Cavalheiro UFPel

Resumo


Embora as modernas ferramentas para programação multithread ofereçam recursos para exploração eficiente do hardware, os suportes à sincronização a dados compartilhados ainda refletem modelos baseados em seção crítica clássicos. Memória Transacional (TM) propõe um modelo de controle de concorrência de mais alto nível, mas não se encontra disponível em tais ferramentas. Neste artigo é apresentada uma extensão à OpenMP para suporte à TM e uma avaliação de desempenho de sua prototipação sobre duas ferramentas que suportam TM. Os resultados apontam a viabilidade da extensão proposta e a análise das execuções permitiu concluir que as políticas aplicadas para gestão da TM são decisivas para o bom desempenho do programa.

Referências

Ali-Reza Adl-Tabatabai, T. S. and Gottschlich, J. (2012). Draft Specication of Transactional Language Constructsfor C++. https://sites.google.com/site/tmforcplusplus/.

Baek, W., Minh, C. C., Trautmann, M., Kozyrakis, C., and Olukotun, K. (2007). The OpenTM transactional application programming interface. In Proc of the 16th International Conference on Parallel Architecture and Compilation Techniques, PACT '07, pages 376–387, Washington, DC. IEEE Computer Society.

Boyd-Wickizer, S., Clements, A. T., Mao, Y., Pesterev, A., Kaashoek, M. F., Morris, R. T., Zeldovich, N., et al. (2010). An analysis of Linux scalability to many cores. In USENIX Symposium on Operating Systems Design and Implementation, OSDI'10.

Dice, D., Shalev, O., and Shavit, N. (2006). Transactional Locking II. In Proc. of the 20th Int. Conf. on Distributed Computing, DISC'06, Berlin. Springer-Verlag.

Felber, P., Fetzer, C., and Riegel, T. (2008). Dynamic performance tuning of word-based software Transactional Memory. In Proceedings of the 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pages 237–246.

Free Software Foundation, Inc (2020). The GNU Transactional Memory Library. https://gcc.gnu.org/onlinedocs/libitm.pdf.

Guerraoui, R. and Kapaka, M. (2010). Principles of transactional memory. Synthesis Lectures on Distributed Computing Theory, 1(1):1–193.

Hansen, P. B., Dijkstra, E. W., and Hoare, C. A. R. (2002). The Origins of Concurrent Programming: From Semaphores to Remote Procedure Calls. Springer-Verlag, Berlin.

Harris, T., Larus, J., and Rajwar, R. (2010). Transactional Memory, 2nd edition. Synthesis Lectures on Computer Architecture, 5(1):1–263.

Jardim, A. D. (2020). Extensão para memórias transacionais nas modernas ferramentas para programação multithread. Proposta de Tese de Doutorado.

Milovanoviíc, M., Ferrer, R., Gajinov, V., Unsal, O. S., Cristal, A., Ayguadé, E., and Valero, M. (2007). Multithreaded software transactional memory and OpenMP. In Proc of the 2007 Workshop on Memory Performance: Dealing with Applications, Systems and Architecture, MEDEA '07, pages 81–88, New York. ACM.

Paznikov, A. A., Smirnov, V. A., and Omelnichenko, A. R. (2019). Towards efcient implementation of concurrent hash tables and search trees based on software transactional memory. In 2019 International Multi-Conference on Industrial Engineering and Modern Technologies (FarEastCon), pages 1–5.

Rigo, S., Centoducatte, P., and Baldassin, A. (2007). Memórias Transacionais: Uma nova alternativa para programaçao concorrente. Laboratório de Sistemas de Computação– Instituto de Computação–Unicamp.

Skillicorn, D. B. and Talia, D. (1998). Models and languages for parallel computation. ACM Comput. Surv., 30(2):123–169.

Süß, M. and Leopold, C. (2008). Common mistakes in Openmp and how to avoid them. In Mueller, M. S., Chapman, B. M., de Supinski, B. R., Malony, A. D., and Voss, M., editors, OpenMP Shared Memory Parallel Programming, Berlin. Springer.

Sutter, H. (2007). The Pillars of Concurrency. Dr. Dobbs.

Voss, M., Asenjo, R., and Reinders, J. (2019). SynchronizationSynchronization: Why and How to Avoid It, pages 137–178. Apress, Berkeley, CA.

Wilson, G. V. (1994). Assessing the usability of parallel programming systems: The Cowichan problems. In Decker, K. M. and Rehmann, R. M., editors, Programming Environments for Massively Parallel Distributed Systems, Basel. Birkhäuser Basel.

Wong, M., Ayguadé, E., Gottschlich, J., Luchangco, V., de Supinski, B. R., and Bihari, B. (2014). Towards transactional memory for OpenMP. In DeRose, L., de Supinski, B. R., Olivier, S. L., Chapman, B. M., and Müller, M. S., editors, Using and Improving OpenMP for Devices, Tasks, and More, pages 130–145, Cham. Springer International.
Publicado
21/10/2020
PEREIRA, Henry; DE OLIVEIRA, Kevin; JARDIM, André; DU BOIS, André; CAVALHEIRO, Gerson. Estudo da Viabilidade de uma Interface para Memórias Transacionais em OpenMP. In: SIMPÓSIO EM SISTEMAS COMPUTACIONAIS DE ALTO DESEMPENHO (SSCAD), 21. , 2020, Online. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2020 . p. 37-48. DOI: https://doi.org/10.5753/wscad.2020.14056.