Blog

Parallel Virtual Machine, Maquina Virtual Paralela

24.10.2012 17:23

 

PVM

Consiste en un software y un conjunto de librerías, que permiten establecer una 
colección de uno o mas 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. Puede establecerse en 
cualquier esquema de red heterogénea, sobretodo en el ambiente de Internet.
 
Brinda rutinas en lenguajes C y en Fortran para procesos como paso de mensajes 
asincrónicamente y para el control de procesos. Además de ofrecer un paralelismo 
escalable
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.
 

VENTAJAS

  • Es una de las librerías de paso de mensajes mas fáciles de usar.
  • Flexible: Control arbitrario de dependencia de estructuras. La 
  • aplicación decide:
  • Donde y cuando ejecutar o terminar las tareas. 
  • Flexible: Control arbitrario de dependencia de estructuras. La 
  • Puede incorporar cualquier ordenador al esquema de la maquina virtual

DESVENTAJAS

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

CONFIGURACION

 

Para explicar este punto nos vamos a vasar en los sistemas operativos UNIX.
  • Cada ordenador debe de estar ejecutando el demonio pvmd
  • PVM requiere de cierta configuración para cada usuario. Es necesario crear un archivo .rhosts en el directorio HOME de cada usuario que quiera ejecutar programas bajo PVM. 
  • El archivo .rhosts debe contener una línea por cada ordenador que va formar parte de la maquina virtual. Además debe incluir el nombre de usuario que se utilizara en cada una de ellas.
  • se debe crear el directorio pvm3/bin/LINUX en el directorio HOME y colocar ahí los programas.

 

 
  • 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 mas interesantes son: add/delete hostname: Añade/Quita el ordenador con nombre hostname a la maquina virtual.
  • q conf: Para ver la configuracion actual.
  • q ps a: Para ver los procesos en ejecucion en la maquina virtual.
  • q quit: Para salir de la consola pero dejar la maquina virtual activa.
  • q halt: Para detener la maquina virtual y salir de la consola.  

 

 

 

Ley de Moore Tri-Gate

23.10.2012 17:10

Ley de Moore:

Ley de Moore: El número de transistores que pueden integrarse en un 

dispositivo con un coste determinado se dobla cada 18 meses
 
esto favorece mucho al paralelismo ya que entre mas circuitos tengo un componente mas acciones se pueden llevar a cabo al mismo tiempo!!
 

Tri-Gate

Tri-Gate es 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.
 
Los transistores tridimensionales Tri-Gate en 22 nanómetros ofrecen un incremento del rendimiento de hasta un 37% en voltajes bajos respecto a los transistores de 32 nm que Intel produce en la actualidad. Este increíble aumento de las prestaciones facilita su uso en pequeños dispositivos móviles, ya que emplean menos energía al cambiar entre sus estados
 
este nuevo transistor favorece mucho al paralelismo ya que cuando este se lleva a cabo los circuitos trabajan al doble consumiendo mayor energia, con este nuevo transistor tendran menor desgaste ya que utiliza menos energia en su funcionamiento que sus transistores antesesores!!
 
 
 

GNU Parallel

22.10.2012 16:59

una herramienta para el intérprete de comandos que permite la ejecución concurrente de tareas, tanto local como remotamente.

 

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. Al día de hoy es la 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.

    $ ./configure

    $ make

     $ sudo make install     

 

VENTAJAS

 

  • facilita la tarea de procesar múltiples archivos simultáneamente
  • evita que se mezclen tareas entre si.
  • Al distribuir las tareas entre otras máquinas de la red, la opción --trc simplifica el proceso de envío

EJEMPLOS

VIDEO 1

VIDEO 2

 

¿Por qué la computación paralela?

La única esperanza para computadoras más rápidas casi todo cálculo realizado durante los primeros cuarenta años de la historia de la computadoras podrían llamarse secuencial. Una de las características de secuencial cálculo es que emplea un único procesador para resolver algún problema.

La unidad flop es una medida ampliamente utilizada de rendimiento de la memoria de acceso. Es igual a la velocidad a la que una máquina puede realizar flotante de precisión simple operaciones de punto, es decir, el número de este tipo de operaciones el equipo puede realizar en una unidad de tiempo - segundos en nuestro caso.

 

Paralelismoen la vida real

El mundode la informáticahasta hace pocoestaba dominada por elmodo secuencial
de pensar.De hecho, el procesamiento secuencialha sido muy exitosoy tiene
establecido altos estándares queel procesamiento en paralelotendrá queprobardifícil de igualar.

 

Un ejemplo más interesante

El trucode la canalizaciónque acabamos de mencionarprobablemente parecedemasiadoobvio yunapuede pensarque podríamosadaptarfácilmentelas máquinassecuencialesenunacadena de montajemodapara simularcanalización.De hecho, los primeros intentos para la construcciónparalelaordenadoresutilizanexactamenteestaidea, produciendo la llamadasistólicao linealmatrices.

Perola idea tienetambiénaplicacióndentro dela arquitectura del procesadorsecuencial.Considere la posibilidad deun"secuencial"procesadorde procesamiento deinstrucciones de códigode montaje. Típicamente, cada instrucciónse divideencinco piezasy se ejecutanenunductode la moda.De hecho,hoy en díacadaprocesador secuencialesfabricadoaprovechándosede paralelismo en laforma de instruccionespipelining.

 

Paralelosolucionesvssecuenciales -La mágicacaja

Probablemente elprimer enfoquepuede empezarpara diseñar unalgoritmoparalelo
es modificar yparalelizarununasecuenciaexistente.Seríabonito si
alguienhabía escrito uns2p.cprograma que tomacomo entrada unprogramasecuencial
y produceun programa equivalenteparalelo quefunciona mucho más rápido
y exhibeun buenequilibrio de carga. Después de todo,esto no es muy
difícil dehacer por elproblema de inicializaciónque vimosantes:no hay másyconvertirlo enun código equivalenteen paraleloque dividelasoperaciones
realizado por elnúmero de procesadores disponibles. Esta soluciónsimple,de
por supuesto, requierequeno hay dependenciasde datosentreoperationsassigned
a procesadores diferentes.

Para produciralgoritmossignificativamente más rápidoparalelas.Al mismo tiempo,
aúnmenos los quetienen modificacionesparalelosobvioso simples.Por otra parte,
problemas que ocurrena tenersolucionessimplesnonecesariamentesecuenciales
tiene una soluciónprácticaparalela, a veces no tienen unparaleloeficiente
solucióna todos.

 

Las redesde interconexión

La computación paralelallegóa la edaddemediados de los ochenta, cuando los fabricantes de chips
fueron capaces de producirgrandes cantidades dechips de procesadoreconómicamente. Por lo tanto,
de repente,tener un montón defichasque contienenlos procesadoresjunto conpequeño local
memorias (los elementos de procesamiento dellamadaso PES)no fue un problema.
Nuevos problemassurgieron, sin embargo:
1. ¿cómoconectartodosestos procesadores paracrearuna máquina rápidade
cooperandoelementosde procesamiento?
2. ¿Cómo se programauna máquina?
Los investigadoresy fabricantes, en los últimos diez años se havenido
convarios diseños deredes de interconexiónpara hacercomunicanlas empresas públicas.

 

Comerciales máquinas paralelas y simuladores

La última década vio un gran número de nuevas máquinas paralelas de mayor o menor éxito, capacidades, potencia de cálculo y las etiquetas de precios. Existe un informe en curso enumerando el máximo rendimiento de las 500 supercomputadoras en el mundo que se actualiza con regularidad. El funcionamiento máximo es el máximo rendimiento teórico de equipo. (También significa que el rendimiento mínimo que el fabricante
asegura que nunca se alcanzará.)

 

¿Quién necesitacomputadoras paralelas?

En el comienzo deeste capítulo,señaló que elapetito humano por
una mayorpotencia de cálculono termina nunca.Esto puede parecerque necesitajustificación;la mayoría dela gente considera quelas computadorasya extremadamentepotente yrápido.Siutilizar un ordenador personalpara escribir cartas, navegar por Internet, equilibrando su chequeray jugando al ajedrez, entonces usted probablemente no necesitamáspotencia de cálculo(a menos queusted es unjugador de ajedrezmuybueno).

Por la otramano, hay varias aplicaciones científicasque sin dudapodría utilizarmuchomáspotencia de cálculo.Entre ellos:
Gráficos: Representación de volumen,la realidadvirtual,el trazado de rayos.

Simulación:prediccióndel tiempo, la verificación Chip,la exploración petrolera.

Procesamiento de imágenes: Mejora de la imagen, la extracción de características.

InteligenciaArtificial:reconocimientode imagen, reproducción de juegos (ajedrez, GO, etc.)
 

ParaleloI /O -El próximo desafío

A pesar de que el rendimiento de procesamiento de los ordenadores han aumentado
considerablemente en los últimos años, de entrada / salida (I / O) dispositivos no se han mantenido con esta tendencia. Mientras que la velocidad del procesador recibe aproximadamente ocho veces más rápido cada diez años, el acceso a la memoria principal y el disco disminución del tiempo de ciclo por sólo un tercio en el mismo período de tiempo. Como te das cuenta, esta se ensancha la brecha entre E / S y los tiempos de procesamiento.
Por lo tanto, nuestra capacidad de utilizar ordenador muy rápido eficiente, depende de nuestra
capacidad para alimentar con datos suficientemente rápido.

 

 

PARALELISMO

11.10.2012 17:17

 

Paralelismo

El paralelismo 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 paralelo

 

Aplicaciones

El empleo de la computación paralela se convierte cada da en mas grande y rápida muchos problemas considerados anteriormente muy largos y costosos se han podido solucionar. El paralelismo se ha utilizado para muchas tematicas diferentes, desde bioinformatica para hacer plegamiento de proteínas hasta economía para hacer simulaciones en matematica financiera

 

Tipos de paralelismo informática

Ø  Nivel de bit

Ø  Nivel de instrucción

Ø  Nivel de datos

Ø  Nivel de tarea

Nivel de bit

Una operación bit a opera sobre números binarios a nivel de sus bits individuales. Es una acción primitiva rápida, soportada directamente por los procesadores. En procesadores simples de bajo costo, las operaciones de bit a bit, junto con los de adición y sustracción, son típicamente sustancialmente más rápidas que la multiplicación y la división, mientras que en los modernos procesadores de alto rendimiento usualmente las operaciones se realizan a la misma velocidad

Nivel de instrucción

Este mecanismo consiste en romper el flujo secuencial de instrucciones para simultanear la ejecución de varias en el mismo procesador. Existen diferentes estrategias para lograrlo.

Segmentación

Las instrucciones se dividen en etapas de igual duración y que utilizan una unidad funcional diferente cada una.

 

Superescalaridad

Consiste en la replicación de unidades funcionales de manera que se puedan ejecutar varias instrucciones a la vez en el mismo chip. Es compatible con la segmentación.

Supersegmentación

Es aquél que presenta varios niveles de segmentación. Así algunas de las etapas que mencionamos para los procesadores segmentados, es dividida a su vez en dos o más etapas de manera que se permite que haya dos instrucciones a la vez dentro de la misma etapa y unidad funcional sin tener que replicar esta.

Nivel de datos

es un paradigma de la programación concurrente que consiste en subdividir el conjunto de datos de entrada a un programa, de manera que a cada procesador le corresponda un subconjunto de esos datos. Cada procesador efectuará la misma secuencia de operaciones que los otros procesadores sobre su subconjunto de datos asignado

Nivel de tarea

es un paradigma de la programación concurrente que consiste en asignar distintas tareas a cada uno de los procesadores de un sistema de cómputo. En consecuencia, cada procesador efectuará su propia secuencia de operaciones.

En su modo más general, el paralelismo de tareas se representa mediante un grafo de tareas, el cual es subdividido en subgrafos que son luego asignados a diferentes procesadores

El paralelismo también se utiliza en los simuladores aéreos que utilizan en las escuelas de aviación.

 

Desventajas

Ø  Requieren de una gran numero 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 en beneficios de la velocidad

Ø  Ventaja competitiva, provee una mejora de los tiempo para lo producción de nuevos productos y servicios

Ø  Colaboración y flexibilidad operacional

Clasificación de los sistemas paralelos en los sistemas informáticos

Ø  SISD

Ø  SIMD

Ø  MISD

Ø  MIMD

Ø  FLUJO DE CONTROL

Ø  FLUJO DE DATOS

SISD

SISD (siglas en inglés de Single Instruction, Single Data, en español: "una instrucción, un dato") 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

SIMD (siglas en inglés de Single Instruction, MultipleData, en español: Una Instrucción, Múltiples Datos) es una técnica empleada para conseguir paralelismo a nivel de datos.

Los repertorios SIMD consisten en instrucciones que aplican una misma operación sobre un conjunto más o menos grande de datos. Es una organización que influye muchas unidades de procesamiento bajo la supervisión de una unidad de control común.

MISD

MISD (siglas en inglés de MultipleInstruction, Single Data, en español: Múltiples Instrucciones, Un Dato) es un tipo de arquitectura de computación paralela donde muchas unidades funcionales realizan diferentes operaciones en los mismos datos

MIMD

MIMD (del inglés MultipleInstruction, Múltiple Data o Múltiples instrucciones, Múltiples datos) 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.

 

 

 

 

LLAMADAS A PROCEDIMIENTOS

20.09.2012 13:58

 

Permiten a programas o sistemas invocar procedimientos localizados en otras computadoras un proceso x localizado en una maquina “A” pueden llamar a un procedimiento localizado en una maquina llamada “B”.la transmisión de la información puede llevarse entre procesos por medio de parámetros (valor o referencia investigar).

Variable por Referencia

Los tipos creados por referencia almacenan la dirección de memoria en la que se encuentra un dato determinado de manera que usaremos esa dirección de memoria para acceder de forma indirecta al dato.

Variable por Valor

Los tipos por valor almacenan datos a los que se puede acceder de forma directa

 

 

Existen varios tipos de RPC los siguientes son los más comunes:

ONC desarrollado por sunmacrosystem que trabaja en sistemas Linux

DCE: trabaja en OSF

D-COM: utilizado en Windows

ONC RPC

Abreviación del inglés Open Network Computing Remote Procedure Call, es un protocolo de llamada a procedimiento remoto (RPC) desarrollado por el grupo ONC de Sun Microsystems como parte del proyecto de su sistema de archivos de Red NFS, algunas veces se lo denomina Sun ONC o Sun RPC. Trabaja sobre los protocolos TCPy UDP. La codificación de datos se realiza utilizando el protocolo XDR (presentación de datos).

DCE

Remote Procedure es un sistema de llamada a procedimiento remoto del conjunto de software OSF DCE. "Distributed Computing Environment, es el sistema de llamada a procedimiento remoto desarrollado para el entorno de la informática distribuida (DCE). Este sistema permite a los programadores escribir software distribuido como si fuera todos los que trabajan en el mismo equipo, sin tener que preocuparse por el código de red subyacente.

D-COM

Distributed Component Object Model (DCOM), en español Modelo de Objetos de Componentes Distribuidos, es una tecnología propietaria de Microsoft para desarrollar componentes software distribuidos sobre varios ordenadores y que se comunican entre sí. Extiende el modelo COM de Microsoft y proporciona el sustrato de comunicación entre la infraestructura del servidor de aplicaciones COM+ de Microsoft. Ha sido abandonada en favor del framework .NET.

PROBLEMAS AL IMPLEMENTAR SISTEMAS “RPC”

1.       Homogeneidad. Los sistemas se enfrentan a cambios en las arquitecturas o versiones de los sistemas operativos

2.       Trabajan en el modelo cliente servidor por lo que la caída de cualquiera de los dos provocara perdida de los datos

3.       El mensaje de petición del cliente se pierde al establecer una comunicación

4.       El mensaje de respuesta del servidor se pierde al responder a la petición 

..

14.09.2012 17:49

 

Diferencia entre sistema operativo distribuido, un sistema operativo multiprocesador y un sistema operativo de red.

La diferencia fundamental de un sistema distribuido  con los sistemas en red es que la ubicación del recurso es transparente a las aplicaciones y usuarios, por lo que, desde este punto de vista, no hay diferencia con un sistema de tiempo compartido.

 

 

Diferencia entre un sistema operativo distribuido y un sistema distribuido

Existe una diferencia vital entre los sistemas operativos distribuidos y los sistemas distribuidos. Podríamos llamar a un Sistema Distribuido una capacidad del Sistema operativo Distribuido, es decir: Un sistema distribuido es la relación que existe entre una computadora independiente y un servidor de archivos o dispositivos compartidos. Cada computadora ejecuta sus programas en su memoria propia haciendo uso de su único

.

14.09.2012 17:47

 

Sistemas Distribuidos:

• Pueden ser considerados redes convencionales de computadores independientes.

• Los mismos tienen múltiples imágenes del sistema, a partir de que cada nodo tiene su propio sistema operativo,

 

 

Cluster

• Una colección de estaciones de trabajo o PCs que están conectadas mediante alguna tecnología de red.

• Para fines de computación paralela estas PCs o estaciones de trabajo estarán conectadas mediante una red de muy alta velocidad.

• Un cluster trabaja como una colección integrada de recursos y pueden tener una imagen simple del sistema abarcando todos sus nodos.

 

 

Grid

• Un gran conjunto de Sitios que están conectadas mediante una red global de alta velocidad

(10 Gb/s) que tienen una alta capacidad de procesamiento (entre 1000 a 10000 GFLOPS)

y un gran capacidad de almacenamiento (entre 1000 a 10000 TB)

• Los Sitios interconectados utilizan Procesamiento Distribuido y P2P (Peer to Peer Architecture) con desarrollos de SW novedosos adicionales con interfaces estándar abiertas.

• Utiliza nuevas técnicas de Autoadministración, auto escalabilidad y auto reparación 

Clasificación de los sistemas operativos

14.09.2012 17:38

 

Respecto al modo de trabajo

Se pueden clasificar los sistema operativos, partiendo de este punto de vista, en on line (o interactivos) y off line (o batch o por lotes). 

 

 

Respecto al número de usuarios

Si se tiene en cuenta el número de usuarios se puede hablar de sistemas monousuario y multiusuario (o multiacceso). En los primeros se puede acceder al ordenador mediante un único terminal, frente a los varios terminales de acceso simultáneo que permiten los segundos.

 

Respecto al propósito

Atendiendo al uso que quieran dar los usuarios al ordenador, los sistema operativos se pueden dividir en sistemas de propósito específico y sistemas de propósito general.

Un ejemplo de sistema de propósito específico es un sistema de tiempo real.

 

Los sistemas de propósito general se caracterizan por tener un gran número de usuarios trabajando sobre un amplio abanico de aplicaciones

 

Al existir varios procesadores

Los ordenadores con más de una CPU se clasifican en multiprocesadores y en sistemas distribuidos (o multicomputadores). En un multiprocesador los procesadores comparten memoria y reloj (son síncronos). 

 

 

Ejemplos de Sistemas Distribuidos

 

  • Solaris
  • Mach
  • Chorus
  • Amoeba

Clasificaciones del Hardware de los SOD

 

MPP

• Es un gran sistema de procesamiento paralelo con una  arquitectura que no comparte nada.

• Consiste en cientos de elementos de procesamiento los cuales están interconectados por  un Switch o red de alta velocidad.

• Cada nodo puede tener una variedad de componentes de hardware, pero generalmente   consisten de una memoria central y de uno o varios procesadores.

 

 

SMP

• Poseen desde 2 a 64 procesadores y pueden ser considerados como una arquitectura que comparte todo.

• En estos sistemas todos los procesadores comparten todos los recursos globales  disponibles (bus del sistema, memoria, sistemas de I/O, etc.);

• Una copia sencilla del Sistema Operativo corre en estos sistemas.

 

 

CC-NUMA

• Es un sistema multiprocesador escalable.

• Como en SMP, cada procesador en un sistema CC-NUMA tiene una vista global de toda la memoria.

• Este tipo de sistema consigue su nombre (NUMA) a partir de los tiempos no uniformes que le toma para acceder ya sea a la parte memoria más cercana, así como a la más remota.

CONCEPTOS

05.09.2012 16:35

 

Sistema operativo distribuido

Es un sistema en el cual componentes conectados comparten sus recursos trabajando en coordinación como si fuera uno solo

 

Sistema de archivos distribuidos

Es un sistema que permite compartir tanto archivos como recursos dentro de los host de una red

 

Sistema basado en objetos distribuidos

Permite realizar múltiples y simultaneas escrituras teniendo una gran coordinación entre cada uno de ellas

 

Sistema distribuido basado en web

Permite guardar todas las tareas en servidores dispersos geográficamente para brindar servicios a los clientes, siendo esto transparente para ellos

SISTEMAS OPERATIVOS DISTRIBUIDOS

04.09.2012 15:18

 

Introducción

Su misión principal consiste en facilitar el acceso y la gestión de los recursos distribuidos en la red. Los usuarios pueden acceder a recursos remotos de la misma manera en que lo hacen para los recursos locales.

 

Sistema Distribuido: colección de componentes hardware y/o software situados en ordenadores autónomos unidos por una red 

El Software de un Sistema Distribuido permite a los ordenadores: 

  • Coordinar sus actividades 
  • Compartir los recursos del sistema  

 

Los sistemas operativos distribuidos están basados en las ideas básicas:

  • Transparencia
  • Eficiencia
  • Flexibilidad
  • Escalabilidad

 

Transparencia

El concepto de transparencia de un Sistema operativo distribuido va ligado a la idea de que todo el sistema funcione de forma similar en todos los puntos de la red.

 

Eficiencia

La idea base de los sistemas operativos distribuido es la de obtener sistemas mucho mas rápidos que los utilizados de procesador único.

 

Flexibilidad

La Flexibilidad dentro de sistema operativo distribuido, describe su capacidad para soportar cambios, actualizaciones y mejoras que le permitan irse desarrollando al mismo ritmo de la evolución tecnológica

 

Escalabilidad

Un sistema operativo distribuido debería funcionar tanto para una docena de computadoras como para mil en una sola red.

 

Ventajas:

  • Economía
  • Velocidad
  • Confiabilidad
  • Crecimiento por incrementos.

Desventajas:

  • Existe poco Software para este tipo de sistemas 
  • Saturación de la red
  • Poca seguridad

Encuesta

Calificacion?

10? (20)
48%

9? (12)
29%

8? (10)
24%

Votos totales: 42