Resumen
En los últimos años diferentes áreas del conocimiento (Química, Biología, Economía, etc.) han incrementado notablemente la necesidad de contar con plataformas de altas prestaciones que les permitan dar solución a problemas que involucran el procesamiento de grandes cantidades de datos y/o un alto número de operaciones. Esta situación ha propiciado el desarrollo del Cómputo Paralelo, cuyo objetivo consiste en la división de un problema cualquiera en un número arbitrario de subproblemas, los cuales pueden resolverse simultáneamente por diferentes procesadores.
Aún cuando los problemas del mundo real que se modelan computacionalmente son inherentemente paralelos, las soluciones que se presentan se obtienen mediante programación secuencial. El interés de los científicos por la adaptación de código mediante el uso de técnicas de paralelización deriva del deseo de mejorar el desempeño de algoritmos secuenciales, tomando ventaja del poder computacional que los sistemas paralelos proveen, es por esto que, tienden a incorporar procesamiento paralelo después de probar y revisar sus aplicaciones en un ambiente secuencial.
La rápida evolución del hardware de altas prestaciones y la demanda permanente por un mayor rendimiento computacional en áreas como la Minería de Datos, cuyo objetivo es apoyar en la toma de decisiones a partir de la extracción de conocimiento proveniente de una base de datos y cuyas principales tareas poseen la ventaja de su fácil aplicación a cualquier área del conocimiento tal como la Bioinformática, ha contribuido al uso de técnicas de paralelización que faciliten el manejo de la información proveniente de distintas fuentes, así como la realización de cálculos complejos. El uso de Programación Paralela representa una labor sumamente compleja.
En teoría, el uso de adaptación de código se basa en aplicar múltiples procesadores para dar solución a un problema. En la práctica, la Programación Paralela tiene un alto costo, no solo por el valor de la plataforma de hardware que involucra, sino que además requiere un mayor esfuerzo por parte del científico, el cual debe ser un programador experto, quien debe entender el problema y además contar con amplios conocimientos de arquitectura de computadoras para así, lograr una buena relación entre el software implementado y la arquitectura destino (hardware).
Las capacidades de cómputo de los sistemas cambian frecuentemente debido al abaratamiento y su rápida evolución, esta variabilidad influye notablemente en las prestaciones del software de Cómputo Paralelo con el que se cuenta. Lo anterior genera una necesidad por el desarrollo de metodologías y técnicas con capacidad de auto-adaptación de código, es decir, software adaptativo que sea capaz de conseguir que el código previamente paralelizado, pueda ser usado en un entorno ajeno al de su diseño original sin reducir las prestaciones iniciales.
El objetivo primordial de este trabajo se situará en el marco de la adaptación de código con el propósito de optimizar el tiempo de ejecución por medio del estudio y aplicación de técnicas paralelas auto-adaptables a las características del sistema paralelo donde se ejecutan, en particular de algoritmos de Minería de Datos enfocados a la solución de problemas bioinformáticos. La optimización del tiempo se hará de una manera cercana a la óptima. Tal implementación proporcionará a los usuarios rutinas capaces de ejecutarse eficientemente en el sistema donde se esté trabajando, independientemente de las características del sistema y de los conocimientos que sobre Cómputo Paralelo se tengan.