Use Beowulf para hacer que las PC comunes se agrupen

  

Uso de Beowulf para transformar PC comunes

Ahora, Linux tiene una influencia muy importante en la industria de TI, a excepción de sus ventajas de ser gratis, eficiente y confiable, para los científicos de la computación y aquellos que necesitan mucho Para los científicos de computación, todavía es una herramienta muy poderosa. Desde que Donald Becker lanzó la computación en clúster Beowulf, Thomas Sterling, quien trabaja en el Centro de Vuelo Espacial Goddard de la NASA, ha ampliado el uso de Linux de computación paralela de alto rendimiento.

Ahora, Linux tiene una influencia muy importante en la industria de TI. Además de sus ventajas de ser libre, eficiente y confiable, sigue siendo muy importante para los científicos de computación y los científicos que necesitan realizar muchos cálculos. Herramientas potentes. Desde que Donald Becker lanzó la computación en clúster Beowulf, Thomas Sterling, quien trabaja en el Centro de Vuelo Espacial Goddard de la NASA, ha ampliado el uso de Linux de computación paralela de alto rendimiento. Hoy en día, una gran cantidad de clusters ordinarios basados ​​en PC aparecen en laboratorios, centros de tecnología industrial, universidades e incluso colegios pequeños en todos los niveles. ¿Si alguien pregunta si una pregunta sobre informática científica puede resolverse con algunos recursos informáticos sueltos? La respuesta es por supuesto. Podemos usar el clúster de Beowulf, que puede usar una gran cantidad de PC comunes para hacer un clúster para resolver los problemas que enfrentamos, y la ventaja de precio de este clúster no es comparable con los computadores paralelos tradicionales.

Cómo crear un clúster Beowulf

De hecho, cualquier persona que use una PC existente o una PC no utilizada puede construir un sistema paralelo propio para practicar la programación paralela o la computación paralela. En un laboratorio de computación, podemos convertir una PC en un sistema de arranque dual (puede ingresar Windows o Linux según sea necesario) para dos propósitos. Además, para aquellas máquinas que ya no se usan, puede hacer un sistema de computación paralelo como Stone SouperComputer.

No hay dos grupos de Beowulf son idénticos. De hecho, la configuración de hardware y software de tal sistema es tan flexible que se puede personalizar fácilmente en diferentes combinaciones. Aunque cada sistema de clúster de Beowulf es diferente y su configuración se basa en las necesidades de la aplicación, existen algunos requisitos básicos que son los mismos. Echemos un vistazo a algunos de los problemas básicos que se deben tener en cuenta al crear un clúster.

Crear un requisito mínimo para un clúster

Para crear un clúster, cada nodo debe contener al menos una CPU Intel 486 y una placa base. Aunque Intel 386 puede funcionar correctamente, su rendimiento no valdrá la pena. Los requisitos de memoria dependen de las necesidades de la aplicación de destino, pero cada nodo requiere al menos 16 MB de memoria. La mayoría de las aplicaciones requieren que cada nodo tenga más de 32 MB de memoria. Al utilizar el espacio en disco centralizado, los nodos pueden arrancar desde disquetes, discos duros de pequeña capacidad o sistemas de archivos de red. Después del arranque, el nodo puede acceder a su propia partición raíz en el sistema de archivos a través de la red. Este tipo de acceso generalmente se implementa mediante NFS (Network File System). En un entorno con servidores de alto ancho de banda y alto rendimiento, esta configuración funcionará muy bien. Para obtener un mejor rendimiento, se debe instalar un sistema operativo, una partición de intercambio en el disco local y se pueden obtener datos en cada nodo. Cada nodo debe tener al menos 200 MB de espacio en disco para los componentes del sistema operativo y para el espacio de intercambio, y debe tener 400 MB o más de espacio reservado para la ejecución del programa. Cada nodo debe contener al menos una tarjeta de red (preferiblemente una tarjeta de red de alta velocidad). Finalmente, cada nodo requiere una tarjeta gráfica, un disco duro y una fuente de alimentación. Los teclados y monitores solo son necesarios para la instalación y configuración del sistema.


Se debe tener en cuenta que todo el hardware seleccionado para su uso debe tener controladores o módulos correspondientes en Linux. En general, a menos que el hardware sea muy antiguo, no es un problema. Para el nodo primario que necesita administrar todo el clúster, es mejor instalar un servidor X para su comodidad. Durante el proceso de instalación, si hay un problema con un componente en particular o no hay un controlador, puede acudir al foro para obtener ayuda.

Conexiones de red

Si es posible, cada nodo está preferiblemente en una LAN independiente y tiene su propio concentrador. Esto garantiza una comunicación de red sin problemas. El primer nodo o nodo primario del clúster debe tener dos tarjetas de red, una conectada a la red interna y la otra conectada a la red pública. Esto es especialmente útil para inicios de sesión de usuarios y transferencias de archivos. En la red interna, necesita usar una dirección IP que no se usa en Internet. En general, la forma más fácil es la dirección de clase A 10.0.0.0, porque estas direcciones están reservadas para redes que no tienen rutas. En este ejemplo, el archivo /etc /hosts para cada nodo tiene este aspecto:

10.0.0.1 node110.0.0.2 node210.0.0.3 node310.0.0.4 node4

El archivo /etc/hosts.equiv para cada nodo debe tener este aspecto:

node1node2node3node4.

Un número de nodo es 2, y el archivo de configuración ifcfg-eth0 con Red Hat Linux es el siguiente :

DEVICE = eth0IPADDR = 10.0.0.2NETMASK = 255.0.0.0NETWORK = 10.0.0.0BROADCAST = 10.255.255.255ONBOOT = yes

Además, a menudo necesitamos un DNS para esos nodos. Esto es especialmente cierto para las redes internas donde los nombres y las direcciones cambian con frecuencia. DNS puede ejecutarse en el primer nodo para proporcionar resolución de nombre /dirección para los nodos en la red interna.

Almacenamiento local

En el tema de la carga de un sistema operativo, la creación de un clúster de Beowulf requiere algunas decisiones de configuración de almacenamiento por adelantado. Debido a que todos los nodos deben volver a instalarse una vez que se haya completado la instalación, es importante considerarlos con mucho cuidado. Mientras que la mayoría de los clusters de Beowulf basados ​​en Linux ejecutan las distribuciones de Red Hat Linux, prácticamente todas las distribuciones de Linux admiten clústeres básicos. La instalación de Red Hat es muy simple, podemos usar el CD o el primer nodo del clúster para instalar (siempre que ya haya una copia de la distribución en el nodo). En el proceso de uso real, muchas personas encuentran que es mejor cargar el sistema operativo en cada nodo desde el nodo maestro a través de FTP que montar la partición raíz a través de NFS. Este enfoque evita la comunicación innecesaria de la red y reserva el ancho de banda para la transferencia de información mientras la aplicación se está ejecutando.

El entorno de ejecución de Red Hat Linux requiere solo unos 100 MB de espacio en disco por nodo. Sin embargo, en la práctica es necesario incluir una compilación y algunas otras herramientas en cada nodo. Por lo tanto, en la configuración, cada sistema operativo requiere aproximadamente 175 MB de espacio en disco. Aunque algunos clústeres tienen particiones de intercambio configuradas en un sistema de archivos común, usar una partición de intercambio dedicada en un disco local es una opción más eficiente. En general, el espacio de intercambio de un nodo debe ser el doble del tamaño de la memoria, y cuando la memoria es mayor que 64 MB, el espacio de intercambio debe ser igual al tamaño de la memoria. En la práctica, cuando la memoria es de 64 MB a 128 MB, generalmente configuramos la partición de intercambio en 128 MB. Por lo tanto, si un nodo tiene 32 MB de memoria y hay 2 discos duros, deberíamos cargar el sistema Linux en la unidad principal. Utilice otro disco duro como espacio de intercambio (64 MB) y espacio de ejecución local (138 MB).

Cluster Management

La administración y mantenimiento del sistema es una tarea muy tediosa, especialmente para clusters grandes. Sin embargo, podemos encontrar algunas herramientas y scripts en línea para simplificar estas tareas. Por ejemplo, un nodo debe sincronizarse con otros nodos en tiempo y archivos de sistema (/etc /passwd, /etc /group, /etc /hosts, /etc/hosts.equiv, etc.), por lo que cron puede cronometrar uno simple. El script ejecutado podrá completar este proceso de sincronización.

Una vez que todos los nodos han sido cargados y configurados, podemos desarrollar y diseñar aplicaciones paralelas para aprovechar al máximo la capacidad de cálculo del nuevo sistema.

Desarrollando aplicaciones paralelas para la computación en clúster

Bajo Linux, podemos usar compiladores comerciales o compiladores gratuitos. Los compiladores GCC, g ++ y FORTRAN (g77) están incluidos en la mayoría de las distribuciones de Linux. Los compiladores C y C ++ ya son muy buenos, y el compilador FORTRAN está en constante evolución. Los compiladores comerciales están disponibles de compañías como Absoft, Portland Group y The Numerical Algorithms Group. Algunos compiladores comerciales de FORTRAN-90 pueden automatizar la computación en paralelo si se configuran correctamente. En general, el desarrollo de código paralelo requiere el uso de PVM (máquina virtual paralela), MPI (interfaz de transferencia de información) u otras bibliotecas de comunicación entre procesadores para una transferencia de información clara. Tanto PVM como MPI son gratuitos, y la transferencia de información entre nodos se puede lograr a través de simples llamadas a la biblioteca durante el proceso de cálculo.

Por supuesto, no todas las tareas de computación son adecuadas para la computación paralela. En general, para aprovechar al máximo las ventajas de la computación paralela, generalmente es necesario realizar un trabajo de desarrollo para la tarea. Muchos problemas científicos pueden subdividirse, es decir, se pueden dividir en módulos relativamente independientes para que puedan procesarse en nodos separados. Por ejemplo, las tareas de procesamiento de imágenes generalmente se pueden subdividir para que cada nodo pueda procesar una parte determinada de la imagen. Cuando una imagen se puede procesar de forma independiente (como el procesamiento de esta parte de la imagen no requiere otras partes de la información), el efecto es mejor.

Para la computación paralela, la falla más peligrosa es convertir un problema computacional en un problema de comunicación (ya sea utilizando un código paralelo existente o un nuevo código de desarrollo). Este problema generalmente ocurre cuando la tarea se pule en exceso, de modo que cada nodo transfiere datos para que la sincronización exceda el tiempo que calcula la CPU. En este caso, el uso de menos nodos puede dar como resultado un mayor tiempo de ejecución y un uso más eficiente de los recursos. Es decir, para diferentes aplicaciones paralelas, los ajustes y las optimizaciones se realizan en función de la carga y la comunicación calculadas por el nodo local.

Lo último que hay que decir es que cuando se desarrollan algoritmos paralelos, si los nodos del entorno de clúster utilizados son diferentes, este problema debería considerarse por completo. De hecho, cuando se ejecuta una aplicación paralela, la velocidad de la CPU entre los nodos es muy crítica. Por lo tanto, en un clúster con diferentes configuraciones, las tareas se distribuyen de manera uniforme, por lo que la CPU más rápida debe esperar la velocidad. Obviamente, no es razonable que una CPU más lenta complete sus propias tareas. Por lo tanto, diseñar un algoritmo apropiado puede manejar esta situación bien. Por supuesto, no importa qué algoritmo se use, el problema de sobrecarga de comunicación debe ser considerado completamente.

El procesamiento paralelo se puede organizar de muchas maneras, pero el maestro /esclavo está organizado de la manera más fácil para entender y escribir programas. En este modo, un nodo actúa como maestro, mientras que el otro como el nodo Slave.Master generalmente decide cómo dividir la tarea y la transmisión de la información del comando, mientras que el nodo esclavo solo es responsable de procesar las tareas asignadas, y cuando se completa la tarea. Informe al maestro.

Resumen

De hecho, cuando se desarrolla un código paralelo, no existe una regulación estricta, pero se debe llevar a cabo de acuerdo con la situación real. El requisito previo para optimizar la configuración del hardware y los algoritmos es conocer los detalles de la aplicación que se ejecutará. En una configuración de clúster diferente de cada nodo, el equilibrio de carga en cada nodo y la comunicación en cada nodo depende de la situación específica del hardware. En un entorno con velocidad de comunicación rápida, las tareas se pueden dividir más finamente y viceversa.

Se debe decir que el "Movimiento Beowulf" popularizará la computación paralela. El código paralelo desarrollado en el sistema Beowulf mediante bibliotecas de mensajería estándar puede ejecutarse directamente en supercomputadoras de nivel comercial sin ningún cambio. Por lo tanto, el clúster de Beowulf se puede utilizar como punto de entrada para comenzar y hacer la transición al mainframe cuando sea necesario. Además, un clúster barato y versátil significa que los entornos de computadora paralelos se pueden usar para tareas específicas, mientras que las grandes supercomputadoras comerciales son demasiado caras para enfocarse en una sola aplicación. Obviamente, a medida que más y más entornos paralelos se apliquen al trabajo en el mundo real, promoverá aún más su aplicación en diversos campos.

Copyright © Conocimiento de Windows All Rights Reserved