UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO
FACULTAD DE INGENIERÍA
INTRODUCCIÓN
En el presente trabajo se aborda el tema de la Programación de Computadoras Paralelas, tema sobre él cual se están llevando a cabo investigaciones en todo el mundo, todo ello con la finalidad de mejorar la eficiencia y eficacia a la hora de solucionar problemas computables, desde los cálculos más simples llevados a cabo en una calculadora hasta los relacionados con simulaciones del comportamiento del universo.
Indudablemente todos somos partícipes en el uso de la tecnología que emplea el concepto de paralelismo, como puede ser el uso simultáneo de distintas aplicaciones en nustros dispositivos móviles o en nuestros equipos de cómputo, por ello y dada nuestra exigencia por un mejor rendimiento en dichos dispositivos es que resulta importante y a la vez muy interesante conocer manera básica esta información.
PROGRAMACIÓN DE COMPUTADORAS PARALELAS
-
Extender o enriquecer un compilador
existente para que traduzca programas
secuenciales en programas paralelos.
-
Extender o enriquecer un lenguaje
existente con nuevas operaciones que
permita a los usuarios expresar el paralelismo.
-
Agregar una nueva capa de lenguaje
paralelo encima de un lenguaje secuencial
existente.
- Definir totalmente un nuevo lenguaje paralelo así como su compilador.
AGREGAR UNA CAPA DE PROGRAMACIÓN PARALELA
Capa inferior:
- Núcleo (core) del cómputo.- Los procesos manipulan su propia porción de datos para producir su parte del resultado (objetos persistentes similares).
Capa superior:- Creación y la sincronización de los procesos- Particionamiento de datos entre procesos
En otras palabras este tipo de enfoque consiste en añadir una capa en la parte superior de un lenguaje de programación secuencial, de tal forma que en ella se lleven a cabo la creación y sincronización de los procesos y la partición de los datos entre los procesos, en otras palabras es donde se expresará el paralelismo.
Estas acciones podrían ser programadas usando un lenguaje paralelo (quizá un lenguaje de programación visual). Donde el compilador sería responsable de traducir estas dos capas del programa paralelo en código listo para su ejecución sobre una computadora paralela.
Este enfoque requiere que el programador aprenda y use un nuevo sistema de programación paralelo, lo cual puede ser la razón por la que no ha captado mucha atención en la comunidad de programación paralela. Mientras que los prototipos de investigación están siendo distribuidos, no se conoce ningún sistema comercial basado en esta filosofía.
Algunos de los prototipos de investigación que se han construido sobre la base de estos principios son:
- Linda (Modelo de coordinación y comunicación entre varios procesos paralelos que operan sobre objetos almacenados en memoria de uso compartido, virtual y asociativa.)
- Plataforma iC2Mpi
- SyD Middleware - Sistema de Dispositivos
- Además de MPI y OpenMp
CREAR UN LENGUAJE PARALELO
La creación de un lenguaje de programación paralela desde cero libera al diseñador del lenguaje de las restricciones de usar un lenguaje estándar existente, pero también significa crear un nuevo compilador desde cero y tratar de conseguir que los usuarios adopten el nuevo idioma.
Se trata sin duda de la más radical de las cuatro vías que se han comentado. Evidentemente, es la más cara y la que exige más labor de desarrollo. Como contrapartida, la mayoría de los problemas que se han expuesto hasta ahora se pueden solucionar mediante un diseño adecuado del sistema lenguaje/compilador.
Los avances realiados hasta la fecha se han orientado en el área de los lenguajes funcionales, como FP o SISAL. Las principales características de diseño de estos lenguajes son mejorar la claridad de la concurrencia, sin requerir que el programador maneje la sincronización, así como permitir que no dependan de la arquitectura objeto sobre la que se van a implementar.
Otra de las grandes ventajas aparece desde el punto de vista de la depuración de programas. Por contra los mayores inconvenientes descanan en la construcción del compilador. Este requiere técnicas muy sofisticadas para realizar con eficacia las funciones que tiene encomendadas, como particionar, mapear y sincronizar el programa. En la actualidad se está teniendo problemas en el manejo dinámico de memoria. ya que las más simples implementaciones requieren grandes cantidades de memoria.
Algunos lenguajes paralelos, tales como C*, no fueron adoptados como estándar. En esta situación muchos vendedores en competencia decidieron no proporcionar compiladores para el lenguaje en sus máquinas. Cuando esto pasa, la portabilidad de códigos se encuentra severamente en peligro.
Algunos ejemplos de lenguajes que surgieron como lenguajes de programación para computadoras paralelas son:
- OCCAM Que cuenta con una sintaxis sorprendentemente diferente de los lenguajes tradicionales imperativos, este lenguaje soporta tanto la ejecución de procesos en paralelo como secuenciales, así como la comunicación y la sincronización entre ellos.
- Ada
- Parlog
- Smalltalk
- HPF
- La API OpenMP
- Halide Permite el desarrollo de aplicaciones con un rendimiento 70 veces el de aplicaciones realizadas con lenguajes tradicionales.
CONCLUSIONES
Como individuos que tenemos contacto con este tipo de tecnología de manera cotidiana con nuestros dispositivos móviles y más aun quiénes realizamos alguna actividad realacionada con la computación debemos prestar atención a los disitntos avances y nuevos descubrimientos que se realizan en todo el mundo con la finalidad de sacar provecho de todo ello, de tal forma que tengamos los conocimientos necesarios para mejorar la disponibilidad de todas estas aplicaciones en nuestra día a día.
Como Desarrollador de Software el conocimiento de la computación paralela permite el uso de los procesadores de un dispositivo de una manera más eficiente y abierta a las posibilidades, ya que como muestra la información dentro del presente trabajo un uso correcto e informado de dichos medios aumenta el poder y limpieza a la hora de crear aplicaciones y hacer que interactuan con otras de manera simultánea, sin hacer sacrificios de rendmiento entre ellas.
Por último es importante hacer hincapié en los problemas relacionados al uso de este tipo de programación, si bien las posibilidades son muy amplias también lo son los impedimientos para implantarla completamete, ya que nos encontramos en una etapa donde pareciera que existe el temor a seguir por ese camino y se plantea el mantenerse con lo que es conocido y seguro, por ejemplo, un cómputo lineal. Aún asi, es muy viable y ha demostrado el potencial con el que cuenta, por lo que no está de más seguirle el paso a su desarrollo.
REFERENCIAS
1.- Stewart Weiss. Parallel Computing [archivo PDF]. Disponible en http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.65/lecture_notes/chapter01.pdf
2.- Michael J. Quinn. Parallel Programming archivo PDF]. Disponible en http://www.cs.kent.edu/~jbaker/PRTS-Sp09/references/Ch-1%20Quinn.pdf
3.- José M. García Carrasco, Fco. José Quiles Flor. EL PARALELISMO: UNA MANERA DE MEJORAR LA EFICIENCIA DE LOS ORDENADORES.
No hay comentarios.:
Publicar un comentario