jueves, 10 de mayo de 2012

PVM

Máquina Virtual Paralela

En esta entrada hablare hacerca de PVM, su definición o comandos básicos, cabe aclarar que ya hubo compañeros que hicieron un cluster con este, pero no pusieron mucha información básica, así que aquí complementare eso.

PVM (Parallel Virtual Machine) es un paquete de software que permite a una colección heterogénea (distintos) de computadoras, con sistema operativo UNIX, que estén conectadas a través de una red, ser usadas como una sola máquina paralela.


La biblioteca PVM fue desarrollada por la Universidad de Tennessee, el Laboratorio Nacional Oak Ridge y la Universidad Emory.

Para inicializar y ejecutar PVM deben configurarse dos variables de ambiente. La primera PVM_ROOT indica el lugar donde esta instalado PVM. La otra variable PVM_ARCH indica la arquitectura del host desde donde se está invocando PVM y de esta manera seleccionar los archivos ejecutables más apropiados.
Para que estas variables sean cargadas automáticamente , generalmente son inicializadas por los administradores del sistema dentro de los archivos de configuración generales (para los PC la arquitectura es LINUX).

Los comandos que debe usar para inicializar las variables son:

$ export PVM_ROOTpath/pmv3
$ exprot PVM_ROOT linux

Debes agregar el ``path'' correcto, es decir, donde se encuentra instalado el PVM.
Otra condición para poder ejecutar PVM es que los nodos del cluster puedan ejecutar aplicaciones remotamente a los usuarios sin pedirles el password cada vez que quieran enviar a ejecutar un programa en cualquiera de los nodos. Para lograr esto se tienen dos alternativas. 

La primera alternativa depende del usuario y consiste en editar o crear el archivo .rhost y colocar allí los nodos a los cuales se les va a permitir el acceso, y la segunda, depende del administrador del sistema y consiste en permitir el acceso a los nodos a través del archivo /etc/hosts.equivdonde se coloca el nombre de dichos nodos. 

La primera alternativa solo habilita al usuario, mientras que la segunda habilita a todos los usuarios.

Por último el usuario debe crear en su cuenta el archivo .pvm_hosts quien contendrá el nombre de los nodos que el usuario desea utilizar como mienbros de su máquina virtual.

Puede comenzar a utilizar PVM, después del siguiente comando:

$ pvm

Los comandos u operaciones básicas de PVM son las siguientes:
add
seguido por uno a más nombres de hosts, añade estos hosts a la máquina virtual.
alias
define o lista los comandos alias.
conf
lista la configuración de la máquina virtual incluyendo hostname, tareas pvmd, ID, tipo de arquitectura y rata de velocidad relativa.
delete
seguido por uno o más nombres de hosts, elimina estos hosts de la máquina virtual, los prcesos PVM que estan corriendo en esas máquinas serán detenidos.
echo
muestra los argumentos pasados en la línea de comandos.
halt
mata todos los procesos PVM incluyendo la consola, y cierra PVM. Todos los demonios cesan su ejecución.
help
puede ser usado para obtener información acerca de cualquier comando.help puede ser seguido por un nombre de comando para que liste las opciones y banderas disponibles para este comando.
id
imprime en la consola los id de las tareas.
jobs
lista las tareas que estan corriendo.
kill
puede ser usado para terminar cua;quier proceso PVM
mstat
muestra el estatus de los hosts especificados.
ps -a
lista todos los procesos actualmente en la máquina virtual, sus localizaciones, sus ids, y sus ids parientes .
pstat
muestra el estatus de un único proceso PVM
quit
sale de la consola, dejando los demonios y los procesos PVM corriendo.
reset
mata todos los procesos PVM excepto la consola, y reinicializa todas las tablas internas del PVM y la cola de mensajes. Los demonios son dejados en estado de espera.
setenv
muestra o asigna variables de ambiente.
sig
seguido por una número de señal y TID, envia ;a señal a la tarea.
spawn
inicia una aplicación PVM. Esta incluye las siguientes opciones:
-count
número de tareas, por omisión es 1.
-host
crea un proceso sobre un host, pro omisión es cualquier host.
-ARCH
crea un nuevo proceso de hosts de tipo ARCH
-?
habilita la depuración.
-
redirecciona la salida de la tarea a la consola.
-file
redirecciona la salida de la tarea al archivo file
-file
redireciona la salida de la tarea al archivo file pero añadiendola al final del archivo
-
rastrea la tarea, mostrandolo en la consola.
-file
rastrea la tarea con salida en un archivo
trace
asigna o muestra el rastro de los eventos.
unalias
comandos alias no definidos.
version
imprime la versión de PVM que esta siendo usado
Bibliografías

http://www.csm.ornl.gov/pvm/
http://en.wikipedia.org/wiki/Parallel_Virtual_Machine
http://es.wikipedia.org/wiki/M%C3%A1quina_Virtual_Paralela
http://www.cecalc.ula.ve/documentacion/tutoriales/beowulf/node53.html
http://www.netlib.org/pvm3/

Benchmarks

Semana # 14

Comenzare con definiendo que es un Benchmark.


Son una técnica utilizada para medir el rendimiento de un sistema o algún componente del mismo, frecuentemente en comparación con el que se refiere específicamente a la acción de ejecutar un benchmark.




Son el resultado de la ejecución de un programa informático o un conjunto de programas en una máquina, con el objetivo de estimar el rendimiento de un elemento concreto, y poder comparar los resultados con máquinas similares.



Un benchmark podría ser realizado en cualquiera de sus componentes, ya sea CPU, RAM, tarjeta gráfica, etc. También puede ser dirigido específicamente a una función dentro de un componente, por ejemplo: la unidad de coma flotante de la CPU; o incluso a otros programas.




La tarea de ejecutar un benchmark originalmente se reducía a estimar el tiempo de proceso que lleva la ejecución de un programa (medida por lo general en miles o millones de operaciones por segundo).


Con el correr del tiempo, la mejora en los compiladores y la gran variedad de arquitecturas y situaciones existentes convirtieron a esta técnica en toda una especialidad.




Los benchmark tienen las siguientes funcionalidades:

  • Comprobar si las especificaciones de los componentes están dentro del margen propio del mismo
  • Maximizar el rendimiento con un presupuesto dado
  • Minimizar costos manteniendo un nivel máximo de rendimiento
  • Obtener la mejor relación costo/beneficio (con un presupuesto o unas exigencias dadas)

Existen varios tipos de Benchmark: 


Benchmarking Interno
En la mayor parte de las grandes empresas con múltiples divisiones o internacionales hay funciones similares en diferentes unidades de operación. Una de las investigaciones de benchmarking más fácil es comparar estas operaciones internas. Debe contarse con facilidad con datos e información y no existir problemas de confidencialidad.


Benchmarking Competitivo
Los competidores directos de productos son contra quienes resulta más obvio llevar a cabo el Benchmarking. Ellos cumplirían, o deberían hacerlo, con todas las pruebas de comparabilidad. En definitiva cualquier investigación de Benchmarking debe mostrar cuales son las ventajas y desventajas comparativas entre los competidores directos.

Benchmarking Funcional
No es necesario concentrarse únicamente en los competidores directos de productos. Existe una gran posibilidad de identificar competidores funcionales o líderes de la industria para utilizarlos en el benchmarking incluso si se encuentran en industrias disímiles. 


Este tipo de Benchmarking ha demostrado ser productivo, ya que fomenta en interés por la investigación y los datos compartidos, debido a que no existe el problema de la confidencialidad de la información entre las empresas disímiles sino que también existe un interés natural para comprender las prácticas en otro lugar.


Benchmarking Genérico
El beneficio de esta forma de benchmarking, la más pura, es que se pueden descubrir prácticas y métodos que no se implementan en la industria propia del investigador. Este tipo de investigación tiene la posibilidad de revelar la mejor de las mejores prácticas.


Benchmarking Sintéticos vs Benchmarking de Aplicaciones


          Sintéticos: Están especialmente diseñadas para medir el rendimiento de un componente individual de un ordenador, normalmente llevando el componente escogido a su máxima capacidad.


          Aplicaciones: herramientas basadas en aplicaciones reales, simulan una carga de trabajo para medir el comportamiento global del equipo.
Benchmarking de Bajo nivel vs Benchmarking Alto nivel


          Bajo Nivel: Miden directamente el rendimiento de los componentes Ejemplo: el reloj de la CPU, los tiempos de la DRAM y de la caché SRAM, tiempo de acceso medio al disco duro, latencia, tiempo de cambio de pista, etc.


          Alto Nivel: Están más enfocados a medir el rendimiento de la combinación componente/controlador/SO de un aspecto específico del sistema, como por ejemplo el rendimiento de E/S con ficheros, o el rendimiento de una determinada combinación de componentes/controlador/SO/aplicación.


Otros tipos de Benchmark

  • Consumo de energía
  • Cumplimiento con estándares ambientales, contenido de materiales y manejo del final del ciclo de vida del producto
  • Disipación de calor
  • De Juguete: detectar y medir componentes básicos de un computador
  • Redes
  • Reducción de ruido
  • Trabajo compartido: mide el rendimiento en las modernas tecnologías de distribución de procesos
  • Servidores
  • Soporte técnico
  • El valor del Benchmark
La importancia del Benchmarking no se encuentra en la detallada mecánica de la comparación, sino en el impacto que pueden tener estas comparaciones sobre los comportamientos. Se puede considerar como un proceso útil de cara a lograr el impulso necesario para realizar mejoras y cambios.


A continuación algunos ejemplos de Benchmark's


  • El Dhrystone es un pequeño benchmark sintético que pretende ser representativo de programación entera de sistemas. Está basado en estadísticas publicadas sobre uso de particularidades de los lenguajes de programación, sistemas operativos, compiladores, editores, etc.
  • Whetstone es un pequeño benchmark científico diseñado en el Laboratorio Nacional de Física de Inglaterra. Se lo considera uno de los padres de los benchmarks sintéticos por ser el primero diseñado específicamente con ese fin. Hoy en día forma parte de muchos benchmarks actuales.
  • Linpack es uno de los más usados en sistemas científicos y de ingeniería. Su uso como benchmark fue accidental, ya que originalmente fue una extensión del programa Linpack -cuyo propósito era resolver sistemas de ecuaciones- que otorgaba el tiempo de ejecución del programa en 23 máquinas distintas. Luego fueron agregándose cada vez mayor cantidad de máquinas (según sus mismos autores más como un pasatiempo que otra cosa).
  • HardInfo es una herramienta que nos brinda la posibilidad de comparar el rendimiento de nuestro equipo con otros modelos con distinta CPU y frecuencia de reloj. Además, la aplicación nos proporciona información sobre el sistema operativo, los módulos del kernel, información detallada del hardware de nuestra computadora, información de sensores de temperatura o periféricos instalados, entre otras.
Si desean seguir observando mas Benchmarks les dejo la siguiente liga para que vean otros mas:


Aparte de estas herramientas, tu mismo puedes codificar tu propio Benchmark casero, a continuación les mostrare un código en python que realiza lo anterior.

from Tkinter import *
from OpenGL.GL import *
from OpenGL.Tk import *

import time

class ColorBox ( Frame ):

 def __init__( self ):
  Frame.__init__( self )
  self.master.title( "Color Box" )
  self.master.geometry( "640x480" )
  self.pack( expand = YES, fill = BOTH )

  self.openGL = Opengl( self, double = 1)
  self.openGL.pack ( expand = YES, fill = BOTH )

  self.openGL.redraw = self.redraw
  self.openGL.set_eyepoint( 20 )

  self.amountRotated = 0
  self.increment = 2

  self.compta = 0

  self.starttime = time.time()

  self.update()

 def redraw( self, openGL ):
  glClearColor( 1.0, 1.0, 1.0, 0.0 )
  glClear( GL_COLOR_BUFFER_BIT )
  glDisable( GL_LIGHTING )

  red = ( 1.0, 0.0, 0.0 )
  green = ( 0.0, 1.0, 0.0 )
  blue = ( 0.0, 0.0, 1.0 )
  purple = ( 1.0, 0.0, 1.0 )

  vertices = \
   [ (( -3.0, 3.0, -3.0 ), red),
   (( -3.0, -3.0, -3.0 ), green),
   (( 3.0, 3.0, -3.0 ), blue),
   (( 3.0, -3.0, -3.0 ), purple),
   (( 3.0, 3.0, 3.0 ), red),
   (( 3.0, -3.0, 3.0 ), green),
   (( -3.0, 3.0, 3.0 ), blue),
   (( -3.0, -3.0, 3.0 ), purple),
   (( -3.0, 3.0, -3.0 ), red),
   (( -3.0, -3.0, -3.0 ), green) ]

  glBegin( GL_QUAD_STRIP )

  for vertex in vertices:
   location, color = vertex
   apply( glColor3f, color )
   apply( glVertex3f, location )

  glEnd()


 def update( self ):
  self.compta += 1

  if( (time.time() - self.starttime) > 5):
   self.master.title( "Color Box FPS " + str(self.compta / 5) )
   self.compta = 0
   self.starttime = time.time()

   if self.amountRotated >= 500:
    self.increment = -2

   if self.amountRotated <= 0:
    self.increment = 2

   glRotate( self.increment, 1.0, 1.0, 1.0 )

   self.amountRotated += self.increment

   self.openGL.tkRedraw()
   #self.openGL.after( 10, self.update )
   self.openGL.after( 1, self.update )

 def main():
  ColorBox().mainloop()

 if __name__ == "__main__":
      main()


Después desde terminal lo ejecutas mediante la siguiente linea:


sudo python testgl.py 


Para esta semana nomino a Obed, Alejandro y a Jonathan por su aportación del cluster con PVM, a Saúl por su entrada hacer de la Subversion y por ultimo Esteban ya que su entrada de Grid Computing se me hizo muy completa.

Bibliografías


viernes, 4 de mayo de 2012

Comunicación Sistemas Distribuidos

Comunicación en los Sistemas Distribuidos

Introducción


Antes de comenzar con el tema hay que remarcar una gran diferencia entre lo que es un Sistema Distribuido y un Sistema de un único procesador, esta diferencia es la comunicación que tienen entre procesos.

Otra diferencia es relacionado a la memoria compartida: 
  • En los sistemas de un solo procesador la comunicación nos supone la existencia de esta memoria.
  • Mientras que en los Sistemas Distribuidos no existe esta memoria y por lo tanto la comunicación que se requiere entre los procesos o acciones tendrán que replantearse.
Para que los procesos se puedan comunicar tienen que seguir unas reglas que se llaman protocolos.

Estos protocolos toman la forma de varias capas y cada capa tiene sus propias metas y reglas, esto tiene que suceder en un área amplia.

Como es una comunicación, siempre existirá una conversación en grupo en lugar de dos personas, así que se considera esta posibilidad para la comunicación de los procesos. La comunicación con lo procesos en un sistema distribuido se haría mediante conectar las memorias (envió y recibido).

Estándar ISO OSI

OSI (Interconexión de Sistemas Abiertes) es un modelo por  capaz para la comunicación de los sistemas abiertos, las capaz en las que consiste est varían en nivel en nivel siendo la ultima la más general.
Este modelo distingue dos tipos de protocolos, los orientados hacia las conexiones y los de sin conexión.

          Orientados hacia las conexiones:
                 
                         Antes de intercambiar los datos, el emisor y el receptor:
      • Establecen en forma explícita una conexión.
      • Probablemente negocien el protocolo a utilizar.
      • Al finalizar, deben terminar la conexión.
      • El teléfono es un sistema de comunicación orientado hacia la conexión.
         Sin conexión:

                           No es necesaria una configuración de antemano.
                           El emisor transmite el primer mensaje cuando está listo.
                           El depósito de una carta en un buzón es una comunicación sin conexión.


Modelo Cliente-Servidor

El modelo OSI no nos dice nada acerca de la forma en que se debe estructurar al sistema distribuido.
Modelo Cliente-Servidor tiene como idea fundamente la estructuración del S.O. como:
  • Un grupo de procesos en cooperación, llamados servidores, son los que ofrecen servicios a los usuarios.
  • Un grupo de procesos usuarios llamados clientes.
Este modelo se basa en el “protocolo solicitud / respuesta” aquí tenemos el procedimiento que haría:
  • Es sencillo y sin conexión.
  • No es complejo y orientado a la conexión como OSI o TCP / IP.
  • El cliente envía un mensaje de solicitud al servidor pidiendo cierto servicio.
  • El servidor:
    • Ejecuta el requerimiento.
    • Regresa los datos solicitados o un código de error si no pudo ejecutarlo correctamente.
  • No se tiene que establecer una conexión sino hasta que ésta se utilice.
  • La pila del protocolo es más corta y por lo tanto más eficiente.
  • Si todas las máquinas fuesen idénticas solo se necesitarían tres niveles de protocolos.
Comunicación en Grupo

Un Grupo es un conjunto de procesos con una semántica común. La propiedad fundamental que deben cumplir es que cuando se envía un mensaje, todos los miembros lo reciben. De esta forma se puede conseguir la coordinación de los distintos miembros que forman un grupo.

Los grupos pueden dividirse en dos categorías: Grupos Cerrados y Grupos Abiertos. En los primeros sólo se permite la comunicación entre los miembros del grupo, mientras que en los segundos, los procesos que no pertenecen al grupo pueden interactuar con él.

\includegraphics[scale=0.6]{figures/grps_abiertos.eps}

Los grupos cerrados (b) suelen utilizarse, en general, para el procesamiento en paralelo, donde cada uno de los miembros tiene su propio objetivo y no interactúa con el ``mundo exterior''. 

En cambio, los grupos abiertos (a) están pensados para el desarrollo de aplicaciones tipo cliente/servidor, donde los procesos interactúan con el grupo para solicitar servicios.

También podemos clasificar los grupos de procesos atendiendo al papel que desempeñan los miembros que los componen: Grupos de Iguales (a) y Grupos Jerárquicos (b).

\includegraphics[scale=0.6]{figures/grps_jerarquicos.eps}

Si en un grupo no existe una distinción entre los procesos que lo forman, y las decisiones se toman de forma colectiva, se dice que se trata de un grupo de iguales. En cambio, si se establecen relaciones de jerarquía en un grupo, donde unos procesos tienen una mayor capacidad de decisión que otros, se habla de grupos jerárquicos.

Bibliografías




jueves, 3 de mayo de 2012

Introducción a las Supercomputadoras

Supercomputadoras 
Semana 13

Las Supercomputadoras también llamadas Superordenadores son el tipo de computadoras mas potente y mas rápida que existen actualmente o sea tienen una capacidad para hacer cálculos mucho superior a la computadoras actuales.




Como se requiere procesar una infinidad de cálculos (alrededor de ) se requiere el uso de tecnología de nueva o costosa y por ende el precio que te cuesta el realizar una supercomputadora es muy elevado.


Gracias a que el costo de la producción es elevado, por eso su uso y todo lo relacionado a el son gracias a organismos militares, gubernamentales, empresas y cualquier otro que tengo una fuerte cantidad de efectivo para realizarlo (aproximadamente costaría alrededor más de 3 de millones de dólares fabricarlo).


Otra dificultad que tenemos con las Supercomputadoras son: que gracias a la infinidad de cálculos que se hacen las partes de la supercomputadora tienden a calentarse, en parte el procesador y por lo tanto hay que evitar esto ya que si se queman pues habria que cambiarlos lo que ocasionaría un costo mayor a lo presupuestado.

Para evitar lo anterior se agregan los sistemas de enfriamiento que consisten en eliminar todo el calor que se genera, comúnmente las Supercomputadoras logran calentarse alrededor de 10 veces mas que una estufa de cocina.


De entre las formas que hay para eliminar este calor tenemos:

  • Bajar la temperatura de una forma brusca para que no se dañe nada, por ejemplo de 200 o 300 grados los bajamos a -85 en poco tiempo para evitar algún daño.

  • Enviar el calor de un lugar a otro, por ejemplo: existe una supercomputadora en suiza que el calor que genera lo utilizan como calefacción para los lugares de la universidad en la cual reside.
Aparte de lo mencionado existen otras características importantes que tienes las Supercomputadoras entre las cuales tenemos:

  • Usuarios a la vez: Podrán tener hasta miles, en entorno de redes amplias.

  • Dificultad de uso: Solo puede ser usado por personas especializadas ya que si hay errores ellos podrán corregirlos fácilmente.

  • Clientes usuales: Grandes centros de investigación que requieren simulación de algo o cualquier cosas que requiera el uso de estos.

  • Penetración social: Prácticamente nula,  no hay mucho contacto humano.

  • Impacto social: muy importante en el ámbito de la investigación, ya que provee cálculos a alta velocidad de procesamiento, permitiendo, por ejemplo, calcular en secuencia el genoma humano, número Pi, desarrollar cálculos de problemas físicos dejando un margen de error muy bajo, etc.

  • Parques instalados: Existen alrededor de menos de un millar en todo el mundo, por ende los existentes ganan mas.

Las Supercomputadoras son dedicadas a una tarea específica, los usos mas comunes que se les dan es el controlar a un satélite desde la tierra y animaciones en 3D, investigación de cosas relacionadas con las areas nucleares y cualquier otra cosa que requiera un grado de calculo mayor.

Las Supercomputadoras suelen planificarse siguiendo algunos de los siguientes cuatro modelos:

  • Registros vectoriales.- Es una tecnología que permite la ejecución de innumerables operaciones aritméticas en paralelo.

  • Sistema M.P.P. o Massively Parallel Processors (Procesadores Masivamente Paralelos).- Método de utilización de cientos o miles de microprocesadores coordinados para funcionar en conjunto.

  • Tecnología de Computación distribuida (Interconexión de clusters de computadoras de uso general a través de una red local de baja latencia y gran ancho de banda).

  • Cuasi-Supercómputo.- Utilización del tiempo de ocioso de computadoras conectadas a Internet para procesar grandes trabajos en conjunto. Por lo general son proyectos de interés general, los usuarios aceptan que se utilicen sus computadoras cuando no las usan. 

Historia de las Supercomputadoras

Antes de estos años ya existían las primeras Supercomputadoras que fueron el parte-aguas para las que tenemos actualmente. Algunas de las que mencionare se encuentran en los últimos dos link's que aparecen en las bibliografrías por si deseas observar mas.

http://www2.udec.cl/~marlagos/imagen%201.jpgMANCHESTER MARK (1948)
El primer supercomputador británico sentó las bases de muchos conceptos todavía usados hoy en día.
En términos modernos tenía una RAM (memoria de acceso aleatorio) de sólo 32 posiciones o 'palabras'. Cada palabra constaba de 32 bits (dígitos binarios), lo que quiere decir que la máquina tenía una cantidad total de 1024 bits de memoria.



CONVEX C-220 Y LA REVOLUCIÓN UNIX
La llegada de UNIX cambió cualitativamente el modo en que los científicos abordaban problemas informáticos. Primeramente es un modo flexible de proporcionar potencia al ordenador, al rápidamente cambiante mercado del hardware y de un modo crucial a los cambiantes requerimientos de las aplicaciones científicas de los usuarios. Nuevos componentes puede ser añadidos simplemente, o incrementada la potencia como sea necesario.

INTEL
Un rendimiento de nodo máximo individual de 40 Mflops ofrece un total de más de 2.5 Gflops para la máquina completa. El software para hacer la programación más fácil incluye: Fortran y C a través de compiladores. 
http://www2.udec.cl/~marlagos/imagen%205.jpgEl Intel iPSC/860 tiene 64 nodos llamados RX. Cada nodo tiene un reloj de 40 MHz y 16 Mbytes de memoria. El hardware de conexión directa permite transferencias de datos nodo a nodo de 2.8 Mbytes/second. 
Hay 12 Gbytes de disco unido localmente y conexiones Ethernet a una estación de trabajo Sun-670MP para acceso de usuario.

Link's de Importancia:


Lista 500 Supercomputadoras mas potentes del mundo http://www.eliax.com/index.cfm?post_id=7787

México se mantiene en el ranking de Supercomputadoras: http://www.netmedia.info/soluciones/hardware/mexico-se-mantiene-en-ranking-global-de-super-computadoras/


Nomino para esta semana a:

Alejandro Avendaño ya que fue me ayudo con sugerencias para hacer la entrada.
Abraham por que me aclaro dudas referentes a esta entrada.
Obed por su entrada.

Bibliografías:


http://www.alegsa.com.ar/Dic/supercomputadora.php
http://es.wikipedia.org/wiki/Supercomputadora
http://mx.answers.yahoo.com/question/index?qid=20060912054758AAP6yBv
http://www.monografias.com/trabajos65/supercomputadoras/supercomputadoras2.shtml
http://www.monografias.com/trabajos65/supercomputadoras/supercomputadoras.shtml

jueves, 5 de abril de 2012

Entrada 9

Para esta semana tenia pensado explicar hacer del Cluster Manager con Java pero no alcance a hacer gran cosa.

Por lo pronto pienso nominar a Obed por la explicacion de los fallos que podran ocurrir en un sistema distribuido.
Y a Lupe por su tutorial de MPI en c.

jueves, 29 de marzo de 2012

Entrada # 8

Entrada Semana # 8


En esta semana investigue acerca de MPI utilizándolo en el lenguaje Java.


El Wiki donde podrán observar el aporte es el siguiente:



A las personas que nomino para esta semana son:


A Alejandro Avendaño Y a Osvaldo

jueves, 1 de marzo de 2012

Entrada # 5

Entrada # 5

Para esta semana igual que en la anterior me ando encargando de modificar la wiki del equipo.

Estoy agregando Listas, Estilos al texto y una Tabla de Contenidos para tener una especie de índice al principio de la Wiki.