SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Programación y Computación
            paralela
Visualización de la Performance

           Glen D. Rodríguez R.
   Basado en material de Zaki, Lusk, Gropp
                  y Swider


                                             1
Resumen


• Qué es Jumpshot y de dónde viene?
• Otros softwares relacionados
• Requisitos para un sistema de visualización de
  performance basado en logs (bitácoras).
• Produciendo logs: CLOG
• Visualizando logs: Jumpshot
• Detalles con el Java
• Trabajos futuros




                                                   2
Qué es Jumpshot?
• Herramienta para
  comprender el
  comportamiento de
                               procesos
  programas paralelos
• Análisis Post-mortem
• Basado en archivos de log               CLOG
• Incluye un paquete de logs
  (CLOG)                        LOG
• Sobretodo para programas
  MPI
• Escrito en Java              Jumpshot



                               pantalla          3
Pantalla Típica de Jumpshot




                              4
Ejemplo en un programa que usa PETSc




                                       5
De donde vino Jumpshot?


 • La historia de las herramientas para análisis de
   performance basadas en logs en Argonne es también la
   historia de la búsqueda de un entorno de programación
   en el cuál se implementase gráficos sencillos y una GUI.
 • Gist (BBN) -- sólo X11
    • Gráficos blanco y negro, no portable (sólo en la BBN Butterfly)
 • Upshot -- X11 más Athena widgets, usado con el formato
   de logs ALOG
    • fastidioso, obtener performance era difícil (1990)
 • Upshot re-escrito en Tcl/Tk
    • Fácil de escribir código, gráficos lentos



                                                                   6
Historia (continuación)
• Nupshot -- Upshot reescrito en Tcl/Tk/C para más
  velocidad
   • Buena performance
   • Interfase Tcl/C inestable
• CLOG – nuevo formato de log
• Java + Upshot = Jumpshot
   •   usa CLOG
   •   tiene nuevas funciones
   •   explora posibilidades tecnológicas de Java
   •   Que sigue: JPython?
• SLOG – nuevo formato para visualizar más fácil logs
  enormes.




                                                        7
Esfuerzo relacionados
• Gist aún se usa en TotalView del Dolphin como
  TimeScan
• PICL/ParaGraph - Pat Worley, Mike Heath, Jennifer
  Etheridge, Al Geist
• VAMPIR - Pallas
• Traceview - Al Malony
• Pablo - Dan Reed, Ruth Aydt
• XPVM - Jim Kohl, Al Geist
• XMPI - Raja Daoud, ahora en Notre Dame
• Paradyne - Bart Miller, Myron Livny
• Etc.




                                                      8
Por qué rehacer el Upshot?

Los sistemas modernos tienen nuevos requerimientos (no
  todos han sido satisfechos aún por Jumpshot):
• Ambiente estable por largo tiempo para soportar
  investigaciones futuras
• Portable, no solo entre los diferentes Unix y Linux,
  incluso a Windows
• Soporte de las vistas tipo upshot más útiles
   • Líneas de tiempo de los procesos con scrolling y zooming
   • Histogramas de la duración de estados, propiedades de los
     mensajes, rangos de los picos
   • Las animaciones no son tan útiles




                                                                 9
Requerimientos (continuación)
• Formato de archivos de log flexible y extensible, listo
  para incluir nuevos tipos de eventos, estados,
  conceptos
• Estados definidos por el usuario final
• Performance escalable
   • control del logging en el origen
   • agregación
   • Soportar decenas de miles de eventos
• Estados anidados y no excluyentes
   • Soporte de estados anidados es más importante
• Conectar los eventos mostrados con el código fuente.




                                                            10
Requerimientos (continuación)
• Mayor comprensión de las capacidades del MPI
  (comunicadores, semi-transparencia de operaciones
  colectivas)
• Habilidad para hacer queries con detalles de eventos
  específicos, mensajes, y estados.
• Habilidad para localizar automáticamente partes
  “interesantes” del pantallazo (tópico de investigación)
• Etc....




                                                        11
Librerías de logs CLOG : Background


Características del viejo ALOG:
• Registros de formato fijo (6 ints y string)
   • Bueno para parsing, almacenamiento y acceso
   • Malo para meter extensiones
• Hace timestamp con resolución de microsegundos
   • OK en 1990
   • No es lo suficientemente preciso hoy día
• Formato ASCII en archivos
   • Bueno para portabilidad, fácil de leer
   • No puede guardar data binaria en forma conveniente



                                                          12
CLOG: Requerimientos
• Debe ser lo suficientemente eficiente para no interferir
  con el comportamiento del programa; I/O sólo cuando
  el programa termina
• Es más conveniente tener un solo archivo de log al
  final, en vez de uno por procesador.
• No se puede asumir que los relojes de las
  computadoras están sincronizados (ni los timestamps)
• Flexibilidad en el tipo de registro, pero que no sea auto
  descriptivo del todo
• Portable: archivos de log se pueden leer en diferentes
  máquinas que en las que los escribieron.



                                                        13
CLOG: Cómo trabaja?
• Depende del MPI, para portabilidad
• Llama a la función MPI_Wtime para conseguir el
  timestamp
   • Más o menos eficiente, pero no lo mejor, en cualquier
     arquitectura/OS
• múltiples formatos de registros con tipos, más un tipo
  “plano”
• El usuario puede definir sus propios tipos, estados, y
  colores
• Los registros de log se acumulan en grandes buffers en
  memoria hasta que el malloc (asignar espacio dinámico
  a punteros) falla, luego se para.


                                                             14
Como crear el log?
• Siga estos pasos
1. Compilar el código en forma normal (cc –c)
2. Vincular las librerias del log en vez de las normales
   del MPI. Por ejemplo, para programas en C hacer:
• cc -o myprog.log myprog.c -llmpi -lpmpi -lmpi -lrt -
   pthread
• Y para fortran
• f77 -o myprog.log myprog.f -lfmpi -llmpi -lpmpi -lmpi -lrt
   -pthread
3. Al correr el programa se crea una log de nombre
   nombredelprograma.log, o
   nombredelprograma_profile.log
4. Si quiero loger todo funcion MPI, haga
       mpicc -o programa programa.c -llmpe -lmpe         15
Programa y registros al log
/*         Sample Program with Logging Commands*/
#include "mpi.h"
#include "mpe.h"
#include <math.h>
#include <stdio.h>

double f(a)
double a;
{ return (4.0 / (1.0 + a*a));}

int main(argc,argv)
int argc;
char *argv[];
{
  int done = 0, n, myid, numprocs, i, rc, repeat;
  double PI25DT = 3.141592653589793238462643;
  double mypi, pi, h, sum, x, a;
  double startwtime, endwtime;

 MPI_Init(&argc,&argv);
 MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
 MPI_Comm_rank(MPI_COMM_WORLD,&myid);
 MPE_Init_log();
 if (myid == 0) {
   MPE_Describe_state(1, 2, "Broadcast", "red:vlines3");
   MPE_Describe_state(3, 4, "Compute", "blue:gray3");
   MPE_Describe_state(5, 6, "Reduce", "green:light_gray");
   MPE_Describe_state(7, 8, "Sync",   "yellow:gray");        16
 }
while (!done)
 {
   if (myid == 0)
 {
   printf("Enter the number of intervals: (0 quits) ");
   scanf("%d",&n);
   startwtime = MPI_Wtime();
 }
   MPI_Barrier(MPI_COMM_WORLD);
   MPE_Start_log();
   MPE_Log_event(1, 0, "start broadcast");
   MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
   MPE_Log_event(2, 0, "end broadcast");

   if (n == 0)
 done = 1;
   else
 {
   for (repeat=5; repeat; repeat--) {
     MPE_Log_event(7,0,"Start Sync");
     MPI_Barrier(MPI_COMM_WORLD);
     MPE_Log_event(8,0,"End Sync");
     MPE_Log_event(3, 0, "start compute");
     h = 1.0 / (double) n;
     sum = 0.0;
     for (i = myid + 1; i <= n; i += numprocs)
       {     x = h * ((double)i - 0.5);
             sum += f(x);                 }
     mypi = h * sum;
     MPE_Log_event(4, 0, "end compute");
     fprintf( stderr, "[%d] mypi = %lfn", myid, mypi );
Sigue
        MPE_Log_event(5, 0, "start reduce");
        MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0,
    MPI_COMM_WORLD);
        MPE_Log_event(6, 0, "end reduce");
        if (myid == 0)
          {
             printf("pi is approximately %.16f, Error is %.16fn",
                  pi, fabs(pi - PI25DT));
             endwtime = MPI_Wtime();
             printf("wall clock time = %fn", endwtime-startwtime);
          }
      }
         }
       MPE_Stop_log();
     }
    MPE_Finish_log("cpilog.log");
    MPI_Finalize();
}                                                                     18
Cómo trabaja CLOG? (cont.)

• Al finalizar (CLOG_Finalize es
  colectivo)
   • Data de proceso local se añade a
     los buffers
   • Los timestamps se ajustan,
     usando un simple algoritmo y
     comunicación con otros procesos
   • Los procesos forman un árbol
     binario y hacen un merge local 3-
     way en paralelo hasta el
     procesador 0, que escribe el file
   • El file es en formato Java
     (“external-32” del MPI-2)




                                         19
Funcionalidad “Normal” de Jumpshot
• Scrolling y zooming en una vista a lo largo del tiempo
• Las flechas representan mensajes
• Se puede hacer click en flechas y estados para m´s
  detalles
• Histogramas de las duraciones de los estados, ancho
  de banda de los mensajes
• Vista de picos para resumir información de estados
• Se puede seleccionar/deseleccionar estados, mensajes




                                                     20
Línea de tiempo y vista de picos




                                   21
Funcionalidades “Inusuales” de Jumpshot


• Scrolling y zooming en la vista de histograma
• Puede enfocarse en duraciones/anchos de banda extremos
   • calcula el top/bottom 1%, 5%, ... basado en el supuesto que las
     distribuciones son normales
   • Parpadeo de las instancias de estados, flechas; puede ayudar a
     localizar eventos “raros” en un pantallazo grande y confuso.
• Puede hacer scroll de las líneas de tiempo una por una para
  afinar la sincronización del reloj
• Heredado de Java:
   • portabilidad
   • Se puede correr como applet
   • Bonitas funcionalidades GUI
       • Varios look-and-feel
       • Subventanas que se desprenden



                                                                       22
Ventajas de usar Java
• Portable (Sun, SGI, RS6000, Windows, Linux, etc)
• Se puede correr como una aplicación X11 o en un
  browser como un applet
• Gráficos suficientemente rápidos
• El set de componentes gráficos es muy bueno para
  construir GUI – Swing de Java.




                                                     23
Problemas por usar Java
• Java evoluciona muy rápido (1.0 - 1.1.2 - 1.1.6 - 1.2-
  1.3 – 1.4 – 1.5)
   • A veces hay cambios radicales en java (por ejemplo cuando
     salió la 1.2) y hay que esperar a que reprogramen jumpshot o
     evitar actualizar a nuevas versiones de java.
   • Componentes también evolucionan (ej: swing)
   • Comportamiento del applet a veces no es completamente igual
     al de la aplicación X11
• Se originan inconvenientes debido a que el programa
  Java no es auto contenido (ej: variable CLASSPATH)
   • Eso se resuleve en parte con el uso del JRE (java runtime
     environment)




                                                                 24
Distribución de Jumpshot
• Las distribuciones de Jumpshot incluyen
   • Librería CLOG para crear archivos de log, usa cualquier MPI
   • Librería mpe con la opción de ALOG/CLOG
   • Librería de perfil MPI para la instrumentación automática de
     programas MPI
• Se distribuye
   • Como parte del MPICH (version 1.1.1 en adelante)
   • como parte de la librería mpe, para usarse con cualquier
     implementación del MPI
   • Jumpshot sólo y por separado




                                                                25
Qué mejoras debe hacerse?


• Más requerimientos:
   • Conexión con el código fuente (logear __FILE__, __LINE__)
   • Seleccionar por los comunicadores MPI (noes fácil, por la forma
     como se crean los communicator id)
   • Scroll vertical
• Escalabilidad (Jumpshot 4 ya ve algo de eso);
  aglomeraciones de data útil
• Detección automática de anomalías en la performance




                                                               26

Mais conteúdo relacionado

Mais procurados (20)

Introduccion a Python
Introduccion a PythonIntroduccion a Python
Introduccion a Python
 
Intro Python
Intro PythonIntro Python
Intro Python
 
Python (Lenguaje de Programación)
Python (Lenguaje de Programación)Python (Lenguaje de Programación)
Python (Lenguaje de Programación)
 
Curso python
Curso pythonCurso python
Curso python
 
Presnetación Go
Presnetación GoPresnetación Go
Presnetación Go
 
Decompiladores
DecompiladoresDecompiladores
Decompiladores
 
Introduccion a python 3
Introduccion a python 3Introduccion a python 3
Introduccion a python 3
 
Python para principiantes
Python para principiantesPython para principiantes
Python para principiantes
 
Programador Jr. para Python Primera Parte
Programador Jr. para Python Primera ParteProgramador Jr. para Python Primera Parte
Programador Jr. para Python Primera Parte
 
Perl mpi
Perl mpiPerl mpi
Perl mpi
 
Python para todos
Python para todosPython para todos
Python para todos
 
Sesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en PythonSesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en Python
 
Semana 2 Fundamentos de Python(Variables)
Semana 2   Fundamentos de Python(Variables)Semana 2   Fundamentos de Python(Variables)
Semana 2 Fundamentos de Python(Variables)
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
 
Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_
 
Introduccion a Ppython
Introduccion a PpythonIntroduccion a Ppython
Introduccion a Ppython
 
ATIX06
 ATIX06 ATIX06
ATIX06
 
Evidencia Sesión 5: Python
Evidencia Sesión 5: PythonEvidencia Sesión 5: Python
Evidencia Sesión 5: Python
 
Python Vs C
Python Vs CPython Vs C
Python Vs C
 
Curso c++
Curso c++Curso c++
Curso c++
 

Destaque (8)

Paralela6
Paralela6Paralela6
Paralela6
 
Paralela8
Paralela8Paralela8
Paralela8
 
Paralela4
Paralela4Paralela4
Paralela4
 
Paralela5
Paralela5Paralela5
Paralela5
 
Paralela3
Paralela3Paralela3
Paralela3
 
Paralela7
Paralela7Paralela7
Paralela7
 
Paralela1
Paralela1Paralela1
Paralela1
 
Cased hole seismic (2)
Cased hole seismic (2)Cased hole seismic (2)
Cased hole seismic (2)
 

Semelhante a Paralela10

Estructura de datos c++
Estructura de datos c++Estructura de datos c++
Estructura de datos c++kikeMerck
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoBig Data Spain
 
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.David Tabernero Pérez
 
Servidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidadServidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidadInclamSoft
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones WebDeisy Sapaico
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Francisco Javier Toscano Lopez
 
PostgreSQL el core de OpenERP
PostgreSQL el core de OpenERPPostgreSQL el core de OpenERP
PostgreSQL el core de OpenERPCristian Salamea
 
Afinamiento y entendimiento Garbage Collector JVM IBM
Afinamiento y entendimiento Garbage Collector JVM IBMAfinamiento y entendimiento Garbage Collector JVM IBM
Afinamiento y entendimiento Garbage Collector JVM IBMJuan Camilo Parra
 
Log en Aplicaciones Java y JavaEE
Log en Aplicaciones Java y JavaEELog en Aplicaciones Java y JavaEE
Log en Aplicaciones Java y JavaEEVortexbird
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSebastian Gonzalez
 
Optimización global
Optimización globalOptimización global
Optimización globalSaory Rma
 

Semelhante a Paralela10 (20)

Dentro de un Backend
Dentro de un BackendDentro de un Backend
Dentro de un Backend
 
Estructura de datos c++
Estructura de datos c++Estructura de datos c++
Estructura de datos c++
 
Scrum para uno
Scrum para unoScrum para uno
Scrum para uno
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén Casado
 
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
 
Servidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidadServidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidad
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Logs y auditoría
Logs y auditoríaLogs y auditoría
Logs y auditoría
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
 
PostgreSQL el core de OpenERP
PostgreSQL el core de OpenERPPostgreSQL el core de OpenERP
PostgreSQL el core de OpenERP
 
Intro Mpi
Intro MpiIntro Mpi
Intro Mpi
 
Afinamiento y entendimiento Garbage Collector JVM IBM
Afinamiento y entendimiento Garbage Collector JVM IBMAfinamiento y entendimiento Garbage Collector JVM IBM
Afinamiento y entendimiento Garbage Collector JVM IBM
 
Log en Aplicaciones Java y JavaEE
Log en Aplicaciones Java y JavaEELog en Aplicaciones Java y JavaEE
Log en Aplicaciones Java y JavaEE
 
Palm OS - SO multitarea.
Palm OS - SO multitarea.Palm OS - SO multitarea.
Palm OS - SO multitarea.
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corte
 
Redes
RedesRedes
Redes
 
Optimización global
Optimización globalOptimización global
Optimización global
 
Creacion de un cartridge para Openshift
Creacion de un cartridge para OpenshiftCreacion de un cartridge para Openshift
Creacion de un cartridge para Openshift
 
Logs en Linux.pdf
Logs en Linux.pdfLogs en Linux.pdf
Logs en Linux.pdf
 

Último

CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024AndreRiva2
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 

Último (20)

Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 

Paralela10

  • 1. Programación y Computación paralela Visualización de la Performance Glen D. Rodríguez R. Basado en material de Zaki, Lusk, Gropp y Swider 1
  • 2. Resumen • Qué es Jumpshot y de dónde viene? • Otros softwares relacionados • Requisitos para un sistema de visualización de performance basado en logs (bitácoras). • Produciendo logs: CLOG • Visualizando logs: Jumpshot • Detalles con el Java • Trabajos futuros 2
  • 3. Qué es Jumpshot? • Herramienta para comprender el comportamiento de procesos programas paralelos • Análisis Post-mortem • Basado en archivos de log CLOG • Incluye un paquete de logs (CLOG) LOG • Sobretodo para programas MPI • Escrito en Java Jumpshot pantalla 3
  • 4. Pantalla Típica de Jumpshot 4
  • 5. Ejemplo en un programa que usa PETSc 5
  • 6. De donde vino Jumpshot? • La historia de las herramientas para análisis de performance basadas en logs en Argonne es también la historia de la búsqueda de un entorno de programación en el cuál se implementase gráficos sencillos y una GUI. • Gist (BBN) -- sólo X11 • Gráficos blanco y negro, no portable (sólo en la BBN Butterfly) • Upshot -- X11 más Athena widgets, usado con el formato de logs ALOG • fastidioso, obtener performance era difícil (1990) • Upshot re-escrito en Tcl/Tk • Fácil de escribir código, gráficos lentos 6
  • 7. Historia (continuación) • Nupshot -- Upshot reescrito en Tcl/Tk/C para más velocidad • Buena performance • Interfase Tcl/C inestable • CLOG – nuevo formato de log • Java + Upshot = Jumpshot • usa CLOG • tiene nuevas funciones • explora posibilidades tecnológicas de Java • Que sigue: JPython? • SLOG – nuevo formato para visualizar más fácil logs enormes. 7
  • 8. Esfuerzo relacionados • Gist aún se usa en TotalView del Dolphin como TimeScan • PICL/ParaGraph - Pat Worley, Mike Heath, Jennifer Etheridge, Al Geist • VAMPIR - Pallas • Traceview - Al Malony • Pablo - Dan Reed, Ruth Aydt • XPVM - Jim Kohl, Al Geist • XMPI - Raja Daoud, ahora en Notre Dame • Paradyne - Bart Miller, Myron Livny • Etc. 8
  • 9. Por qué rehacer el Upshot? Los sistemas modernos tienen nuevos requerimientos (no todos han sido satisfechos aún por Jumpshot): • Ambiente estable por largo tiempo para soportar investigaciones futuras • Portable, no solo entre los diferentes Unix y Linux, incluso a Windows • Soporte de las vistas tipo upshot más útiles • Líneas de tiempo de los procesos con scrolling y zooming • Histogramas de la duración de estados, propiedades de los mensajes, rangos de los picos • Las animaciones no son tan útiles 9
  • 10. Requerimientos (continuación) • Formato de archivos de log flexible y extensible, listo para incluir nuevos tipos de eventos, estados, conceptos • Estados definidos por el usuario final • Performance escalable • control del logging en el origen • agregación • Soportar decenas de miles de eventos • Estados anidados y no excluyentes • Soporte de estados anidados es más importante • Conectar los eventos mostrados con el código fuente. 10
  • 11. Requerimientos (continuación) • Mayor comprensión de las capacidades del MPI (comunicadores, semi-transparencia de operaciones colectivas) • Habilidad para hacer queries con detalles de eventos específicos, mensajes, y estados. • Habilidad para localizar automáticamente partes “interesantes” del pantallazo (tópico de investigación) • Etc.... 11
  • 12. Librerías de logs CLOG : Background Características del viejo ALOG: • Registros de formato fijo (6 ints y string) • Bueno para parsing, almacenamiento y acceso • Malo para meter extensiones • Hace timestamp con resolución de microsegundos • OK en 1990 • No es lo suficientemente preciso hoy día • Formato ASCII en archivos • Bueno para portabilidad, fácil de leer • No puede guardar data binaria en forma conveniente 12
  • 13. CLOG: Requerimientos • Debe ser lo suficientemente eficiente para no interferir con el comportamiento del programa; I/O sólo cuando el programa termina • Es más conveniente tener un solo archivo de log al final, en vez de uno por procesador. • No se puede asumir que los relojes de las computadoras están sincronizados (ni los timestamps) • Flexibilidad en el tipo de registro, pero que no sea auto descriptivo del todo • Portable: archivos de log se pueden leer en diferentes máquinas que en las que los escribieron. 13
  • 14. CLOG: Cómo trabaja? • Depende del MPI, para portabilidad • Llama a la función MPI_Wtime para conseguir el timestamp • Más o menos eficiente, pero no lo mejor, en cualquier arquitectura/OS • múltiples formatos de registros con tipos, más un tipo “plano” • El usuario puede definir sus propios tipos, estados, y colores • Los registros de log se acumulan en grandes buffers en memoria hasta que el malloc (asignar espacio dinámico a punteros) falla, luego se para. 14
  • 15. Como crear el log? • Siga estos pasos 1. Compilar el código en forma normal (cc –c) 2. Vincular las librerias del log en vez de las normales del MPI. Por ejemplo, para programas en C hacer: • cc -o myprog.log myprog.c -llmpi -lpmpi -lmpi -lrt - pthread • Y para fortran • f77 -o myprog.log myprog.f -lfmpi -llmpi -lpmpi -lmpi -lrt -pthread 3. Al correr el programa se crea una log de nombre nombredelprograma.log, o nombredelprograma_profile.log 4. Si quiero loger todo funcion MPI, haga mpicc -o programa programa.c -llmpe -lmpe 15
  • 16. Programa y registros al log /* Sample Program with Logging Commands*/ #include "mpi.h" #include "mpe.h" #include <math.h> #include <stdio.h> double f(a) double a; { return (4.0 / (1.0 + a*a));} int main(argc,argv) int argc; char *argv[]; { int done = 0, n, myid, numprocs, i, rc, repeat; double PI25DT = 3.141592653589793238462643; double mypi, pi, h, sum, x, a; double startwtime, endwtime; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); MPE_Init_log(); if (myid == 0) { MPE_Describe_state(1, 2, "Broadcast", "red:vlines3"); MPE_Describe_state(3, 4, "Compute", "blue:gray3"); MPE_Describe_state(5, 6, "Reduce", "green:light_gray"); MPE_Describe_state(7, 8, "Sync", "yellow:gray"); 16 }
  • 17. while (!done) { if (myid == 0) { printf("Enter the number of intervals: (0 quits) "); scanf("%d",&n); startwtime = MPI_Wtime(); } MPI_Barrier(MPI_COMM_WORLD); MPE_Start_log(); MPE_Log_event(1, 0, "start broadcast"); MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); MPE_Log_event(2, 0, "end broadcast"); if (n == 0) done = 1; else { for (repeat=5; repeat; repeat--) { MPE_Log_event(7,0,"Start Sync"); MPI_Barrier(MPI_COMM_WORLD); MPE_Log_event(8,0,"End Sync"); MPE_Log_event(3, 0, "start compute"); h = 1.0 / (double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i - 0.5); sum += f(x); } mypi = h * sum; MPE_Log_event(4, 0, "end compute"); fprintf( stderr, "[%d] mypi = %lfn", myid, mypi );
  • 18. Sigue MPE_Log_event(5, 0, "start reduce"); MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); MPE_Log_event(6, 0, "end reduce"); if (myid == 0) { printf("pi is approximately %.16f, Error is %.16fn", pi, fabs(pi - PI25DT)); endwtime = MPI_Wtime(); printf("wall clock time = %fn", endwtime-startwtime); } } } MPE_Stop_log(); } MPE_Finish_log("cpilog.log"); MPI_Finalize(); } 18
  • 19. Cómo trabaja CLOG? (cont.) • Al finalizar (CLOG_Finalize es colectivo) • Data de proceso local se añade a los buffers • Los timestamps se ajustan, usando un simple algoritmo y comunicación con otros procesos • Los procesos forman un árbol binario y hacen un merge local 3- way en paralelo hasta el procesador 0, que escribe el file • El file es en formato Java (“external-32” del MPI-2) 19
  • 20. Funcionalidad “Normal” de Jumpshot • Scrolling y zooming en una vista a lo largo del tiempo • Las flechas representan mensajes • Se puede hacer click en flechas y estados para m´s detalles • Histogramas de las duraciones de los estados, ancho de banda de los mensajes • Vista de picos para resumir información de estados • Se puede seleccionar/deseleccionar estados, mensajes 20
  • 21. Línea de tiempo y vista de picos 21
  • 22. Funcionalidades “Inusuales” de Jumpshot • Scrolling y zooming en la vista de histograma • Puede enfocarse en duraciones/anchos de banda extremos • calcula el top/bottom 1%, 5%, ... basado en el supuesto que las distribuciones son normales • Parpadeo de las instancias de estados, flechas; puede ayudar a localizar eventos “raros” en un pantallazo grande y confuso. • Puede hacer scroll de las líneas de tiempo una por una para afinar la sincronización del reloj • Heredado de Java: • portabilidad • Se puede correr como applet • Bonitas funcionalidades GUI • Varios look-and-feel • Subventanas que se desprenden 22
  • 23. Ventajas de usar Java • Portable (Sun, SGI, RS6000, Windows, Linux, etc) • Se puede correr como una aplicación X11 o en un browser como un applet • Gráficos suficientemente rápidos • El set de componentes gráficos es muy bueno para construir GUI – Swing de Java. 23
  • 24. Problemas por usar Java • Java evoluciona muy rápido (1.0 - 1.1.2 - 1.1.6 - 1.2- 1.3 – 1.4 – 1.5) • A veces hay cambios radicales en java (por ejemplo cuando salió la 1.2) y hay que esperar a que reprogramen jumpshot o evitar actualizar a nuevas versiones de java. • Componentes también evolucionan (ej: swing) • Comportamiento del applet a veces no es completamente igual al de la aplicación X11 • Se originan inconvenientes debido a que el programa Java no es auto contenido (ej: variable CLASSPATH) • Eso se resuleve en parte con el uso del JRE (java runtime environment) 24
  • 25. Distribución de Jumpshot • Las distribuciones de Jumpshot incluyen • Librería CLOG para crear archivos de log, usa cualquier MPI • Librería mpe con la opción de ALOG/CLOG • Librería de perfil MPI para la instrumentación automática de programas MPI • Se distribuye • Como parte del MPICH (version 1.1.1 en adelante) • como parte de la librería mpe, para usarse con cualquier implementación del MPI • Jumpshot sólo y por separado 25
  • 26. Qué mejoras debe hacerse? • Más requerimientos: • Conexión con el código fuente (logear __FILE__, __LINE__) • Seleccionar por los comunicadores MPI (noes fácil, por la forma como se crean los communicator id) • Scroll vertical • Escalabilidad (Jumpshot 4 ya ve algo de eso); aglomeraciones de data útil • Detección automática de anomalías en la performance 26