TAU: Tuning & Analysis Utilities Herramientas de desarrollo de aplicaciones paralelas: Debugging y análisis del rendimiento Diego R. Martínez Centro de Investigación en Tecnoloxías da Información Dpto. Electrónica y Computación
Índice 1 TAU Toolkit 2 Instalación 3 Instrumentación 4 Profiling 5 Trazas 6 Más... CESGA Computational Science Summer School 2011
Índice 1 TAU Toolkit 2 Instalación 3 Instrumentación 4 Profiling 5 Trazas 6 Más... CESGA Computational Science Summer School 2011
TAU Tuning & Analysis Utilities http://www.cs.uoregon.edu/research/tau Toolkit para análisis de rendimiento de progamas paralelos Profiling y trazas Fortran, C, C++, Java y Python Desarrollado por: - University of Oregon - Research Centre Julich - Los Alamos National Laboratory CESGA Computational Science Summer School 2011 1/25
Características Integración con otras herramientas PAPI Dyninst Formato de trazas - Vampir, Paraver, Jumpshot CESGA Computational Science Summer School 2011 2/25
Características Instrumentación Grupos de profiling Permiten organizar y controlar la instrumentación Tipos soportados Automática - Program Database Toolkit (PDT) Manual - API de instrumentación de TAU Dinámica - Intrumenta directamente el ejecutable - Interposición de librería MPI CESGA Computational Science Summer School 2011 3/25
Características Herramientas de visualización ParaProf Profiles Jumpshot Trazas CESGA Computational Science Summer School 2011 4/25
Índice 1 TAU Toolkit 2 Instalación 3 Instrumentación 4 Profiling 5 Trazas 6 Más... CESGA Computational Science Summer School 2011
Instalación básica me@ft$./configure me@ft$ make install $ more README INSTALL $./configure -help $./configure -fullhelp CESGA Computational Science Summer School 2011 5/25
Opciones de instalación./configure Opciones generales -help -prefix=<dir> directorio de instalación -tag=<etiqueta> identificación de la instalación CESGA Computational Science Summer School 2011 6/25
Opciones de instalación./configure Opciones de compiladores -cc=<comp> compilador de C -cxx=<comp> compilador de C++ -fortran=<comp> compilador de fortran90 CESGA Computational Science Summer School 2011 6/25
Opciones de instalación./configure Opciones de instrumentación -pdt=<dir> instrumentación automática de códigos C, C++ y Fortran90 (PDT) -papi=<dir> API de acceso a los contadores hardware (PAPI) CESGA Computational Science Summer School 2011 6/25
Opciones de instalación./configure Librerías paralelas -openmp OpenMP -pthread pthreads -mpiinc=<dir> includes MPI -mpilib=<dir> librerías MPI CESGA Computational Science Summer School 2011 6/25
Múltiples configuraciones me@ft$./installtau [opciones] Crea todas las configuraciones posibles compatibles con las opciones proporcionadas $./installtau -help CESGA Computational Science Summer School 2011 7/25
Interfaz gráfica Java me@ft$./tau_setup CESGA Computational Science Summer School 2011 8/25
Índice 1 TAU Toolkit 2 Instalación 3 Instrumentación 4 Profiling 5 Trazas 6 Más... CESGA Computational Science Summer School 2011
Instrumentación Dos métodos Manual - Control completo - Más costoso - Más propenso a errores Automáticamente - Dinámica - MPI wrapper library - TAU compiler CESGA Computational Science Summer School 2011 9/25
Instrumentación automática DynInstAPI http://www.dyninst.org/ tau_run Pre-carga de librería Realiza un profile de las llamadas a funciones MPI, I/O, memoria,... Script tau_exec $ tau_exec -io./a.out TAU compiler Instrumentación automática de todas las funciones Utiliza los parsers proporcionados por PDT - Program Database Toolkit CESGA Computational Science Summer School 2011 10/25
Instrumentación automática DynInstAPI http://www.dyninst.org/ tau_run Pre-carga de librería Realiza un profile de las llamadas a funciones MPI, I/O, memoria,... Script tau_exec $ tau_exec -io./a.out TAU compiler Instrumentación automática de todas las funciones Utiliza los parsers proporcionados por PDT - Program Database Toolkit CESGA Computational Science Summer School 2011 10/25
Instrumentación automática DynInstAPI http://www.dyninst.org/ tau_run Pre-carga de librería Realiza un profile de las llamadas a funciones MPI, I/O, memoria,... Script tau_exec $ tau_exec -io./a.out TAU compiler Instrumentación automática de todas las funciones Utiliza los parsers proporcionados por PDT - Program Database Toolkit CESGA Computational Science Summer School 2011 10/25
TAU Compiler me@ft$ tau_compiler.sh --help me@ft$ tau_compiler.sh <tau_compiler_options> \ <compiler> <compiler_options> app.c CESGA Computational Science Summer School 2011 11/25
TAU Compiler TAU Makefile me@ft$ tau_cc.sh -tau_makefile=<tau Makefile> \ -tau_options=<opciones> app.c tau_cc.sh, tau_cxx.sh y tau_f90.sh Variables de entorno - TAU_MAKEFILE - TAU_OPTIONS Makefiles? - $TAU_DIR/[arquitectura]/lib CESGA Computational Science Summer School 2011 12/25
Índice 1 TAU Toolkit 2 Instalación 3 Instrumentación 4 Profiling 5 Trazas 6 Más... CESGA Computational Science Summer School 2011
TAU Profiling Aplicación instrumentada Variable TAU_PROFILE (activada por defecto) $ export TAU_PROFILE=1 Variable de entorno PROFILEDIR - Directorio donde se guardan los resultados del profile Monitorización de los parámetros/métricas correspondientes - Tiempo inclusivo/exclusivo de cada función -... CESGA Computational Science Summer School 2011 13/25
TAU Profiling Call-path TAU_CALLPATH Crea un call-path Profundidad definida por TAU_CALLPATH_DEPTH - Por defecto es 2 CESGA Computational Science Summer School 2011 14/25
Profiling Selectivo TAU_THROTTLE Eliminamos las funciones - número elevado de llamadas - tiempo inclusivo por llamada pequeño Comportamiento por defecto: - Elimina funciones que se llaman 100.000 veces siendo cada llamada menor de 10µs Control mediante variables de entorno TAU_THROTTLE TAU_THROTTLE_NUMCALLS TAU_THROTTLE_PERCALL CESGA Computational Science Summer School 2011 15/25
Profiling Selectivo TAU_THROTTLE Ejemplo $ export TAU_THROTTLE=1 $ export TAU_THROTTLE_NUMCALLS=2000000 $ export TAU_THROTTLE_PERCALL=5 CESGA Computational Science Summer School 2011 15/25
Profiling Selectivo PDT Órdenes de profiling Fichero con las órdenes - Define las zonas de la aplicación a considerar - Permite introducir código $ export TAU_OPTIONS= -opttauselectfile=<file> CESGA Computational Science Summer School 2011 16/25
Profiling Selectivo PDT 1 # Lista negra de funciones 2 # Todas las que comienza con foo_ y un único argumento 3 # de tipo int * 4 BEGIN_EXCLUDE_LIST 5 6 void foo_#(int *) C 7 8 END_EXCLUDE_LIST 9 10 # Lista negra de ficheros 11 # Todos los ficheros con extension so 12 BEGIN_FILE_EXCLUDE_LIST 13 14 *.so 15 16 END_FILE_EXCLUDE_LIST CESGA Computational Science Summer School 2011 17/25
Profiling Selectivo PDT 1 BEGIN_INSTRUMENT_SECTION 2 3 # instrumenta todos los lazos externos de esta función 4 loops file="loop_test.c" routine="multiply" 5 6 file="foo.c" line=9 code="printf(\"i=d: \", i);" 7 8 exit routine="int foo()" code="printf(\"in foo\");" 9 entry routine="int foo()" code="printf(\"out foo\");" 10 11 END_INSTRUMENT_SECTION CESGA Computational Science Summer School 2011 18/25
Contadores hardware PAPI Acceso simultáneo a multiples contadores Limitado por la compatibilidad y disponibilidad - papi_avail y papi_event_chooser Selecionar los contadores mediante TAU_METRICS - Opción mpirun: -e VAR=valor COUNTER1=GET_TIME_OF_DAY COUNTER2=PAPI_L1_DCM COUNTER3=PAPI_FP_INS... CESGA Computational Science Summer School 2011 19/25
Visualización pprof Organiza y muestra un profile generado por TAU Texto CESGA Computational Science Summer School 2011 20/25
Visualización ParaProf Herramienta de análisis proporcionada por TAU Entorno gráfico (Java) Texto y gráficas Opciones --pack <file> Empaqueta los datos en un fichero (no GUI) $ paraprof -pack app.ppk CESGA Computational Science Summer School 2011 20/25
Visualización ParaProf CESGA Computational Science Summer School 2011 20/25
Índice 1 TAU Toolkit 2 Instalación 3 Instrumentación 4 Profiling 5 Trazas 6 Más... CESGA Computational Science Summer School 2011
Trazas Ejecución TAU_TRACE $ export TAU_TRACE=1 Variable de entorno TRACEDIR - Directorio donde se guardan los resultados de la traza Se genera una traza por cada proceso Combinación de trazas individuales en una traza única - tau_treemerge.pl CESGA Computational Science Summer School 2011 21/25
Trazas Exportando a otros formatos Comandos tau2otf Open Trace Format tau2vtf Vampir Trace Format tau2slog2 SLOG2 format (Jumpshot) CESGA Computational Science Summer School 2011 22/25
Visualización JumpShot Combinar los ficheros... - tau_treemerge.pl... y exportar - tau2slog2 $ tau2slog2 tau.trc tau.edf -o tau.slog2 CESGA Computational Science Summer School 2011 23/25
Visualización JumpShot CESGA Computational Science Summer School 2011 23/25
Índice 1 TAU Toolkit 2 Instalación 3 Instrumentación 4 Profiling 5 Trazas 6 Más... CESGA Computational Science Summer School 2011
PerfExplorer y PerfDMF PerfDMF Base de datos especialmente diseñada para profiles de aplicaciones paralelas PerfExplorer Utiliza una base de datos PerfDMF para explorar el rendimiento de aplicaciones paralelas - Ejecuciones con diferentes configuraciones - Data mining y knowledge discovery - Clustering, resúmenes, asociaciones, regresiones, correlaciones,... CESGA Computational Science Summer School 2011 24/25
Más... JAVA Python Pluging PTP para eclipse - Parallel Tool Platforms Memory tracking CESGA Computational Science Summer School 2011 25/25