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

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

 
proyectos/gopac/synclike.txt · Última modificación: 2012/11/29 20:01 por imolina
 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki