• Nenhum resultado encontrado

4.2 MAI – Memory Affinity Interface

4.2.6 Funções Estatísticas

As funções estatísticas permitem ao programador coletar algumas informações sobre a execução da aplicação no sistema NUMA. Existem informações sobre memória e

threads, tanto sobre alocação quanto sobre migração e também informações de

sobrecarga de migrações. Na Figura 24 tem-se exemplos das funções.

/*Page information − function prototype */

void mai_print_pagenodes ( unsigned long * pageaddrs , int size);

int mai_number_page_migration ( unsigned long * pageaddrs , int size) ; double mai_get_time_pmigration ( ) ;

/*Thread information − function prototype */ void mai_print_threadcpus ( ) ;

int mai_number_thread_migration ( unsigned int * threads , int size) ; double mai_get_time_tmigration ( ) ;

Figura 24: MAI - Funções de Estatísticas.

Com a utilização da MAI é possível obter o melhor desempenho das máquinas NUMA, com um menor esforço no desenvolvimento da aplicação.

5

CONCLUSÃO

NUMA (Non-Uniform Memory Access) pode-se afirmar que é a arquitetura que está em destaque no momento. Durante esse trabalho de pesquisa pode-se observar que a grande maioria dos fabricantes de software está dando destaque para o suporte a arquiteturas NUMA em seus sistemas de alto desempenho. Enquanto que as empresas que projetam o hardware estão utilizando a arquitetura em suas implementações.

Os mais diversos sistemas operacionais como: Linux, HP-UX, AIX da IBM, Solaris da SUN e Windows da Microsoft, estão oferecendo suporte para arquiteturas NUMA, de modo que as aplicações desenvolvidas para executarem nesses sistemas operacionais possam utilizar todos os benefícios das máquinas NUMA.

Outro ponto bastante relevante quanto à utilização das máquinas NUMA, refere-se ao modelo de programação adotado. Os desenvolvedores precisam utilizar um modelo de programação de memória compartilhada, o que facilita e agiliza bastante o desenvolvimento da aplicação. Isso se dá pelas facilidades que o OpenMP oferece para se obter paralelismo, em comparação com a programação em memória distribuída utilizando MPI.

Ainda, tem-se a MAI, desenvolvida pelo INRIA, que facilita a gerência de alocação de memória e gerência de processos abstraindo as complicadas chamadas de sistemas oferecidas pela NUMA API.

Então, pode-se concluir que as arquiteturas NUMA serão cada vez mais utilizadas pela indústria de hardware e também terão suporte pela indústria de software, visto que desde os computadores domésticos multicore até os grandes sistemas MPPs usarão arquiteturas NUMA.

REFERÊNCIAS

[1] Kleen, A., A NUMA API for LINUX Disponível em

www.halobates.de/numaapi3.pdf acessado em: 15 de junho de 2009.

[2] CASTRO, M. B., NUMA-ICTM: Uma versão paralela do ICTM explorando estratégias de alocação de memória para máquinas NUMA, Dissertação de Mestrado – Pontifícia Universidade Católica do Rio Grande do Sul, 2008.

[3] LAMETER, C., Local and Remote Memory: Memory in Linux/NUMA System. Disponível em http://kernel.org/pub/linux/kernel/people/christoph/pmig/ numamemory.pdf. Acessado em: 15 de junho de 2009.

[4] Bolosky, W. J., Scott, M. L., Fitzgerald, R. P., Fowler, R. J., and Cox, A. L. NUMA policies and their relation to memory architecture. In Proceedings of the Fourth

international Conference on Architectural Support For Programming Languages and Operating Systems. Santa Clara, California, United States, 1991. ASPLOS-IV.

ACM, New York, NY, 212-221.

[5] Joseph Antony, Pete P. Janes, and Alistair P. Rendell, Exploring thread and memory placement on NUMA architectures: Solaris and Linux, UltraSPARC/FirePlane and Opteron/HyperTransport". In Proceedings International Conference on High

Performance Computing, LNCS 4297, 2006, Bangalore,India. pages: 338-352.

[6] Carissimi A., Dupros F., Mehaut J, Polanczyk R., Aspectos de programação paralela em arquiteturas NUMA. WSCAD 2007: VIII Workshop em Sistemas Computacionais de Alto Desempenho, 2007. Gramado, RS.

[7] OpenMP Application Program Interface Version 3.0 Complete Specifications. May, 2008. Disponível em http://www.openmp.org/mp-documents/specs30.pdf. Acessado em 15 de junho de 2009.

[8] Gostin, G., Collard, J., and Collins, K. 2005. The architecture of the HP Superdome shared-memory multiprocessor. In Proceedings of the 19th Annual international

Conference on Supercomputing. Cambridge, Massachusetts, 2005. pp. 239-245.

[9] Goglin, Brice and Furmento, Nathalie, Enabling high-performance memory migration for multithreaded applications on Linux. In Workshop on Multithreaded Architectures and Applications, held in conjunction with IPDPS 2009, Disponível em : http://hal.inria.fr/inria-00358172/en/ acessado em : 15 de junho de 2009.

[10] Performance Guidelines for AMD Athlon™ 64 andAMD Opteron™ ccNUMA Multiprocessor Systems. Disponível em: www.amd.com/us- en/assets/content_type/white_papers_and_tech_docs/40555.pdf. Acessado em: 15 de Junho de 2009.

[11] MPI: A Message-Passing Interface Standard Version 2.1. Disponível em: www.mpi-forum.org/docs/mpi21-report.pdf. Acessado em: 15 de Junho de 2009. [12] Pousa Ribeiro, Christiane and M'ehaut, Jean-Francois, MAI: Memory Affinity

Interface, Laboratoire d'Informatique de Grenoble - LIG - INRIA - Universit'e Pierre Mend`es-France - Grenoble II - Universit'e Joseph Fourier - Grenoble I - Institut Polytechnique de Grenoble. Disponível em: http://hal.inria.fr/inria-00344189/en/ Acessado em: 15 de Junho de 2009.

[13] Blaise Barney, Introduction to Parallel Computing. Lawrence Livermore National Laboratory. Disponível em: https://computing.llnl.gov/tutorials/parallel_comp/ Acessado em: 15 de Junho de 2009.

[14] Blaise Barney, Message Passing Interface (MPI). Lawrence Livermore National Laboratory. Disponível em: https://computing.llnl.gov/tutorials/mpi/ Acessado em: 15 de Junho de 2009.

[15] Blaise Barney, OpenMP. Lawrence Livermore National Laboratory. Disponível em: https://computing.llnl.gov/tutorials/openMP/ Acessado em: 15 de Junho de 2009 [16] Chapman, B., Jost, G., and Pas, R. 2007 Using Openmp: Portable Shared Memory

Parallel Programming (Scientific and Engineering Computation). The MIT Press.

[17] Gropp, W., Lusk, E., and Skjellum, A. 1999 Using MPI (2nd Ed.): Portable

Parallel Programming with the Message-Passing Interface. MIT Press.

[18] Kumar, V. 2002 Introduction to Parallel Computing. 2nd. Addison-Wesley Longman Publishing Co., Inc.

[19] NVIDIA CUDA Development Tools. Disponível em:

http://www.nvidia.com/object/cuda_develop.html Acessado em: 15 de Junho de 2009.

[20] Flynn, M., Some computer organizations and their effectiveness, IEEE Trans. Comput., Vol. C-21, pp. 948, 1972.

[21] Advanced Configuration and Power Interface Specificication. Revision 3.0,

September 2, 2004. Disponível em

http://www.acpi.info/DOWNLOADS/ACPIspec30.pdf. Acessado em: 15 de Junho de 2009.

[22] TORRELAS, J.; LAM, H. S.; HENNESSY, J. L. False sharing and spatial locality in multiprocessor caches. IEEE Trans. Comput., IEEE Computer Society, Washington, DC, USA, v. 43 n. 6, p. 651-663, 1994.

[24] ERAD 2009 – IX Escola Regional de Alto Desempenho – Arquiteturas Multicore. Março de 2009, Caxias do Sul, RS.

[25] SNIR, M.; YU, J. On the Theory of spatial and temporal locality. Department of Computer Science, Technical Report. University of Illinois at Urbana-Champaign, 2005. Disponível em http://hdl.handle.net/2142/11077. Acessado em: 15 de Junho de 2009.

[26] Oliveira, R.; Carissimi, A.; Toscani, S.; Sistemas Operacionais. Série Didática da UFRGS. Sagra-Luzzato. Vol. 11, 2004.

[27] De Rose, C.; Navaux, P. ; Arquiteturas Paralelas. Série Didática da UFRGS. Sagra-Luzzato. Vol. 15, 2002.

[28] Zorzo, A.; Corrêa, M; Scheer, R. 2006 Operating system multilevel load balancing. In Proceedings of the 2006 ACM Symposium on Applied Computing (Dijon, França, 2006). SAC ´06. ACM, New York,NY, 1467-1471.

[29] CASTRO, M. B., Explorando o paralelismo em máquinas NUMA em Nível de Aplicação, Trabalho Individual I – Pontifícia Universidade Católica do Rio Grande do Sul, 2007.

[30] KOWALTOWSKI, T. Von Neumann: suas contribuições à Computação. Estud. Av. [online]. 1996, vol. 10, n. 26, 237-260.

[31] IBM Cell Broadband Engine resource center. Disponível em http://www.ibm.com/developerworks/power/cell/. Acessado em 30 de junho de 2009.

Documentos relacionados