Subscribe:

Ads 468x60px

Sample text

Sample Text

Social Icons

miércoles, 24 de octubre de 2012

Máquina Virtual Paralela


Máquina Virtual Paralela

La Máquina Virtual Paralela (conocida como PVM por sus siglas en inglés de Parallel Virtual Machine) es una biblioteca para el cómputo paralelo en un sistema distribuido de computadoras. Está diseñado para permitir que una red de computadoras heterogénea comparta sus recursos de cómputo (como el procesador y la memoria RAM) con el fin de aprovechar esto para disminuir el tiempo de ejecución de un programa al distribuir la carga de trabajo en varias computadoras.

Consiste en un software y un conjunto de librerías, que permiten establecer una colección de uno o más sistemas de computación, con el fin de poder integrar dichos sistemas en un esquema de una sola máquina virtual.

Opera sobre diferentes plataformas de UNIX y Windows, sobretodo en el ambiente de Internet.

Ventajas

Es una de las librerías de paso de mensajes más fáciles de usar.
Flexible: Control arbitrario de dependencia de estructuras.

 La aplicación decide:

Ø  Donde y cuando ejecutar o terminar las tareas.
Ø  Que maquinas se añaden o se eliminan desde la máquina virtual paralela.
Ø  Que tareas se pueden comunicar y/o sincronizar con otras.

 
Flexible: Control arbitrario de dependencia de estructuras.

 
Desventajas

v  Al ser un esquema heterogéneo de ordenadores, el rendimiento depende de la capacidad de procesamiento de los ordenadores vinculados al esquema de la máquina virtual (lo que era una ventaja tiene una su desventaja).
 
v  Es algo deficiente en cuanto al paso de mensajes se refiere.


Configuración

Ø  Para configurar la MV utilizamos el programa “pvm” en cualquiera de los ordenadores que forman parte de la MV.

Ø  Nos aparecerá un promt donde podremos introducir comandos para interactuar con la MV.

 Los comandos más interesantes son:

ü  add/delete hostname: Anade/Quita el ordenador con nombre hostname a la máquina virtual.
ü   conf: Para ver la configuración actual.
ü   ps –a: Para ver los procesos en ejecución en la máquina virtual.
      ü   quit: Para salir de la consola pero dejar la máquina virtual activa.
ü  halt: Para detener la máquina virtual y salir de la consola.
 

Áreas de Aplicación:

Es muy utilizado para realizar y desarrollar aplicaciones científicas complejas que requieren un esquema de programación en paralelo, dada su compatibilidad entre sistemas operativos, es muy portable y fácil de instalar.


Ejemplo:

El ejemplo que se muestra a continuación es una aplicación PVM que se ha separado en dos tipos de programa.

Un programa maestro es ejecutado por el usuario en una de las computadoras. Este programa provoca la ejecución de programas esclavos en otras computadoras de la máquina virtual y son estos los que llevan a cabo el trabajo. Una vez que han analizado reportan sus resultados al maestro. Para efectos del ejemplo, los programas esclavos simplemente envían un mensaje con información local al maestro, el cual la desplegara por la pantalla.


El maestro hace lo siguiente:


Determina cuales computadores forman parte de la máquina virtual
Inicia un proceso esclavo en cada computador
Recolecta los resultados enviados por los esclavos
Despliega en pantalla la información recibida

El esclavo hace lo siguiente:

Determina el nombre del computador en que se está ejecutando
Determina la hora en ese computador
Envía un mensaje al maestro con la información anterior

 
Programa maestro (master.c):

#include <stdio.h>
#include <pvm3.h>

main() {

struct pvmhostinfo *hostp;
int result, check, i, nhosts, narch, stid;
char buf[64];
pvm_setopt(PvmRoute, PvmRouteDirect); /* canal para comunicacion */
gethostname(buf, 20); /* obtiene nombre del maestro */
printf("El programa maestro se ejecuta en %s\n", buf);

/* Obtiene y despliega la configuracion de la maquina paralela */

pvm_config(&nhosts, &narch, &hostp); /* Obtiene configuracion */
printf("Se encontraron los siguientes computadores en la maquina paralela:\n");
for (i=0; i<nhosts; i++)
printf("\t%s\n", hostp[i].hi_name);
/* Ejecuta los procesos en todas las maquinas */
for (i=0; i<nhosts; i++) {
check = pvm_spawn("slave", 0, PvmTaskHost, hostp[i].hi_name, 1, &stid);
if (!check) printf("No se pudo iniciar proceso en %s\n", hostp[i].hi_name);
}

/* Espera las respuestas de todas las maquinas e imprime su contenido */

result=0;
while (result<nhosts) {
pvm_recv(-1, 2); /* Espera por mensaje de respuesta */
pvm_upkstr(buf); /* Desempaca el mensaje */
printf("%s\n", buf); /* Despliega el contenido en pantalla */
result++; /* Siguiente mensaje */
}
pvm_exit; /* Maestro finalizando */
}

Programa esclavo (slave.c):

#include <stdio.h>
#include <pvm3.h>
#include <time.h>

main() {

time_t now;
char name[12], buf[60];
int ptid;
ptid = pvm_parent(); /* El ID del proceso maestro */
pvm_setopt(PvmRoute, PvmRouteDirect);
gethostname(name, 64); /* Obtiene nombre de la maquina */
now = time(NULL); /* Obtiene hora de la maquina */
strcpy(buf, name); /* Coloca el nombre en el string */
strcat(buf, "'s time is ");
strcat(buf, ctime(&now)); /* Agrega la hora al string */
pvm_initsend(PvmDataDefault); /* Asigna buffer para el mensaje */
pvm_pkstr(buf); /* Empaca el string en el buffer */
pvm_send(ptid, 2); /* Envia el buffer al maestro */
pvm_exit; /* Esclavo finalizando */
}

martes, 23 de octubre de 2012

Tri-Gate


Tri-Gate, un nuevo transistor con estructura tridimensional de Intel

Intel anuncia la creación del primer transistor de tres dimensiones que bautizó con el nombre de Tri-Gate, el cual representaría una evolución de los transistores al ser más pequeño, más veloz y consumir menos energía que su antecesor, el transistor bidimensional o plano... Se inicia una nueva era en el campo de los microprocesadores…

Hacerlos cada vez más pequeños, más rápidos, más eficientes en el consumo de energía y con una mejor relación costo/beneficio, al parecer, es el lema principal de los fabricantes de componentes electrónicos, entre los que Intel viene consiguiendo interesantes avances. Esta vez, al introducir un revolucionario diseño de transistores tridimensionales, llamados Tri-Gates.

Pero, ¿qué son los transistores Tri-Gates? Según Intel, los transistores tridimensionales Tri-Gate son una reinterpretación del transistor convencional. Así, los tradicionales transistores bidimensionales “planos” se ven reemplazados por conducciones tridimensionales de silicio de un grosor increíblemente reducido, que se alzan en vertical desde el sustrato de silicio.
 

Por otro lado, la estructura de los transistores tridimensionales Tri-Gate de Intel ofrece un medio de optimizar la densidad. Dado que estas conducciones son de perfil vertical, pueden colocarse juntas en menor espacio.

Y, ¿cuáles son las ventajas reales de los transistores Tri-Gates? Según Intel, los transistores tridimensionales Tri-Gate permiten a los chips basados en ellos operar a un voltaje más reducido con menores pérdidas eléctricas.

Ley de Moore


La Ley de Moore expresa que aproximadamente cada 2 años se duplica el número de transistores en un circuito integrado. Se trata de una ley empírica, formulada por el co-fundador de Intel, Gordon E. Moore el 19 de abril de 1965, cuyo cumplimiento se ha podido constatar hasta hoy.

En 1965 Gordon Moore afirmó que la tecnología tenía futuro, que el número de transistores por unidad de superficie en circuitos integrados se duplicaba cada año y que la tendencia continuaría durante las siguientes dos décadas.

Más tarde, en 1975, modificó su propia ley al corroborar que el ritmo bajaría, y que la capacidad de integración se duplicaría aproximadamente cada 24 meses. Esta progresión de crecimiento exponencial, duplicar la capacidad de los circuitos integrados cada dos años, es lo que se considera la Ley de Moore. Sin embargo, el propio Moore ha puesto fecha de caducidad a su ley: “Mi ley dejará de cumplirse dentro de 10 o 15 años -desde 2007.
 

Esto ha permitió también a una industria de semiconductores de reciente aparición crear el microprocesador (el cerebro de la computadora) y muchos otros circuitos integrados que han dado lugar a las computadoras personales, Internet, teléfonos móviles y videojuegos. Utilizando adelantos en la tecnología de los chips para computadoras, ahora tenemos películas y programas de TV con imágenes animadas con calidad fotográfica; automóviles que ofrecen un mayor rendimiento del combustible con menos contaminación; una forma de encontrar a nuestras mascotas extraviadas (con chips de identificación implantados); y dispositivos que nos ayudan a ubicarnos en ciudades que no conocemos GPS.

lunes, 22 de octubre de 2012

GNU Parallel


GNU Parallel

Es una herramienta para el intérprete de comandos que permite la ejecución concurrente de tareas, tanto local como remotamente. Típicamente una tarea es un comando o un script [...].

Está programada con Perl y utiliza Rsync y SSH para las ejecuciones remotas. Para comenzar a trabajar con GNU Parallel en Linux, sigue estos sencillos pasos:

1. Descarga la versión más reciente que encuentres en el sitio oficial. http://www.gnu.org/software/parallel/

Para este ejemplo será con la versión 20101202

$ wget http://ftp.gnu.org/gnu/parallel/parallel-20101202.tar.bz2

2. Descomprime e ingresa al directorio

$ tar jxf parallel-20101202.tar.bz2
$ cd parallel-20101202/

3. Sigue los tres pasos habituales: configura, compila e instala. Si tienes compiladores y bibliotecas GNU no tendrás ningún problema.

$ ./configure
$ make
$ sudo make install

4. La documentación oficial en línea es extensa e idéntica al manual de usuario: la puedes encontrar en el siguiente link:


$ man parallel

 

Ejemplo: Lectura de argumentos en línea de comandos

GNU paralelo puede tomar los argumentos de la línea de comandos en lugar de stdin (entrada estándar). Para comprimir todos los archivos HTML en la ejecución actual dir using gzip run:

parallel gzip ::: *.html

To convert *.wav to *.mp3 using LAME running one process per CPU core run:

parallel lame {} -o {.}.mp3 ::: *.wav

 

GNU parallel can work similar to xargs -n1.

To compress all html files using gzip run:

find . -name '*.html' | parallel gzip

If the file names may contain a newline use -0. Substitute FOO BAR with FUBAR in all files in this dir and subdirs:

find . -type f -print0 | parallel -q0 perl -i -pe 's/FOO BAR/FUBAR/g'

Note -q is needed because of the space in 'FOO BAR'.

 

Ventajas

v  Rápida descompresión de ficheros

Tareas más intensivas en el uso del procesador como:

v  El procesamiento de imágenes, vídeos, o la compilación

v  Aprovechando del número de procesadores disponibles.

 

jueves, 18 de octubre de 2012

Introduccion al Paralelismo



LA COMPUTACIÓN PARALELA

Casi todo cálculo realizado durante los primeros cuarenta años de la historia de las computadoras podrían llamarse secuencial. Una de las características del cálculo secuencial es que emplea un único procesador para resolver algún problema.
Para medir el rendimiento del acceso a memoria se usa la unidad "flops", que es igual al tiempo en el que una máquina realiza una sola operación con puntos decimales.

Paralelismo en la vida real

El mundo de la informática hasta hace poco estaba dominado por el modo secuencial
de pensar. De hecho, el procesamiento secuencial ha sido muy exitoso y tiene
establecido altos estándares que el procesamiento en paralelo tendrá que probar difícil y de igualar.

El paralelismo está definido en la práctica del empleo de un cierto número de procesos cooperativos, comunicándose a través de ellos para resolver problemas extensos más fácilmente.

¿Quién necesita computadoras paralelas?

La mayoría de las personas  consideran que las computadoras ya son extremadamente potentes y rápidas. Si utilizar una computadora personal para escribir cartas, navegar por Internet, equilibrando su chequera y jugar al ajedrez, entonces usted probablemente no necesita más potencia de cálculo.

Hay  aplicaciones científicas que sin duda podrían necesitar  utilizar mucha más potencia de cálculo entre ellas:

v  Gráficos.
v  Simulación.
v  Procesamiento de Imágenes.
v  Inteligencia artificial.
v  Búsqueda en bases de datos extensas.

 

 

miércoles, 17 de octubre de 2012

ley de Amdahl



La ley de Amdahl es un modelo matemático que describe la relación entre la aceleración esperada de la implementación paralela de un algoritmo y la implementación serial del mismo algoritmo

Según demuestra matemáticamente, llegados a un punto el rendimiento de un sistema no está relacionado con el número de procesadores instalados, sino con la eficiencia de los algoritmos empleados. 

Todo programa consta de:

   Una o más porciones que no se pueden paralelizar
   Una o más porciones paralelizables

La fórmula original de la ley de Amdahl es la siguiente:



La Ley  de Amdahl se puede interpretar de manera más técnica, pero en términos simples, significa que es elalgoritmo  el que decide la mejora de velocidad, no el número de procesadores. Finalmente se llega a un momento que no se puede paralelizar más el algoritmo.

jueves, 11 de octubre de 2012

Unidad 3 Paralelismo

Paralelismo
El paralelismo se basa en la informática, es una función que realiza el procesador para ejecutar varias tareas al mismo tiempo. Es decir, puede realizar varios cálculos simultáneamente, basado en el principio de dividir los problemas grandes para obtener varios problemas pequeños, que son posteriormente solucionados en el paralelo.
Aplicaciones
El empleo de la computación paralela se convierte cada día en mas grandes y rápida, muchos problemas considerados anteriormente muy largos y costosos se han podido solucionar. El paralelismo se ha utilizado para muchas temáticas diferentes, desde bioinformática para hacer plegamientos de proteínas, hasta economía para hacer simulaciones en matemáticas financieras.
 
Aplicaciones comerciales. Las aplicaciones para sistemas en paralelo se están expandiendo al ganar impulso el mercado de aplicaciones comerciales estratégicas y entrar en sus fases iniciales el mercado de servidores video.

- Proceso de rendimiento global. Tanto los usuarios técnicos como los comerciales están evaluando los sistemas en paralelo como motores de rendimiento global o throughput.

- Escalamiento para gestión de capacidad. En el mercado comercial, los usuarios están explorando el paralelismo como una forma de ofrecer una gestión de la capacidad optimizada y de bajo riesgo.

- Impulso del software. Los vendedores de software están comenzando a mostrar un mayor interés en desarrollar aplicaciones paralelas como consecuencia de que cierto número de vendedores de hardware importantes están suministrando productos de proceso en paralelo o han anunciado estrategias para penetrar en este mercado.

Tipos de paralelismo Informática
1.       Nivel bit
Se basa en el tamaño de la palabra que es capaz de manejar el procesador:
8 bits
16 bits
32 bits
64 bits .....
Mientras más grande el tamaño de la palabra menos instrucciones ejecuta el procesador para realizar una operación determinada.
2. Nivel instrucción
Mecanismos de la arquitectura son utilizados entonces para ejecutar este tipo de paralelismo:

*      Pipelining
*      Superscalar
*      Ejecución desordenada
*      Ejecución especulativa
*      Renombramiento de registros
*      Predicción de precedencia de memoria
*      Predicción de ramificaciones del flujo

3. Nivel de Datos
Este tipo de paralelismo se enfoca en la distribución de los datos entre varios procesadores.
Se conoce también como paralelismo a nivel de lazos (loop-level paralelism).

4. Nivel tarea
Ø  En este caso un programa paralelo que ejecuta cálculos distintos sobre el mismo conjunto de datos o sobre datos diferentes.
Ø  El paralelismo funcional generalmente no escala con el tamaño del problema.
Ø  El paralelismo o procesamiento paralelo ha sido empleado durante muchos años, sobre todo para la computación de alto rendimiento. Teniendo en cuenta las generaciones de procesadores y sus características.
Obtener distintos resultados a partir de un mismo conjunto de datos, por ejemplo:

ü  Para un matriz hallar
ü  El determinante
ü  La traspuesta
ü  La inversa
ü   
Desventajas
·         Requieren de un gran número de ciclos de procesamiento o acceso a una gran cantidad de datos.
·         Encontrar un hardware y un software que permitan brindar estas utilidades comúnmente proporciona inconvenientes de costos, seguridad y disponibilidad.
Ventajas
Ø  Brinda a las empresas, instituciones y usuarios en general el beneficio de la velocidad
Ø  Ventajas competitiva, parvee una mejora de los tiempos para la producción de nuevos productos y servicios.
Ø  Colaboración y flexibilidad operacional
Calcificación de los sistemas paralelos  en los sistemas informáticos
*      SISD es un término que se refiere a una arquitectura en la que un sólo procesador, un uniprocesador, ejecuta un sólo flujo de instrucciones, para operar sobre datos almacenados en una única memoria.

*      SIMD: es una técnica empleada para conseguir paralelismo a nivel de datos.
*      MISD: es un tipo de arquitectura de computación paralela donde muchas unidades funcionales realizan diferentes operaciones en los mismos datos. Las arquitecturas segmentadas pertenecen a este tipo, aunque un purista podría decir que los datos son diferentes después de ser procesados por cada etapa en el pipeline.
*      MIMD: es una técnica empleada para lograr paralelismo . Las máquinas que usan MIMD tienen un número de procesadores que funcionan asíncronos e independientemente. En cualquier momento, cualquier procesador puede ejecutar diferentes instrucciones sobre distintos datos.
*      FLUJO DE CONTROL: Las instrucciones se van ejecutando según el orden en el que se encuentran en memoria.
*      FLUJO DE DATOS: el flujo de ejecución es conducido por los datos; una instrucción será ejecutada cuando los operandos estén disponibles.
*      REDUCCION: la ejecución se realiza por demanda, una instrucción será ejecutada cuando otra necesite sus resultados. Son una clase de las de flujo de datos.