jueves, 19 de febrero de 2015

Programación de Computadoras Paralelas

Universidad Autónoma del Estado de México

Facultad de Ingeniería

Programación Paralela y Distribuida



PROFESOR: Ing. Efego Gutierrez Ocampo

ALUMNO: Eduardo Manuel Flores Vera


Fecha: Febrero de 2015





Introducción

Con el paso del tiempo, la programación paralela se consolidó como un método en el cual, problemas de gran tamaño, se dividen en problemas más pequeños, para luego ser resueltos simultáneamente (paralelamente), con cierta similitud a la técnica divide y vencerás. En el año de 1988, McCraw y Axelrod, dos incursores de la programación paralela definieron 4 formas distintas de desarrollar aplicaciones para computadoras paralelas. en los siguientes párrafos, se explicarán dichos enfoques y sus respectivos ejemplos.




FORMAS DE DESARROLLAR APLICACIONES PARA COMPUTADORAS PARALELAS


1._EXTENDER O ENRIQUECER UN COMPILADOR

Consiste en emplear un lenguaje existente  y recurrir a funciones proporcionadas por alguna biblioteca para cómputo paralelo. Este enfoque tiene la ventaja radical del ahorro de trabajo y tiempo, aunque aun tiene fallas a corregir. 

Un ejemplo de este tipo de compiladores puede ser Eclipse, el cual permite crear aplicaciones llamadas comunmente "De Cliente Enriquecido".

Otro ejemplo de este enfoque es el compilador Dev C++ C, que ofrece una gran cantidad de librerias para su implementación en paralelo.

Un ejemplo más es el compilador FORTRAN, que, al igual que Dev C++, contiene una vasta cantidad de librerías para su implementación.


2._EXTENDER O ENRIQUECER UN LENGUAJE EXISTENTE
Este enfoque más fácil y menos costoso, ademas de que se ha consolidado como el enfoque más poular para la programación en paralelo.
En este enfoque, se agragan librerías nuevas al lenguaje para que actúe óptimamente acorde a la programación paralela, aunque, tiene sus desventajas. Como el compilador no está involucrado, el programador no contará con la asistencia del mismo para la corrección de errores lógicos y de sintaxis, lo cual, incurre muchas veces en el inadecuado funcionamiento del programa. 

Como ejemplo se puede mencionar el lenguaje Occam, que está diseñado para programar computadoras del tipo Transputer.

Otro ejemplo de este enfoque es el lenguaje C, que ofrece una gran cantidad de librerias para su implementación en paralelo.

Un ejemplo más es el lenguaje FORTRAN, que, al igual que C, contiene una vasta cantidad de librerías para su implementación.

3._AGREGAR UNA NUEVA CAPA DEL LENGUAJE PARALELO ENCIMA DE UN LENGUAJE SECUENCIAL EXISTENTE 

Otro enfoque es el de ampliar lenguajes existentes a fin de adecuarlos a una arquitectura parelela. De esta forma se crean ``variantes'' del lenguaje original con modificaciones. En cada caso se cuenta con primitivas para hacer uso de paralelismo. Una posible desventaja es que este enfoque no tiene en cuenta la arquitectura de la máquina donde se está ejecutando el programa, lo cual puede redundar en implementaciones no óptimas.
Ejemplos:

 Por ejemplo, un lenguaje que cuente con paralelismo a nivel datos depende para su óptimo rendimiento de encontrarse en un equipo SMP (memoria compartida) o MPP con un bus de comunicaciones muy amplio.

El lenguaje ampliado más conocido, que es el HPF (High Performance Fortran)

Dataparallel-C y Compositional C++.


4._DEFINIR TOTALMENTE UN NUEVO LENGUAJE, Y SU COMPILADOR
Se han diseñado lenguajes de programación especializados para arquitecturas paralelas. Sin embargo una desventaja de estos lenguajes es que son útiles únicamente en la arquitectura parelela para la que fueron creados, limitando su utilidad fuera de este ámbito.
Su desventaja radica en que el compliador no dará asistencia alguna al programador en cuenstion de errores lógicos y de sintaxis, lo cual, puede recurrir en el mal funcionamiento del programa.

Como ejemplo se puede mencionar el lenguaje Occam, que está diseñado para programar computadoras del tipo Transputer.


Un ejemplo más sería la máquina abstracta llamada PRAM

Un tercer ejemplo es  POSIX Threads

Un cuarto ejemplo es OpenMP

Un quinto ejemplo es Message Passing Interface 




CONCLUSIONES
En estos días, la programación paralela se está convirtiendo en un enfoque bastante útil, y a la larga, necesario, aunque, la tecnología disponible para su implementación es limitado. Con el tiempo, surgirán nuevas librerías para los lenguajes existentes, así como nuevos lenguajes y nuevos compiladores para su correcta aplicación, y asi, de este modo, evitar que, a raíz de la falta de asistencia de los compiladores existentes, se comentan errores lógicos y de sintaxis, y por consecuente, los programas y aplicaciones creadas con el enfoque paralelo, funcionen inadecuadamente.


REFERENCIAS

http://www.tomechangosubanana.com/tesis/escrito-1-split/node19.html
http://es.wikipedia.org/wiki/Computaci%C3%B3n_paralela#Lenguajes_de_programaci.C3.B3n_en_paralelo
http://es.wikipedia.org/wiki/Eclipse_(software)

miércoles, 18 de febrero de 2015

Encuesta sobre la Programación Paralela

Este fue el cuestionario aplicado a 50 alumnos de la Facultad de Ingenieria de la UAEMex.

1.- ¿Es crítico el rendimiento y la escalabilidad para que el software sea exitoso?


2.- ¿Cuál consideras que es tu nivel de conocimientos de programación para múltiples hilos y núcleos?


3.- ¿En qué tipo de plataformas implementa sus aplicaciones?


4.- Si fuera dueño de un negocio de desarrollo de software, ¿Qué sería lo más importante para usted en el desarrollo de código paralelo?



5.- ¿Qué lenguaje utilizas para desarrollar?


Análisis de los resultados en forma de gráficas:







miércoles, 11 de febrero de 2015

Computación Cuántica

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO
FACULTAD DE INGENIERÍA

INGENIERÍA EN COMPUTACIÓN

PROFESOR: ING. ELFEGO GUTIERREZ OCAMPO

ALUMNO: EDUARDO MANUEL FLORES VERA

MATERIA: PROGRAMACIÓN PARALELA Y DISTRIBUIDA

FECHA: FEBRERO DE 2015











INTRODUCCIÓN
Hoy en día, la computación ha tomado un giro en el cual, los componentes de los dispositivos han llegado a un tamaño tan pequeño, que si se redujera más su tamaño, se llegaría a un tamaño que pudiese ser considerado infinitesimal, los componentes perderían la capacidad de conducir los electrones, por lo cual, los circuitos integrados (CI) simplemente no funcionarían, por lo cual, no se podría dar un  uso a elementos tales como computadoras, smartphones, modems, enrutadores, servidores y todo elemento que contenga en su interior CI's.

Debido a este problema, actualmente se está considerando la implementación de lo que a contuniación se trata, lo que es conocido como computación cuántica, la cual, intenta usar como hardware gases tales como iones e imanes moleculares. Esta tecnología, a pesar de que fue propuesta a mediados del siglo XX, apenas está tomando realmente forma, por lo que su estudio deberá profundizarse un poco más para su total implementación.







Computación Cuántica

Este paradigma trata del uso de qubits, variando de los bits, como se efecúta en la computación normal y clásica. Un Qubit es un sistema cuántico con dos estados propios y que puede ser manipulado arbitrariamente. Este concepto solo puede ser descrito más a fondo por la mecánica cuántica.


La computación cuántica, surge del problema de que, con el paso del tiempo, los transistores se vuelven cada vez más pequeños, llegando al punto en el cual, no pueden generarse más pequeños, debido a que, al llegar a tamaño infinitesimal, se estaría llegando a la escala de los nanómetros, y al llegar a esta escala, los electrones escapan de los canales destinados a su circulación, A este fenómeno se le conoce como el efecto túnel.




Es importante señalar que, la computación cuántica aun cuenta con ciertos impedimentos, como el hardware a utilizar en su implementación; Iones suspendidos en vacío, imanes moleculares entre otros, son posibles candidatos a hardware a utilizarse en este paradigma, aunque, se deberá estudiar más a fondo para su total implementación.








Conclusiones

Se debe dejar constatado que la computación cuántica es un campo cuyo estudio a fondo revolucionará en unos años la informática tal y como se conoce hoy en día. La computación clásica ya nos permitió llegar a obtener bastantes beneficios  para el ser humano, tales como las telecomunicaciones y el estudio a fondo de ramas tales como medicina, química y genética, pero, la comutación cuántica, nos permitirá estudias todas estas ramas, y otras más, mucho más a fondo, permitiendo al ser humano llegar a nuevos conocimientos, tales como la cura de enfermedades, nuevos dispositivos, e incluso, la conquista de nuevos planetas.



Referencias
es.wikipedia.org/wiki/Computación_cuántica
www.comoves.unam.mx/numeros/articulo/67/computacion-cuantica
computacioncuantica.blogspot.com/

Ley de Moore


UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO
FACULTAD DE INGENIERÍA

INGENIERÍA EN COMPUTACIÓN

PROFESOR: ING. ELFEGO GUTIERREZ OCAMPO

ALUMNO: EDUARDO MANUEL FLORES VERA

MATERIA: PROGRAMACIÓN PARALELA Y DISTRIBUIDA

FECHA: FEBRERO DE 2015




INTRODUCCIÓN
En los últimos años, el uso de circuitos integrados y transistores se volvió una necesidad tangente, debido a la complejidad de los dispositovos que han surgido desde principios del siglo XXI. Desde la écpoca de los 60's, ya se trabajaba arduamente en el campo de la computación, ya sea con la teoría de los autómatas no deterministas, y con el comienzo de los circuitos integrados. G. Moore, quien fuese confundador de la mundialmente famosa compañía intel, propuso la ley que a continuación se enuncia; hoy en dia, esta ley sigue teniendo peso en el área de la informática, y es por eso que aun se estudia y hay informáticos que incluso  la vaidan y la validan, y eso por ende, que se menciona como un paradigma que vale la pena revisar a fondo.










LEY DE MOORE

La ley de Moore es un concepto informático que surgió en la década de los 60's, que dictamina que aproximadamente cada dos años se duplica el número de transistores en un circuito integrado. Inicialmente, Morre propuso que los transistores se duplicaban cada 12 meses, aunque tiempo después se corrigió el tiempo estimado de duplicación.
Esta ley fue asentada por Gordon E. Moore, quien fuese cofundador de la mundialmente famosa compañía Intel. La fecha exacta de la formulación de esta ley es 19-04-1965. Para 1975, Moore remodificó su ley, asegurando que tardaría exactamente 2 años (24 meses) en duplicarse el número de transistores de un CI (Circuito Integrado).

En las fechas en las que Moore formulaba su ley, el chip más avanzado contaba con un total de 65 transistores. Hoy en día, un chip como el procesador Pentium IV cuenta con 55 millones.

Aunque hoy en día, la ley de Moore sigue teniendo relevancia a nivel de informaática, es conveniente señalar que debe verse como algo asi como una metáfora del creimiento exponencial en el aspecto del rendimiento y utilidad en el hardware en la aplicación e implementación de las Tecnologías de la Infromación y Comunicación (TIC's).



Conclusiones
Moore, quien fuese un experto en el área de la informática, propuso una ley que actualmente tiene peso en el estudio de los circuitos integrados, por lo que, tiene validez en la computación, y si su estudio se profundiza, tal vez se llegue a una nueva conclusión que tal vez Moore quiso dar a entender.



Referencias
es.wikipedia.org/wiki/Ley_de_Moore
curiosidades.batanga.com/4933/que-es-la-ley-de-moore-y-para-que-sirve
www.muyinteresante.es/tecnologia/preguntas.../ique-es-la-ley-de-moore

lunes, 9 de febrero de 2015

Libros de consulta para programación paralela y distribuida

He aquí algunas direcciones web en las cuales se podrán encontrar libro relacionados tales como:

-Fundamentals of Parallel Processing
            http://shodhganga.inflibnet.ac.in/bitstream/10603/3398/7/07_chapter%201.pdf (Este link es para el capítulo 1)     
http://www.pearsonhighered.com/educator/product/Fundamentals-of-Parallel-Processing/9780139011580.page (esta es la página de la editorial Pearson) 


-Paralell Programming: Techniques and applicationes using networked workstations and parallel computers 

                http://dctextbooks.com/22349-parallel-programming-techniques-and-applications_2.html (en esta página deberán registrarse para poder realizar la descarga)