Synchronization Likelihood
Introducción
En este articulo se explicaran los pasos seguidos durante el desarrollo nuestra version del algoritmo de sincronizacion “Synchronization Likelihood”, asi como las herramientas y tecnologías útilizadas.
Tecnologías Empleadas
- Para la implementación del algoritmo se han útilizado como lenguaje de programacion C, y como tecnologías de paralelizacion las librerias de openMP y Nvidia CUDA.
- Para el estudio de rendimiento hemos usado la herramienta de kcachegrind
Fases de desarrollo
Fase 1 : Familiarizacion y primera implementacion
En un principio se nos dio una version del algoritmo implementada en Matlab. Francisco Rosales realizo una traduccion directa de la implementación Matlab al lenguaje C, con la cual se logro una disminución notable en el tiempo de ejecucion del algoritmo.
Fase 2 : Optimizacion sobre la primera implementacion
Una vez obtenida una primera version del algoritmo nos dedicamos a estudiar cuales eran las partes del codigo que mas tiempo ocupaban, para ello hicimos uso de herramientas de profiling concretamente kcachegrind. De esta forma fuimos concientes de donde habia que enfocar nuestros esfuerzos.
Fase 3 : Paralelizacion
Habiendo estudiado bien el codigo y conseguido sacarle el maximo rendimiento que fuimos capaces exprimiendo bien las posibilidades de una ejecucion secuencial, decidimos aprovechar las posibilidades de paralelizacion de los computadores actuales. Lo que nos llevo por dos caminos diferentes:
Paralelizacion con OpenMP
Las librerias de OpenMP son una forma rapida y no demasiado complicada lograr notables mejorias en la velocidad de la ejecucion de un programa. Lo mejor de este sistema es que no es necesario cambiar el codigo secuencial original. Primeramente tuvimos que localizar cual era exactamente lo que nos interesaba paralelizar y asegurarnos de que no existieran conflictos de dependencia. Luego solo tuvimos que añadir las etiquetas con las que OpenMP reconoce las regiones que queremos que paralelize.
Paralelizacion con CUDA
Referencias
- Synchronization likelihood: an unbiased measure of generalized synchronization in multivariate data sets
C.J. Stam, B.W. van Dijk
Physica D 163 (2002) 236–251