miércoles, 24 de octubre de 2012

PVM (Parallel Virtual Machine)


PVM (Parallel Virtual Machine, Máquina Virtual Paralela)

PVM significa “Parallel Virtual Machine”, es relativamente nuevo ya que sus inicios se remontan al verano de 1989 en el Oak Ridge National Laboratory.

PVM 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 (PVM: Parallel Virtual Machine - Máquina virtual en paralelo).

PVM opera sobre diferentes plataformas de UNIX y también de Windows 9x, la cantidad de plataformas en las que puede correr el ambiente de PVM es muy variada y abundante. PVM puede establecerse en cualquier esquema de red heterogénea, sobre todo en el ambiente de Internet, como se puede apreciar en la gráfica anterior.

PVM brinda rutinas en lenguajes C y en Fortran para procesos como paso de mensajes asíncronamente y para control de procesos; además de ofrecer un paralelismo escalable, entre otras muchas ventajas que ofrece.

A pesar de que PVM no es un estándar, es sumamente popular para realizar y desarrollar aplicaciones científicas complejas que requieren un esquema de programación en paralelo, dada su compatibilidad en sistemas operativos es sumamente portable y fácil de instalar, además de que PVM consiste en un esquema pequeño de código de computadora.



Ventajas
  •  Portabilidad.- Es probablemente la librería de paso de mensajes más portable que existe.


Estaciones de trabajo.
Computadoras en paralelo.

Sun3
SPARCstation
MicroVax
DECstation
DEC Alpha
IBM RS/6000
NEXT
Silicon Graphics IRIS 
HP 9000
DG Aviion
386/486 Linux boxes
IBM RT
386/486 BSD386 boxes    

Intel Paragon
Thinking Machines CM5
Sequent Symmetry
Intel iPSC/860
Thinking Machines CM2
Alliant FX/8
Encore 8800
MIPS 4680
Cray YMP and C90
Fujitsu VP2000
Convex
IBM 3090
KSR-1
IBM-SP1


  • Paralelismo Escalable.- PVM permite definir cuantos procesadores puede utilizar una aplicación, en caso de que falten procesadores, PVM realiza el trabajo en menos procesadores, recurriendo a técnicas de procesamiento concurrente.
  • Tolerancia A Fallas A Partir De Añadir O Borrar Procesos Anfitriones (Host).
  • Fácil De Instalar Y De Usar.
  • Popular.- Es una de las librerias de paso de mensajes más faciles y óptimas.
  • Flexible.

    • Esquema fácil de modificar y de configurar/definir por la máquina virtual.
    • Control arbitrario de dependencia de estructuras. La aplicación decide:

      • Donde y cuando producir o terminar las tareas.
      • Cuales máquinas se agregan o se remueven desde la máquina virtual en paralelo.
      • Cuales tareas se pueden comunicar y/o sincronizar con otras.

  • Puede incorporar casi cualquier computadora que funcione bajo UNIX, (Obviamente con cuenta de acceso), para incorporarla fácilmente al esquema de la máquina virtual.


Desventajas
·        

  • Desempeño.- Como PVM es un esquema heterogéneo de computadoras, dependiendo de la capacidad de procesamiento de las computadoras vinculadas al esquema de la máquina virtual, su desarrollo puede verse mermado o incrementado, según sea el poder de cómputo de las computadoras anfitrionas.  
  • Cuenta con un esquema no estandarizado.- PVM no es un estándar (como lo es MPI).
  •  Es algo deficiente en cuanto al paso de mensajes se refiere.


Configuración

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 máquina virtual. Además debe incluir el nombre de  usuario que se utilizara en cada una de ellas.

                        Ejemplo:
                                            maquina1 username1
                                            maquina2 username2
                                            maquina3 username3
                                            maquina4 username4

·         Además, 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 más interesantes son: add/delete hostname: Añade/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. 



                Las tres librerías de PVM son las siguientes:


libpvm3.a.-
Esta librería brinda una gran cantidad de rutinas escritas en lenguaje C. Esta rutina siempre es requerida.
libfpvm3.a.-
Librería adicional que se requiere en caso de que la aplicación escrita en PVM utiliza código de Fortran.
libgpvm.a.-
Librería requerida en caso de usar grupos dinámicos.

Las citadas libreras contienen subrutinas sencillas que son incluidas en el código de aplicación escrito en PVM. Proveen las herramientas suficientes como para realizar acciones tales como el iniciado y borrado de procesos, el empaquetamiento, desempaqueta miento y recepción de mensajes, sincronización vía barrera (synchronize via barriers) y configuración dinámica de la máquina virtual.


Ejemplo


#include “pvm3.h”
main()
{
   int tid, msgtag, cc;
   char buf[100];
   printf("i'm t%x\n", pvm_mytid());
   cc = pvm_spawn(”slave", (char**)0, 0, "", 1, &tid);
   if (cc == 1) {
      msgtag = 1;
      pvm_recv(tid, msgtag);
      pvm_upkstr(buf);
      printf("from t%x: %s\n", tid, buf);
   } else
      printf("can't start hello_other\n");
   pvm_exit();
}





martes, 23 de octubre de 2012

Ley de moore y Tecnología TRI-GATE


LEY DE MOORE
 
En 1965, Gordon Moore (co-fundador en 1968 de la compañía Intel) afirmó que el número de 
transistores por centímetro cuadrado en un circuito integrado 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 afirmación y predijo que el ritmo bajaría, y que la densidad de  transistores se duplicaría aproximadamente cada 18 meses.
Esta progresión de crecimiento exponencial de la densidad  de transistores, o sea, el duplicar la capacidad de los  microprocesadores cada año y medio, es lo que se considera actualmente como la Ley de Moore. En abril de 2005 se  cumplieron 40 años de la ley de Moore y la industria de la  microelectrónica estima que seguirá siendo válida al menos 
otros 20 años. 

Para todos nosotros realmente es difícil imaginar la enorme cantidad de transistores que constituyen actualmente un  circuito integrado o un microprocesador de computadora. 


Paralelismo y la ley de Moore


El cálculo paralelo se ha hecho recientemente necesario para tomar la ventaja llena de las ganancias permitidas por la ley de Moore. Durante años, los fabricantes del procesador consecuentemente entregaron aumentos de precios del reloj y paralelismo del nivel de la instrucción, de modo que el código enhebrado del modo solo ejecutara más rápido en procesadores más nuevos sin la modificación. Ahora, para manejar la disipación de poder de la CPU, los fabricantes del procesador favorecen el diseño de chip multiprincipal, y el software se tiene que escribir en un multienhebrado o manera de multiproceso de tomar la ventaja llena del hardware.

TECNOLOGÍA TRI-GATE

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.




GNU Parallel



Instalar GNU Parallel en Linux

GNU Parallel es una de las últimas joyas del Proyecto GNU, 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.
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.

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:

man parallel



Modo de Utilización

Su modo de utilización, es poner a trabajar cada uno de los procesadores y/o núcleos con que cuenta el equipo para agilizar el tiempo de realización de cualquier tarea o proceso.


Ejemplo

Procesando los Archivos en Parallel

01 $ find . | parallel -v ‘echo $(ls -1 /proc/self/task); sleep 1s; echo {}’
02 echo $(ls -1 /proc/self/task); sleep 1s; echo .
03 10943
04 .
05 ...
06 $ find . | parallel -v -j +0 ‘echo $(ls -1 /proc/self/task); sleep 1s;
echo {}’
07 ?

14 sys     0m24.478s
Ventajas

Permite la ejecución concurrente de tareas, tanto local como remotamente
Parallel GNU está escrita para tener las mismas opciones que xargs.
Si escribes lazos con cáscara, se encuentra paralelo GNU puede ser capaz de remplazar la mayoría de los bucles y hacer que se ejecute más rápido mediante la ejecución de varios trabajos en paralelo.
GNU Parallel puede incluso sustituir los bucles anidados.
GNU paralelo hace que la salida de los comandos sea el mismo resultado que usted quisiera conseguir para esto se tenía que ejecutar los comandos de forma secuencial.
Es posible utilizar la salida de GNU paralelo como entrada para otros programas.

jueves, 18 de octubre de 2012

INTRODUCCIÓN DE PARALELISMO


Introducción al paralelismo

¿Por qué la computación paralela?

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 la computación secuencial  inicial es que emplea un único procesador para resolver algún problema.

El cálculo paralelo se define como la práctica de emplear un (usualmente grande) Número de procesadores cooperantes, la comunicación entre ellos para resolver los grandes problemas rápidamente. Rápidamente se ha convertido en un área importante

Durante los últimos cinco años, la computación paralela se ha vuelto tan amplia y fuerte que la mayoría de las investigaciones realizadas en los campos del diseño y análisis de algoritmos, lenguajes de programación, aplicaciones informáticas y arquitecturas informáticas están dentro de su contexto.

Nuevas máquinas en paralelo con nuevas arquitecturas se están construyendo cada día. Los ordenadores moderadamente paralelas generalmente se tratan de diferentes formas.

El número de procesadores en estas máquinas llega a 65.536 hoy en día, con algunos sueños de construir en un futuro próximo una máquina con 128.000 procesadores. Sin embargo, el alto costo de la construcción de este tipo de máquinas, combinado con la falta de los fondos disponibles que tradicionalmente provenía de los militares, aplazar planes.


Redes de interconexión

La computación paralela llegó a la edad de mediados de los ochenta, cuando los fabricantes de chips fueron capaces de producir grandes cantidades de chips de  procesador económicamente. Por lo tanto de repente, tener un montón de fichas que contienen los procesadores junto con pequeño local memorias (los elementos de procesamiento de llamadas o PES) no fue un problema.

Máquinas comerciales 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á.) De acuerdo con el informe publicado en Julio de 1993, la CM-5 computadoras con procesadores 1024 y 131 pico Gflops actuación fue la computadora más potente del mercado, su precio fue alrededor de $ 25 millones. 

¿Quién necesita computadoras paralelas?

La mayoría de la gente considera que las computadoras ya extremadamente potente y rápido. Si utilizar un ordenador personal para escribir cartas, navegar por Internet, equilibrando su chequera y jugando al ajedrez, entonces usted probablemente no necesita más potencia de cálculo (a menos que usted es un jugador de ajedrez muy bueno). Por el otro mano, hay varias aplicaciones científicas que sin duda podría utilizar mucho más potencia de cálculo. Entre ellos:
  • *      Gráficos: Representación de volumen, la realidad virtual, el trazado de rayos.

  • *      Simulación: predicción del tiempo, la verificación Chip, la exploración petrolera.

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

  • *    Inteligencia Artificial: reconocimiento de imagen, reproducción de juegos (ajedrez, etc).

  • *      Buscando base de datos grande: Programación de vuelos, la coincidencia de ADN (La proyecto del genoma humano).



Esta lista puede seguir y seguir, ya que cualquier área científica podría utilizar mejor y computadoras más rápidas. De hecho, los ordenadores se consideran los laboratorios del futuro. 

Paralelismos de E/S  -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 ordenadores muy rápidos eficiente, depende de nuestra capacidad para alimentar con datos suficientemente rápido. Este es el paralelo llamado  E/S  cuello de botella, la mala noticia se espera que empeore en el futuro, y una gran cantidad de investigación que se está haciendo hoy en esta dirección. La ley federal de alta Performance Computing y el programa de Comunicación (HPCC) convoca a la desarrollo de la computadora 3T, que tendrá
      1 Tflops potencia de cálculo,
      1 TByte memoria principal, y
      1 TByte / s de E / S de ancho de banda.

martes, 16 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

La ley de Amdahl se usa para averiguar la mejora máxima de un sistema cuando solo una parte de éste es mejorado.

Para esto se toma en cuenta la parte "secuencial'' del proceso, es decir, aquella que independientemente de cuántos elementos de procesamiento tenga, puede ser realizada por uno solo de ellos; y el resto del cálculo no podrá continuar hasta que se haya completado la parte secuencial.

La Ley de Amdahl propone normalizar el tiempo que toma realizar la operación en un solo procesador al valor de 1

jueves, 11 de octubre de 2012

Paralelismo


Paralelismo


El paralelismo en la informática, es una función que se realiza para ejecutar varias tareas al mismo tiempo.

Aplicaciones

El ejemplo de la computación paralela se convierte cada día 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 matemáticas diferentes, desde bioinformática para hacer plegamiento de proteínas hasta económicamente para hacer simulación en matemáticas.

Tipos de paralelismo en informática

·         Nivel de bits
·         Nivel de instrucción
·         Nivel de datos o nivel de proceso
·         Nivel de tareas
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.

Desventajas

·         Requiere de un gran número de ciclos de procesamientos o acceso a una gran cantidad de datos.
·         Encontrar un hardware y un software que permite brindar estas utilidades comúnmente proporciona inconvenientes de costos, seguridad y disponibilidad.

Ventajas

·         Brindar a las empresas, instituciones y usuarios en general el beneficio de la velocidad
·         Ventaja competitiva, provee una mejor de los tiempos para la producción de nuevos productos y servicios.
·         Colaboración y flexibilidad operacional.

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

SISD

Arquitectura de simple construcción sobre simple dato. Serie en datos e instrucciones, arquitectura von Neumann.

SIMD

Un solo flujo de instrucciones y múltiples en datos. Computadores matriciales. Una unidad de control que gobierna varias unidades aritmetico-logicas.

MISD

Varios flujos de instrucciones y uno solo de datos. Arquitectura no implementada, consecuencia teórica de la clasificación. Superestructura pipeline, varios conjuntos de unidad de control más unidad aritmético lógica realizan partes de una operación sobre un flujo de datos.

MIMD

Arquitectura multiprocesador con varios flujos tanto de instrucciones como de datos. Varios procesadores serie convencionales que manejan cada uno un flujo de instrucciones sobre un flujo de 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 operadnos estén disponibles.

Reducción

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.



Tipos de Paralelismo

Paralelismo de nivel de Bit

Es cuando se aumenta la el tamaño de la palabra en la computadora, hacer esto reduce el numero de instrucciones que son necesarias para ejecutar una instrucción en la cual sus operadores son mas grandes que su tamaño de palabra.


Paralelismo a nivel de instrucciones
Es cuando un grupo de instrucciones que compone un programa son ejecutadas paralelamente sin cambiar el resultado final del programa 


Paralelismo de Datos
Es cuando se distribuye los datos a través de diferentes nodos de cómputo para que los procesen en paralelo y las tareas que realizan son comunes y el resultado es uno solo.


Paralelismo de tareas
Cuando cálculos totalmente diferentes se realizan en los mismos o diferentes datos. 

jueves, 4 de octubre de 2012

Invetigación de RPC


Implementaciones más comunes de RPC


    RPC está desarrollado en C, pero algunas versiones permiten programar en otros lenguajes como Fortran. Las implementaciones más actuales trabajan sobre XML formando los XML-RPC.
Para la conexión entre un cliente y un servidor utilizando RPC se siguen dos pasos: localizar la máquina servidor, y localizar el proceso en esa máquina.
  •    Las implementaciones más evolucionadas de RPC incluye la de Sun ONC (Open Network Computing) y DCE (Distributed Computing Environmet) Soporta el modelo cliente-Servidor sobre el que se construyo un sistema de ficheros en red NFS.


Como se asegura las transmisiones basadas en RPC


La llamada de procedimiento remoto (RPC) segura protege los procedimientos remotos con un mecanismo de autenticación. El mecanismo de autenticación Diffie-Hellman autentica tanto el host como el usuario que realiza una solicitud para un servicio. El mecanismo de autenticación utiliza el cifrado Estándar de cifrado de datos (DES). Las aplicaciones que utilizan RPC segura incluyen NFS y los servicios de nombres, NIS y NIS+.

DIFFIE-HELLMAN
El algoritmo Diffie-Hellman fue el primer algoritmo de llave pública  inventado. Esto significa que sus autores también son los dueños de la idea. El algoritmo puede ser usado para la distribución de llaves, pero no para cifrar o descifrar mensajes. Su seguridad reside en la dificultad de calcular logaritmos discretos en un campo finito comparada con la facilidad de realizar exponenciaciones es en el mismo campo.

 

Como se aseguran las transmisiones basadas en RPC


1. Fallos en los procedimientos llamados
    La ejecución del proceso llamado se detiene por errores del
    hardware o del sistema operativo que lo ejecuta (ejemplo: caída del sistema)
    También por errores internos del propio procedimiento (divisiones
     por 0, índices de arrays fuera de rango, etc.)
2. Fallos en la comunicación
     Perdida de la conexión: la red deja de enviar paquetes (caída de la red, perdida de un    enlace, ...)
    Corrupcion del contenido de alguno de los mensajes enviados.
    Perdida de paquetes: algún mensaje  no llega a su destino.
    Recepcion fuera de orden: paquetes retrasados recibidos de forma desordenada
3. Otros fallos: bugs en el proceso llamado, ataques, etc.


En una base de datos para que se implementan los RPC


SQL Server admite el uso de servidor a servidor RPC, que permite utilizar una conexión a un servidor para llamar a un procedimiento en un servidor secundario. En este artículo se describe un método para utilizar RPC para llamar a cualquier procedimiento almacenado extendido personalizado en un servidor secundario sin cambiar el código de la aplicación.

La llamada a un procedimiento almacenado extendido puede producirse de dos maneras diferentes:
·         Ad-hoc Transact-SQL.
·         Mediante una llamada a un "contenedor" procedimiento almacenado.
En cualquier caso, puede redirigir la llamada a un servidor remoto mediante una llamada de SQL Server RPC sin realizar ningún cambio a la aplicación cliente.

Que vulnerabilidades presentan el uso  de los RPC


La vulnerabilidad podría permitir a un atacante ejecutar código arbitrario y tomar control total del sistema afectado. La configuración por defecto no permite que los usuarios sean atacados por medio de esta vulnerabilidad, aunque podría ser afectada en aplicaciones de terceros.
Vulnerabilidades XMLRPC en PHP
Otra vulnerabilidad bastante común en esta categoría incluye vulnerabilidades en el uso de XML-RPC
XML-RPC es un protocolo de llamada a procedimiento remoto que usa XML para codificar las llamadas y HTTP como mecanismo de transporte.
Es un protocolo muy simple ya que sólo define unos cuantos tipos de datos y comandos útiles, además de una descripción completa de corta extensión.
Un común desperfecto está en los distintas implementaciones de XML-RPC en PHP pasando entradas de datos del usuario sin filtrar por la función eval() en el servidor XML-RPC. Esto permite al atacante ejecutar código, en el sistema vulnerable. Cualquier usuario con habilidad de subir XML manualmente al servidor puede insertar código PHP que puede ser ejecutado por la aplicación Web vulnerable.