<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1234-1234</journal-id>
<journal-title><![CDATA[Journal Innovación y Tecnología]]></journal-title>
<abbrev-journal-title><![CDATA[Jour.In.Tec.]]></abbrev-journal-title>
<issn>1234-1234</issn>
<publisher>
<publisher-name><![CDATA[Instituto de Electrónica Aplicada]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1234-12342014000100004</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Cluster de Alto Rendimiento]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Jiménez]]></surname>
<given-names><![CDATA[Daniel]]></given-names>
</name>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Medina]]></surname>
<given-names><![CDATA[Andrés]]></given-names>
</name>
</contrib>
</contrib-group>
<aff id="A">
<institution><![CDATA[,  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>00</month>
<year>2014</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>00</month>
<year>2014</year>
</pub-date>
<numero>14</numero>
<fpage>16</fpage>
<lpage>27</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.br/scielo.php?script=sci_arttext&amp;pid=S1234-12342014000100004&amp;lng=en&amp;nrm=iso&amp;tlng=en"></self-uri><self-uri xlink:href="http://www.scielo.br/scielo.php?script=sci_abstract&amp;pid=S1234-12342014000100004&amp;lng=en&amp;nrm=iso&amp;tlng=en"></self-uri><self-uri xlink:href="http://www.scielo.br/scielo.php?script=sci_pdf&amp;pid=S1234-12342014000100004&amp;lng=en&amp;nrm=iso&amp;tlng=en"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[En este artículo se realiza una introducción a los conceptos y definiciones que se necesitan para el desarrollo de un cluster de computadoras, asi como los componentes y las funciones del mismo, también se calculan los tiempos de proceso de dos programas ejecutados con diferentes condiciones en el cluster diseñado.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[cluster]]></kwd>
<kwd lng="es"><![CDATA[nodo]]></kwd>
<kwd lng="es"><![CDATA[balance de carga]]></kwd>
<kwd lng="es"><![CDATA[Middleware]]></kwd>
<kwd lng="es"><![CDATA[programación paralela]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font size="2" face="Verdana"><b>ART&Iacute;CULOS</b></font></p>     <p align="right">&nbsp;</p>     <p align="center"><font face="Verdana" size="4"><b>Cluster de Alto Rendimiento</b></font></p>     <p align="center">&nbsp;</p>     <p align="center">&nbsp;</p>     <p align="center"><font face="Verdana" size="2">Daniel Jiménez <a href="mailto:alejo3479@gmail.com">alejo3479@gmail.com</a>    <br> </font><font face="Verdana" size="2">Andrés Medina </font><font size="2" face="Verdana"><a href="mailto:wellvu@hotmail.com">wellvu@hotmail.com</a></font></p>     <p align="center">&nbsp;</p>     <p align="center">&nbsp;</p> <hr>     <p align="justify"><font face="Verdana" size="2"><b>Abstract</b></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2"><i>En este artículo se realiza una introducción a los conceptos y definiciones que se necesitan para el desarrollo de un cluster de computadoras, asi como los componentes y las funciones del mismo, también se calculan los tiempos de proceso de dos programas ejecutados con diferentes condiciones en el cluster diseñado.</i></font></p>     <p align="justify"><font face="Verdana" size="2"><i><b>Keywords</b>   -   cluster,   nodo,   balance   de   carga, Middleware, programación paralela.</i></font></p> <hr>     <p align="justify">&nbsp;</p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana" size="3"><b>I.   INTRODUCCI&Oacute;N</b></font></p>     <p align="justify"><font face="Verdana" size="2">El término cluster (grupo o racimo) se define como el conjunto de computadores que se comportan como si fuesen un único computador.</font></p>     <p align="justify"><font face="Verdana" size="2">La tecnología de clusteres ha evolucionado en apoyo de actividades que van desde aplicaciones de supercómputo y software de misiones críticas, servidores web y comercio electrónico, hasta bases de datos de alto rendimiento, entre otros usos.</font></p>     <p align="justify"><font face="Verdana" size="2">El cómputo con clusteres surge como resultado de la convergencia de varias tendencias actuales que incluyen la disponibilidad de microprocesadores económicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cómputo distribuido de alto rendimiento, así como la creciente necesidad de potencia computacional para aplicaciones que la requieran.</font></p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana" size="3"><b>II.   CLASIFICACI&Oacute;N DE LOS CLUSTERES</b></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">Un cluster puede estar constituido por dos o más computadores, de los cuales se espera que presente uno o diferentes combinaciones de los siguientes servicios:</font></p>     <blockquote>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Almacenamiento</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Alta disponibilidad</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Balance de carga</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Alto rendimiento</font></p> </blockquote>     <p align="justify"><font face="Verdana" size="2"><i>A.    Almacenamiento</i></font></p>     <p align="justify"><font face="Verdana" size="2">Un cluster de almacenamiento proporciona una imagen de sistema de archivos consistente a lo largo de los servidores en el cluster, permitiendo que los servidores lean</font> <font face="Verdana" size="2">y escriban de forma simultánea a un sistema de archivos compartido.</font></p>     <p align="justify"><font face="Verdana" size="2">Un cluster de almacenamiento simplifica la administración de almacenamiento al limitar la instalación de aplicaciones a un sistema de archivos. Asimismo, con un sistema de archivos a lo largo del cluster, un cluster de almacenamiento elimina la necesidad de copias de más de los datos de la aplicación y simplifica la creación de copias de seguridad y recuperación contra desastres.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura01.gif" width="374" height="302"></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2"><i>B.    Alta Disponibilidad</i></font></p>     <p align="justify"><font face="Verdana" size="2">Los cluster de alta disponibilidad proporcionan continua disponibilidad de los servicios a través de la eliminación de la falla por un único elemento y a través del proceso de recuperación en contra de fallos al trasladar el servicio desde el nodo de cluster erróneo a otro nodo completamente funcional.</font></p>     <p align="justify"><font face="Verdana" size="2">Generalmente, los servicios en los cluster de alta disponibilidad leen y escriben datos a través de la lectura y escritura a un sistema de archivos montado. Así, un cluster de alta disponibilidad debe mantener la integridad de los datos cuando un nodo recibe el control del servicio desde otro nodo.</font></p>     <p align="justify"><font face="Verdana" size="2">Los nodos erróneos no son vistos por los clientes fuera del cluster. Los cluster de alta disponibilidad son conocidos también como cluster con recuperación contra fallas.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura02.gif" width="378" height="303"></p>     <p align="justify"><font face="Verdana" size="2"><i>C.    Balance de Carga</i></font></p>     <p align="justify"><font face="Verdana" size="2">Los cluster de balance de carga responden a peticiones de servicios de red desde diferentes nodos para balancear las peticiones a los largo de los nodos del cluster.</font></p>     <p align="justify"><font face="Verdana" size="2">El balance de carga proporciona escalabilidad económica porque se puede configurar el número de nodos de acuerdo con los requerimientos de balance de carga. Si un nodo en un cluster de balance de carga falla, el software de balance de carga detecta la falla y asigna las peticiones a otros nodos en el cluster.</font></p>     <p align="justify"><font face="Verdana" size="2">Los nodos erróneos en un cluster de balance de carga no son visibles desde los clientes fuera del cluster.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura03.gif" width="324" height="352"></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2"><i>D.    Alto Rendimiento</i></font></p>     <p align="justify"><font face="Verdana" size="2">Los cluster de alto rendimiento utilizan los nodos para ejecutar cálculos simultáneos. Un cluster de alto rendimiento permite que las aplicaciones trabajen de forma paralela, mejorando así el rendimiento de éstas. Los</font> <font face="Verdana" size="2">cluster de alto rendimiento son conocidos como cluster computacionales o computación de red.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura04.gif" width="362" height="294"></p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana" size="3"><b>III.   COMPONENTES DE UN CLUSTER</b></font></p>     <blockquote>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Nodos</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Almacenamiento</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Sistemas operativos</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Conexiones de red</font></p>       ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Middleware</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Protocolos de comunicación y servicios</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Aplicaciones</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Ambientes de programación paralela</font></p> </blockquote>     <p align="justify"><font face="Verdana" size="2"><i>A.   Nodo</i></font></p>     <p align="justify"><font face="Verdana" size="2">Nodo es un punto de intersección de dos o mas elementos, dependiendo del paradigma en que se encuentre; un nodo en redes de computadores es un servidor, mientras que para estructuras de datos dinámicas, un nodo es un registro que contiene un dato de interés.</font></p>     <p align="justify"><font face="Verdana" size="2">En el ámbito de programación paralela, un nodo puede ser de dos tipos:</font></p>     <p align="justify"><font face="Verdana" size="2"><b>Dedicado: </b>Es un computador sin periféricos de salida, es decir no tiene conectado ni el teclado, ni mouse, ni monitor, solamente se encuentra conectado a los demás nodos. Este tipo de nodos solo realizan trabajo del cluster, no hacen ninguna tarea individualmente.</font></p>     <p align="justify"><font face="Verdana" size="2"><b>No dedicado: </b>Es un computador con periféricos de salida, los mas importantes son el teclado y el monitor, ademas se encuentra conectado a los demás nodos. En este tipo de nodo se realizan dos tipos de tareas, las relacionadas con el cluster y las tareas individuales del nodo, estas ultimas se realizan como ultima prioridad, por tanto se efectúan en los periodos de reloj libres que dejan las tareas del cluster.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>B.    Almacenamiento</i></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">El almacenamiento en un cluster es un punto muy delicado y a tomarse muy en cuenta, ya que este puede ser compartido o individual en cada nodo. El problema mas importante esta en la sincronización de lectura/escritura así como el tiempo que usa cada nodo ya que el bus es compartido y el acceso es único.</font></p>     <p align="justify"><font face="Verdana" size="2">El protocolo mas usado para el acceso al almacenamiento es NFS<sup>1</sup>. En cuanto a hardware, se pueden utilizar discos duros por cada nodo (sistema tipo DAS<sup>2</sup>), o bien un único disco compartido entre los nodos (sistema tipo ÑAS<sup>3</sup>). El sistema compartido obtiene el acceso a través de los protocolos CIFS, NFS, FTP o TFTP.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>C.&nbsp; &nbsp; Sistema Operativo</i></font></p>     <p align="justify"><font face="Verdana" size="2">El sistema operativo debe ser multiproceso, ya que es el que permitirá una gestión eficiente de los recursos en cada nodo, tanto para el balanceo de carga en cada nodo, como para la eficiencia del cluster en su totalidad. Los mas comunes utilizados en clusteres son: . GNU/Linux</font></p>     <blockquote>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Unix</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Windows </font></p>       <p align="justify"><font face="Verdana" size="2">&bull;&nbsp; &nbsp;Mac OS</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Solaris</font></p>       <p align="justify"><font face="Verdana" size="2">&bull;&nbsp;&nbsp; FreeBSD</font></p> </blockquote>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2"><i>D.&nbsp; &nbsp; Conexiones de Red</i></font></p>     <p align="justify"><font face="Verdana" size="2">Para un buen rendimiento del cluster la conexión entre los nodos debe ser lo menos compleja posible, para incrementar la velocidad en el intercambio de información. Para ello se utilizan diferentes tecnologías en los adaptadores de red.</font></p>     <blockquote>       <p align="justify"><font face="Verdana" size="2"><b>Ethernet: </b>Es la mas utilizada en la actualidad, aun así no es la mas eficaz ya que limita el tamaño de paquete, realiza una excesiva comprobación de errores y los protocolos no son muy avanzados, un ejemplo es el protocolo  TCP/IP.</font></p>       <p align="justify"><font face="Verdana" size="2">La solución a algunos de estos problemas puede ser el uso de Gigabit Ethernet (1 Gbit/s) o mejor aun 10 Gigabit Ethernet (10 Gbit/s), con una latencia de 30 a 100 <i>&mu;s.</i></font></p>       <p align="justify"><font face="Verdana" size="2"><b>Myrinet: </b>Si se desea una red de baja latencia, esta es la elección perfecta ya que llega a tener de 3 a 10 <i>&mu;s, </i>con una velocidad de transferencia de 2 a 10 Gbit/s. Los protocolos sobre esta red son MPICH-GM, MPICH-MX, Sockets-GM y Sockets MX,</font></p>       <p align="justify"><font face="Verdana" size="2"><b>InfiniBand: </b>Es la red con mayor ancho de banda, 96 Gbit/s y latencia de 10 <i>&mu;s. </i>Define una conexión entre un nodo de computación y un nodo de I/O. La conexión va desde un HCA<sup>4</sup> hasta un TCA<sup>5</sup>. Se está usando principalmente para acceder a arrays de discos SAS.</font></p>       <p align="justify"><font face="Verdana" size="2"><b>SCI: </b><sup>6</sup>Es una tecnología bastante escalable, se aplica en las topologías de anillo (ID), toro (2D), e hipercubo (3D) sin necesidad de un switch. Se tienen tasas de transferencia de hasta 5,3 Gbit/s y latencia de 1,43 &mu;s.</font></p> </blockquote>     <p align="justify"><font face="Verdana" size="2"><i>E.&nbsp; &nbsp; Middleware</i></font></p>     <p align="justify"><font face="Verdana" size="2">Es un software que produce la interacción entre el sistema operativo y las aplicaciones. Mediante middleware se tiene la sensación de que se esta utilizando una ordenador muy potente en lugar de varios comunes. Es el encargado de congelar o descongelar procesos, balancear la carga, etc.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">También mediante esta herramienta se pueden conectar mas nodos al cluster y utilizarlos sin tener que realizar una tarea compleja para poder distribuir los procesos con los nuevos nodos. Existen varios tipos de este software algunos ejemplos son: MOSIX, OpenMOSIX, Cóndor, OpenSSI, etc.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>F.&nbsp; &nbsp; Protocolos de Comunicación y Servicio</i></font></p>     <p align="justify"><font face="Verdana" size="2">Protocolo es un conjunto de reglas que permiten que dos o mas entidades se comuniquen para transmitir cualquier tipo de información por medio de un enlace físico.</font></p>     <p align="justify"><font face="Verdana" size="2">Por ejemplo, entre un nodo y el sistema de almacenamiento común se puede utilizar el protocolo FTP, entre nodo y nodo se puede utilizar el protocolo UDP y entre el cluster y el cliente se puede utilizar el protocolo TCP/IP.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>G.&nbsp; &nbsp; Aplicaciones</i></font></p>     <p align="justify"><font face="Verdana" size="2">En la actualidad existen un gran número de clusteres implementados, los ejemplos más sobresalientes son los servidores de Google, Facebook, Amazon, tareas: etc. Las aplicaciones son muchas y son variadas, se pueden realizar las siguientes</font></p>     <blockquote>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Predicciones Meteorológicas</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Predicciones Bursátiles</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Simulaciones de Comportamiento Cinemático y Dinámico de componentes mecánicos</font></p>       ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">•&nbsp; Diseño y análisis de nuevo materiales</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Estudio de fármacos y enfermedades epidémicas</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Dise&ntilde;o de Estructuras moleculares</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Creación y renderización de fotogramas de animación</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; Investigación en general</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; etc</font></p> </blockquote>     <p align="justify"><font face="Verdana" size="2"><i>H.    Ambientes de Programación Paralela</i></font></p>     <p align="justify"><font face="Verdana" size="2">Los ambientes de programación paralela permiten implementar algoritmos que hagan uso de recursos compartidos: CPU, memoria, datos y servicios.</font></p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana" size="3"><b>IV.   DISE&Ntilde;O</b></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2"><i>A.&nbsp; &nbsp; Hardware</i></font></p>     <p align="justify"><font face="Verdana" size="2">El cluster diseñado es del tipo Beowulf, este es un sistema de cómputo paralelo basado en clusters de ordenadores personales conectados a través de redes informáticas estándar, sin el uso de equipos desarrollados específicamente para la computación paralela. Las características son las mismas en las cuatro PC's y son las siguientes:</font></p>     <blockquote>       <p align="justify"><font face="Verdana" size="2"><b>Procesador: </b>Intel&reg; Pentium&reg; <b>D </b>CPU @ 3.40 Ghz</font></p>       <p align="justify"><font face="Verdana" size="2"><b>RAM de Cache L2: 2 MB</b></font></p>       <p align="justify"><font face="Verdana" size="2"><b>Velocidad de Bus: </b>800 Mhz</font></p>       <p align="justify"><font face="Verdana" size="2"><b>Memoria RAM: </b>512 <b>MB</b></font></p>       <p align="justify"><font face="Verdana" size="2"><b>Velocidad de Memoria: DDRII </b>@ 333 Mhz</font></p> </blockquote>     <p align="justify"><font face="Verdana" size="2"><i>B.&nbsp; &nbsp; Sistema Operativo</i></font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura05.gif" width="159" height="103"></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">Es una distribución de Ubuntu para servidores basada en Debian. La diferencia con el anterior sistema es que en este se deben instalar todos los paquetes y configurar cada nodo para funcionar como parte del cluster, diferenciando el nodo maestro de los nodos esclavos.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>C.    Almacenamiento</i></font></p>     <p align="justify"><font face="Verdana" size="2">El almacenamiento del cluster es el disco duro que se halla en el nodo maestro, este disco tiene una capacidad de 150 Gb @ 133 Mbps bajo la tecnología IDE<sup>7</sup> o ATA<sup>8</sup>.</font></p>     <p align="justify"><font face="Verdana" size="2">El nodo maestro comparte una carpeta con los nodos esclavos mediante la tecnología libre ÑAS<sup>9</sup> mediante el protocolo NFS<sup>10</sup>.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>1)   Protocolo NFS</i></font></p>     <p align="justify"><font face="Verdana" size="2">Es un protocolo de nivel de aplicación, de acuerdo con el modelo OSI<sup>11</sup>, este protocolo hace posible que un nodo acceda a los archivos de otro como si fueran propios del mismo mediante una conexión de red, este protocolo esta incluido por defecto en los sistemas UNIX y en algunos sistemas Linux.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura06.gif" width="372" height="253"></p>     <p align="justify"><font face="Verdana" size="2"><i>D.    Conexión de Red</i></font></p>     <p align="justify"><font face="Verdana" size="2">Ethernet es el medio más utilizado por su bajo costo y su fácil instalación, esta tecnología es solo recomendable para propósitos de estudio ya que cuenta con detección de colisiones CSMA/CD<sup>12</sup> que incrementa la latencia y reduce la velocidad de la obtención de resultados; esta basado en el estándar IEEE 802.3.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura08.gif" width="268" height="126"></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">Las direcciones IP's se designan de la siguiente manera:</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura09.gif" width="375" height="276"></p>     <p align="justify"><font face="Verdana" size="2"><i>E.    Middleware</i></font></p>     <p align="justify"><font face="Verdana" size="2">En el desarrollo del clúster se utilizó el software SSH<sup>13</sup>, este software brinda la posibilidad de conectarse desde el nodo maestro a los nodos esclavos. Una vez que se ha compartido una carpeta o un sistema de archivos se conecta mediante SSH y se inicia un proceso en cada nodo, todo desde el nodo maestro.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura10.gif" width="363" height="201"></p>     <p align="justify"><font face="Verdana" size="2">SSH trabaja de forma parecida a telnet, pero utiliza un cifrado para que la información no sea legible, con la única manera de acceder a esta esta información es por medio de ataques de REPLAY<sup>14</sup>.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>F.    Administrador de Procesos </i></font></p>     <p align="justify"><font face="Verdana" size="2"><i>1)    OpenMPD</i></font></p>     <p align="justify"><font face="Verdana" size="2">MPD es un administrador de procesos compatible con MPI hasta la versión 1.2. MPD trata de evitar el envío de procesos a los nodos esclavos, solo cuando el nodo maestro no es suficiente para ejecutar un proceso, entonces es que MPD comienza a mandar tareas, pero lo hace hasta que el siguiente nodo tampoco abastezca; se observa que MPD es eficiente para tareas que necesiten de cálculos muy largos.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>2)   Hydra</i></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">Hydra es un administrador de procesos compatible con MPI desde la versión 1.3. Hydra al contrario de MPD trata de usar procesadores alejados al nodo maestro, tanto para reducir la carga a este, como para tener mas núcleos activos y usar todos los periodos de clock para realizar los cálculos en todos los núcleos Hydra es eficiente cuando los procesos no son muy pesados y cuando se tiene una gran cantidad de datos.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>G.    Ambiente de Programación Paralela</i></font></p>     <p align="justify"><font face="Verdana" size="2">Para poder ejecutar programas se necesita de un entorno, en nuestra investigación utilizamos dos diferentes.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>1)&nbsp; &nbsp;MPI</i></font></p>     <p align="justify"><font face="Verdana" size="2">MPI<sup>15</sup>, es un estándar de paso de mensajes que define la sintaxis y la semántica de las funciones de una librería en un lenguaje en específico, en el cual se diseñan programas que explotan a los multiprocesadores o bien a un sistema multinúcleo. MPI tiene soporte para C, C++, C#, Fortran, Ada, Python, OCaml, Java y código ensamblador.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>2)&nbsp; &nbsp; Octave</i></font></p>     <p align="justify"><font face="Verdana" size="2">GNU Octave es un software libre enfocado a los cálculos matemáticos. Es el equivalente al software privativo de Mathworks&reg; MATLAB&reg;. Este software ejecuta scripts que sean compatibles con MATLAB&reg;, es decir que es compatible con archivos de extensión .m, es un lenguaje interpretado.</font></p>     <p align="justify"><font face="Verdana" size="2">Actualmente octave tiene muchas funciones nativas para el procesamiento paralelo, entre algunas se puede nombrar <i>parfor, </i>que básicamente es un bucle <i>for </i>pero que utiliza varios procesadores para realizar la ejecución. Un ejemplo práctico es el siguiente:</font></p>     <p align="justify"><font face="Verdana" size="2">• Bucle FOR:</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura11.gif" width="150" height="68"></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">Salida del procesador:    <i>1, 2, 3, 4, 5, 6, 7, 8</i></font></p>     <p align="justify"><font face="Verdana" size="2">Si el procesador debe realizar 8 procesos, tomando en cuenta que cada proceso toma 10&mu;s el tiempo total es de:</font></p>     <p align="center"><font face="Verdana" size="2">10&mu;s*8 = 80</font><font face="Verdana" size="2">&mu;s</font></p>     <p align="justify"><font face="Verdana" size="2">• Bucle PARFOR:</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura12.gif" width="165" height="62"></p>     <blockquote>       <p align="justify"><font face="Verdana" size="2">Salida del procesador 1:&nbsp; &nbsp; <i>1, 2</i></font></p>       <p align="justify"><font face="Verdana" size="2">Salida del procesador 2:&nbsp; &nbsp; <i>3, 4</i></font></p>       <p align="justify"><font face="Verdana" size="2">Salida del procesador 3:&nbsp; &nbsp; <i>5, 6</i></font></p>       <p align="justify"><font face="Verdana" size="2">Salida del procesador 4:&nbsp; &nbsp; <i>7, 8</i></font></p>       ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">En este caso tomando en cuenta que cada procesador realiza 2 procesos y que cada proceso toma 10&mu;s el tiempo total es de:</font></p>       <p align="center"><font face="Verdana" size="2">10&mu;s x 2 = 20</font><font face="Verdana" size="2">&mu;s</font></p> </blockquote>     <p align="justify"><font face="Verdana" size="2">Claramente en el ejemplo anterior se nota que el tiempo se reduce a 1/4 utilizando 4 núcleos que solamente usando 1 núcleo. Y como este ejemplo existen muchos otros pero este tema sera tratado en los siguientes capítulos.</font></p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana" size="3"><b>V.   RESULTADOS</b></font></p>     <p align="justify"><font face="Verdana" size="2"><i>A.    Benchmark</i></font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura13.gif" width="349" height="165"></p>     <p align="justify"><font face="Verdana" size="2">Los resultados anteriores indican claramente que el número de operaciones de punto flotante por segundo que puede realizar el cluster es de 1636 x 10<sup>6</sup>, esto es 4 veces mayor al número de operaciones de un simple nodo.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>B.    Cálculo de Pi</i></font></p>     <p align="justify"><font face="Verdana" size="2">El primer caso de estudio es el cálculo de pi con programación paralela. Pi es una razón. Es la respuesta a la pregunta: ¿como se relaciona la distancia a través de un circulo (el diámetro con la distancia a su alrededor)?. Durante milenios se ha sabido que las dos medidas de un círculo están relacionadas. El reto estaba en descubrir como.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">Pi es irracional. Su valor se parece a 22/7, pero como ocurre con todos los números irracionales, ninguna fracción puede describirlo perfectamente, y la expresión decimal continuará para siempre sin repeticiones. Luego, </font><font face="Verdana" size="2">como Phi, y e, pi es una constante natural que es imposible conocer completamente. Eso no ha impedido que muchos lo intentaran.</font></p>     <p align="justify"><font face="Verdana" size="2">El método Monte-Carlo<sup>16</sup> trata de calcular un valor aproximado de pi, lanzando dardos sobre la diana representada en la siguiente figura.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura14.gif" width="355" height="226"></p>     <p align="justify"><font face="Verdana" size="2">Supongamos que los dardos se reparten uniformemente, entonces la probabilidad de que un dardo caiga en el cuadrante del circulo es:</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura15.gif" width="165" height="87"></p>     <p align="justify"><font face="Verdana" size="2">Si lanzamos N dardos sobre el cuadrado, y sea M el número de dardos que caen en el cuadrante. La frecuencia relativa de caída en el cuadrante <img src="/img/revistas/jit/n14/a04_figura16.gif" width="13" height="21">, será aproximadamente igual a <i><img src="/img/revistas/jit/n14/a04_figura18.gif" width="11" height="17">. </i>Por tanto:</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura17.gif" width="81" height="38"></p>     <p align="justify"><font face="Verdana" size="2">Se utilizó este algoritmo en diferentes ambientes. El balanceador de trabajos que se utilizó es OpenMPD, este evita el retardo que pueda provocarse en la red del cluster; lo que hace es enviar trabajos a los nodos más lejanos siempre y cuando los más cercanos estén ocupados.</font></p>     <p align="justify"><font face="Verdana" size="2">Es decir, que si el nodo maestro se configuró para trabajar en conjunto con el cluster y definimos dos procesos, tomando en cuenta que cada nodo tiene dos procesadores, el trabajo se realizara solo en el nodo maestro.</font></p>     <p align="justify"><font face="Verdana" size="2">Si definimos tres procesos, el balanceador verifica que dos de los procesos serán realizados en el nodo maestro y enviara el proceso sobrante al nodo más cercano al maestro. Con ello se puede afirmar que solo cuando se definan siete o más procesos es que las cuatro computadoras del cluster trabajaran en conjunto.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">Por ello es que este administrador es muy recomendable cuando se utiliza una infraestructura tipo Beowulf. El otro ambiente o condición es cuando se define que el nodo maestro no trabaje en conjunto con el cluster. Esto </font><font face="Verdana" size="2">tiene un gran efecto como se verifica más adelante, ya que al tener al nodo maestro solo como emisor de trabajos y receptor de resultados se gana un tiempo importante y el proceso se culmina en menor tiempo que cuando este trabaja.</font></p>     <p align="justify"><font face="Verdana" size="2">Por otra parte no es estrictamente limitante el número de procesos, aunque se tienen solamente 8 núcleos de trabajo en total, se pueden asignar el número de procesos que se desee a cada uno pero esto tiene un defecto ya que la red tiene un retardo al no contar con conexión de fibra óptica. Por ello se debe hallar un balance entre el número de procesos a asignar de acuerdo al trabajo que se necesite realizar.</font></p>     <p align="justify"><font face="Verdana" size="2">El algoritmo de la <a href="#f11">figura 11</a> que muestra el proceso de cálculo de Pi en paralelo es el siguiente:</font></p>     <p align="center"><a name="f11"></a><img src="/img/revistas/jit/n14/a04_figura19.gif" width="315" height="738"></p>     <p align="justify"><font face="Verdana" size="2">Se tienen las siguientes constantes:</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura20.gif" width="158" height="49"></p>     <p align="justify"><font face="Verdana" size="2"><i>1)   Procesamiento con el maestro incluido</i></font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura21.gif" width="403" height="242"></p>     <p align="justify"><font face="Verdana" size="2">Se puede notar una gran diferencia en los tiempos de cálculo.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura22.gif" width="244" height="90"></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2"><i>2)   Procesamiento sin el nodo maestro</i></font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura23.gif" width="415" height="412"></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura24.gif" width="532" height="316"></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura25.gif" width="545" height="316"></p>     <p align="justify"><font face="Verdana" size="2">Nuevamente se puede notar una gran diferencia en los tiempos de cálculo.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura26.gif" width="247" height="85"></p>     <p align="justify"><font face="Verdana" size="2">El aparente incremento de tiempo al usar el nodo maestro tiene una explicación. Cuando el nodo maestro trabaja conjuntamente con el cluster, este realiza 3 trabajos de fondo. Primero envía los trabaios a cada nodo del cluster, después debe realizar la cantidad de trabajos que le son asignados como a cualquiera de los nodos esclavos, y por último debe recibir los resultados de todos los demás nodos e ir sumando parcialmente hasta llegar al resultado final.</font></p>     <p align="justify"><font face="Verdana" size="2">Es por ello que cuando el nodo maestro no trabaja junto con el cluster y solo se dedica a enviar trabajos y recibir resultados se obtienen mejores resultados.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>C.    Estimador de Regresión Nadaraya-Watson</i></font></p>     <p align="justify"><font face="Verdana" size="2">El estimador de Nadaraya-Watson es uno de los mecanismos de Regresión no paramétrica más prestigiosos. Usa un método Kernel de estimación de funciones de densidad. Un Kernel muy usual es la distribución Normal. Por ejemplo una N(0, 1).</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">Al parámetro h se le denomina ventana y, en realidad, modifica la dispersión de la Normal, si es ésta la que actúa de Kernel. Es una forma original de construir una estimación de la variable dependiente &quot;y&quot; a partir de un valor de una variable independiente &quot;x&quot;, basándose exclusivamente en la posición de los valores de la muestra que tenemos.</font></p>     <p align="justify"><font face="Verdana" size="2">Se trata de un mecanismo de construcción de la variable &quot;y&quot; ponderando los valores muéstrales de esta variable según la distancia que haya desde el valor de &quot;x&quot; a los valores muéstrales de la variable independiente. La ponderación se materializa mediante el numerador del Kernel. Supongamos que éste sea la N(0, 1), entonces si</font> <font face="Verdana" size="2">el valor de &quot;x&quot; está cerca de un valor muestral de la variable independiente la resta será un valor próximo a cero y tendrá en la Normal un valor grande.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura27.gif" width="544" height="321"></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura28.gif" width="545" height="290"></p>     <p align="justify"><font face="Verdana" size="2">Sin embargo, los valores alejados darán restas grandes en valor absoluto y en la Normal tendrá un valor próximo a cero. Observemos, pues, que el valor de &quot;y&quot; para esa &quot;x&quot; estará muy influido por los valores muéstrales cercanos.</font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura29.gif" width="186" height="152"></p>     <p align="justify"><font face="Verdana" size="2">Lo que vemos es que el peso depende de cada punto en la muestra. Para calcular el ajuste en cada punto de la muestra de datos de tamaño n, en el orden de <i>n<sup>2</sup>k </i>cálculos realizados, donde <i>k </i>es la dimensión del vector descriptivo de variables <i>x.</i></font></p>     <p align="center"><a name="f16"></a><img src="/img/revistas/jit/n14/a04_figura30.gif" width="379" height="310"></p>     <p align="justify"><font face="Verdana" size="2">Racine<sup>17</sup> demuestra que la paralelización MPI puede </font><font face="Verdana" size="2">ser usada para acelerar el cálculo del estimador de regresión del Kernel, por medio del cálculo de ajustes de porciones de la muestra en diferentes computadoras. La <a href="#f16">figura 16</a> muestra el incremento en la velocidad de cálculo para problemas de econometría en un cluster de 12 computadoras.</font></p>     <p align="justify"><font face="Verdana" size="2">El incremento para <i>k </i>nodos es el tiempo para finalizar el problema en un solo nodo dividido entre el tiempo para finalizar el problema en <i>k </i>nodos. Se obtiene un incremento de 10X.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">Como se aprecia en el gráfico, la regresión Kernel es la que incrementa la velocidad de cálculo, seguida por Montecarlo, Bootstrap, MLE y GMM, en ese mismo orden.</font></p>     <p align="justify"><font face="Verdana" size="2">Este algoritmo es el que se uso para la investigación con el soporte del software Octave en tres diferentes condiciones.</font></p>     <p align="justify"><font face="Verdana" size="2"><i>1)    Cálculo solo en el nodo maestro</i></font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura31.gif" width="377" height="316"></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura32.gif" width="398" height="281"></p>     <p align="center"><font face="Verdana" size="2"><i>t<sub>max</sub> = </i>264,369s   (2 Proceso / 10000 Datos) </font></p>     <p align="center"><font face="Verdana" size="2"><i>t<sub>min</sub> = </i>0,157s   (8 Procesos / 1000 Datos)</font></p>     <p align="justify"><font face="Verdana" size="2"><i>2)    Cálculo utilizando todo el cluster</i></font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura33.gif" width="373" height="303"></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura34.gif" width="394" height="255"></p>     ]]></body>
<body><![CDATA[<p align="center"><font face="Verdana" size="2"><i>t<sub>max</sub> = </i>45,155s   (3 Proceso / 10000 Datos) </font></p>     <p align="center"><font face="Verdana" size="2"><i>t<sub>min</sub> = </i>0,146s   (8 Procesos / 1000 Datos)</font></p>     <p align="justify"><font face="Verdana" size="2"><i>3)    Cálculo utilizando solo los nodos esclavos</i></font></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura35.gif" width="381" height="316"></p>     <p align="center"><img src="/img/revistas/jit/n14/a04_figura36.gif" width="404" height="274"></p>     <p align="center"><font face="Verdana" size="2"><i>t<sub>max</sub> = </i>1,038s   (2 Proceso / 10000 Datos)</font></p>     <p align="center"><font face="Verdana" size="2"> <i>t<sub>min</sub> = </i>0,02s   (6 Procesos / 1000 Datos)</font></p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana" size="3"><b>VI.   CONCLUSIONES</b></font></p>     <blockquote>       ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Se comprobó que el benchmarck del cluster es la suma algebraica de los benchmark de cada uno de los nodos que constituyen el cluster.</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Se obtuvo un incremento muy grande en el tiempo de cálculo en los programas con los que se realizó esta investigación.</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Se debe tener cuidado al definir si el nodo maestro trabajará en conjunto con el cluster, ya que de ser así se producen dos tipos de resultados.</font></p>       <blockquote>         <p align="justify"><font face="Verdana" size="2">- Cuando el nodo maestro también trabaja se producen colas en la red y esto hace que el </font><font face="Verdana" size="2">tiempo de total se incremente ya que el nodo maestro recibe los resultados de los nodos esclavos solamente después de acabar con su propio trabajo. Pero dado que los cálculos se han realizado en una cantidad mayor de procesos se obtiene un error menor.</font></p>         <p align="justify"><font face="Verdana" size="2">- Cuando el nodo maestro no trabaja con el cluster, solo se encarga de enviar trabajos y recibir resultados, con lo que la red no se encuentra congestionada ya que cada nodo envía sus resultados al maestro y este comienza a procesarlos inmediatamente, y se encuentra en la capacidad de enviar nuevamente trabajos a los nodos que hayan finalizado para que cada nodo del cluster se encuentre activo en todo momento. Dado que los cálculos se realizan en menor cantidad de procesos se obtiene un error mayor, pero este error se puede subsanar enviando una mayor cantidad de paquetes a cada procesador de forma asincrona.</font></p>   </blockquote>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Dado que la conexión de red es el medio de comunicación entre los nodos, y gracias a que se utilizó conexión con cable de par trenzado, se puede concluir que el tiempo de proceso se puede disminuir aún mucho más si se utilizara otro tipo de tecnología como fibra óptica.</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Se vio que existen diversas utilidades y librerías que contienen herramientas para programar en paralelo, y no estrictamente obligatorio que estos se ejecuten en un cluster ya que las computadoras actuales tienen dos o más núcleos y dichos procesadores tienen la capacidad para correr los mismos programas, incluso con menor tiempo en ejecución ya que tienen un bus interno compartido entre los núcleos para el intercambio de datos. Es decir muchos de los programas que utilizamos en la vida cotidiana se están ejecutando en paralelo sin que nosotros nos percatemos de ello.</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Por otra parte se puede ver que cuando un programa se ejecuta en muchos núcleos de baja frecuencia, tiene un tiempo de ejecución parecido al mismo programa ejecutado en un solo procesador de alta frecuencia, pero a se puede mencionar a favor de la programación paralela que muchos núcleos de baja frecuencia son mucho mas baratos en conjunto que un solo núcleo de alta frecuencia. Esta es una de las razones por las cuales se dio el cambio de tecnología de los procesadores mono-núcleo a multi-núcleo.</font></p>       <p align="justify"><font face="Verdana" size="2">•&nbsp; &nbsp;Por último se concluye que cualquier programa optimizado para correr en un ambiente paralelo termina en mucho menor tiempo que en un ambiente serial.</font></p> </blockquote>     ]]></body>
<body><![CDATA[<p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana" size="3"><b>NO</b></font><font face="Verdana" size="3"><b>TAS</b></font></p>     <p align="justify"><font face="Verdana" size="2"><sup>1</sup> Network File System</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>2 </sup>Data Analytics Supercomputer </font></p>     <p align="justify"><font face="Verdana" size="2"><sup>3</sup> Network Attached Storage</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>4</sup>&nbsp; Host Channel Adapter</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>5</sup>&nbsp; Target Channel Adapter</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>6</sup>&nbsp; Scalable Coherent Interface</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>7</sup>&nbsp; Integrated Device Electronics</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>8</sup>&nbsp; Advanced Technology Attachment</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="2"><sup>9</sup> Network Attached Storage</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>10</sup>&nbsp; Network File System</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>11</sup>&nbsp; Open System Interconnection</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>12</sup>&nbsp; Carrier Sense M&uacute;ltiple Access with Colusi&oacute;n Detection</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>13</sup>&nbsp; Secure SHell</font></p>     <p align="justify"><font size="2" face="Verdana"><sup>14</sup>&nbsp;<a href="http://es.wikipedia.org/wiki/Ataque_de_REPLAY" target="_blank">http://es.wikipedia.org/wiki/Ataque_de_REPLAY</a></font></p>     <p align="justify"><font face="Verdana" size="2"><sup>15</sup> Message Passing Interface</font></p>     <p align="justify"><font face="Verdana" size="2"><sup>16</sup> <a href="http://en.wikipedia.org/wiki/Monte_Carlo_method" target="_blank">http://en.wikipedia.org/wiki/Monte_Carlo_method</a></A></font></p>     <p align="justify"><font face="Verdana" size="2"><sup>17</sup> Jeffrey Scott Racine - Journal of Applied Econometrics - Abril 2012 </font></p>     <p align="justify">&nbsp;</p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana" size="3"><b>Referencias</b></font></p>     <!-- ref --><p align="justify"><font face="Verdana" size="2">[1] Michael R Anderberg. <i>Cluster analysis for applications. </i>Inf. téc. DTIC Document, 1973.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scieloOrg/php/reflinks.php?refpid=S1234-1234201400010000400001&pid=S1234-12342014000100004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');"></a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana" size="2">[2] Rajkumar Buyya. &quot;High performance cluster computing&quot;. En: <i>New Jersey: F'rentice </i>(1999).</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scieloOrg/php/reflinks.php?refpid=S1234-1234201400010000400002&pid=S1234-12342014000100004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');"></a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana" size="2">[3] Daniel Jiménez González. <i>Multiprocesadores y multicomputadores. </i>Espa&ntilde;ol. Inf. téc. Universitat Oberta de Catalunya, 2010.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scieloOrg/php/reflinks.php?refpid=S1234-1234201400010000400003&pid=S1234-12342014000100004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');"></a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana" size="2">[4] Landmann. <i>Red Hat Enterprise Linux 6 Visión general de Cluster Suite. </i>Espa&ntilde;ol. Red Hat. 2010.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scieloOrg/php/reflinks.php?refpid=S1234-1234201400010000400004&pid=S1234-12342014000100004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');"></a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana" size="2">[5] Thomas Lawrence Sterling. <i>Beowulf cluster computing with Linux. </i>MIT press, 2002.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scieloOrg/php/reflinks.php?refpid=S1234-1234201400010000400005&pid=S1234-12342014000100004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');"></a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana" size="2">[6] Thomas Lawrence Sterling. <i>Beowulf Cluster Computing with Windows. </i>MIT Press, 2002.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scieloOrg/php/reflinks.php?refpid=S1234-1234201400010000400006&pid=S1234-12342014000100004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');"></a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana" size="2">[7] Peter Strazdins y John Uhlmann. &quot;A comparison of local and gang scheduling on a beowulf cluster&quot;. En: <i>Cluster Computing, 2004 IEEE International Conference on. </i>IEEE. 2004, págs. 55-62.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scieloOrg/php/reflinks.php?refpid=S1234-1234201400010000400007&pid=S1234-12342014000100004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');"></a>&#160;]<!-- end-ref --><p align="justify">&nbsp;</p>      ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Anderberg]]></surname>
<given-names><![CDATA[Michael R]]></given-names>
</name>
</person-group>
<source><![CDATA[Cluster analysis for applications: Inf. téc. DTIC Document]]></source>
<year>1973</year>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Rajkumar]]></surname>
<given-names><![CDATA[Buyya]]></given-names>
</name>
</person-group>
<source><![CDATA[High performance cluster computing]]></source>
<year>1999</year>
<publisher-loc><![CDATA[New Jersey ]]></publisher-loc>
<publisher-name><![CDATA[F'rentice]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jiménez González]]></surname>
<given-names><![CDATA[Daniel]]></given-names>
</name>
</person-group>
<source><![CDATA[Multiprocesadores y multicomputadores]]></source>
<year>2010</year>
<publisher-name><![CDATA[Universitat Oberta de Catalunya]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Landmann]]></surname>
</name>
</person-group>
<source><![CDATA[Red Hat Enterprise Linux 6 Visión general de Cluster Suite]]></source>
<year>2010</year>
<publisher-name><![CDATA[Red Hat]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lawrence Sterling]]></surname>
<given-names><![CDATA[Thomas]]></given-names>
</name>
</person-group>
<source><![CDATA[Beowulf cluster computing with Linux]]></source>
<year>2002</year>
<publisher-name><![CDATA[MIT press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lawrence Sterling]]></surname>
<given-names><![CDATA[Thomas]]></given-names>
</name>
</person-group>
<source><![CDATA[Beowulf Cluster Computing with Windows]]></source>
<year>2002</year>
<publisher-name><![CDATA[MIT Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Strazdins]]></surname>
<given-names><![CDATA[Peter]]></given-names>
</name>
<name>
<surname><![CDATA[Uhlmann]]></surname>
<given-names><![CDATA[John]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A comparison of local and gang scheduling on a beowulf cluster]]></article-title>
<source><![CDATA[Cluster Computing, 2004 IEEE International Conference on IEEE]]></source>
<year>2004</year>
<page-range>55-62</page-range></nlm-citation>
</ref>
</ref-list>
</back>
</article>
