Note:

Uso de MPI abierto en Oracle Roving Edge Infrastructure

Introducción

Oracle Roving Edge Infrastructure es una plataforma de almacenamiento y computación en la nube reforzada adecuada para el despliegue en el borde de la red o en ubicaciones con conectividad externa limitada o nula. A medida que las cargas de trabajo más grandes, más complejas y exigentes avanzan hacia el borde de la red, esto puede presentar desafíos para una infraestructura perimetral.

Open MPI es una implementación del estándar Message Passing Interface (MPI) que se utiliza para desarrollar aplicaciones paralelas en recursos informáticos de alto rendimiento (HPC). El MPI abierto se puede utilizar para desplegar recursos informáticos de alto rendimiento y cargas de trabajo muy paralelas en infraestructuras relativamente más pequeñas que, a continuación, funcionan como un conjunto de recursos agregado y más grande. Este enfoque se puede utilizar para distribuir una carga de trabajo a la CPU y otros recursos informáticos, como la GPU, lo que permite el despliegue de tareas más grandes e intensivas en computación en el borde de la red, como el modelado predictivo u otras tareas de inteligencia artificial/aprendizaje automático (IA/AA).

El MPI abierto se puede utilizar para desplegar cargas de trabajo paralelas con recursos en los nodos de Oracle Roving Edge Infrastructure. Netfilter proporciona la traducción de direcciones de red de destino (DNAT) y la traducción de direcciones de red de origen (SNAT) necesarias para las instancias de VM mediante el software de agrupación en clusters alojado en los nodos de Oracle Roving Edge Infrastructure. En este tutorial se implanta Open MPI mediante Netfilter en Oracle Roving Edge Infrastructure que ejecuta una calculadora de número primo para demostrar un rendimiento mejorado al utilizar recursos paralelos.

Antecedentes

El MPI abierto se puede ejecutar en varias instancias de máquina virtual (VM) en un único nodo de Oracle Roving Edge Infrastructure o en varios nodos de Oracle Roving Edge Infrastructure. La ejecución en un único nodo de Oracle Roving Edge Infrastructure es perfecta y no plantea ningún problema. Al ejecutar en varios nodos de Oracle Roving Edge Infrastructure, es importante comprender las redes en las instancias de máquina virtual de Oracle Roving Edge Infrastructure y cómo Open MPI enruta el tráfico para evitar posibles problemas.

Redes en instancias de máquina virtual de Oracle Roving Edge Infrastructure

Las instancias de máquina virtual que se ejecutan en Oracle Roving Edge Infrastructure utilizan direcciones IP privadas para comunicarse con otras instancias de máquina virtual de la misma subred alojada en el mismo nodo. Las direcciones IP públicas se pueden asignar a instancias de máquina virtual alojadas en Oracle Roving Edge Infrastructure para permitir que las instancias se comuniquen con otras subredes y recursos que se ejecuten fuera del nodo de Oracle Roving Edge Infrastructure donde se aloja.

Nota: Las direcciones IP públicas se asignan a las VNIC de instancias de VM desde un pool de direcciones IP públicas. Aunque las direcciones se denominan IP públicas, en realidad son direcciones IP de la misma red local en la que el nodo de Oracle Roving Edge Infrastructure está conectado mediante su puerto RJ-45. Estas direcciones pueden ser una dirección IPv4 a la que se pueda acceder desde Internet o son direcciones de una subred privada en la red local. Estas direcciones también se denominan direcciones IP externas, ya que se pueden conectar a recursos externos al nodo donde se aloja la instancia de VM.

Es importante comprender que cuando una instancia de máquina virtual que se ejecuta en un nodo de Oracle Roving Edge Infrastructure intenta acceder a recursos fuera del nodo, el tráfico pasa por la dirección IP externa que se enruta dentro del nodo y hacia fuera a la conexión de red externa.

En la siguiente imagen se muestra una instancia de VM de ejemplo en el nodo de Oracle Roving Edge Infrastructure. Observe las direcciones IP públicas y privadas asignadas.

Instancia de VM de ejemplo en un nodo de Oracle Roving Edge Infrastructure

Desafíos para ejecutar MPI abierto en varios nodos de Oracle Roving Edge Infrastructure

El uso de direcciones IP privadas de instancias de VM es problemático para el software de agrupación en clusters, como Open MPI, cuando se implanta en varios nodos de Oracle Roving Edge Infrastructure. Cada nodo desconoce las asignaciones de direcciones IP privadas a públicas y la traducción de las asignaciones de instancias de máquina virtual alojadas en otros nodos. Dado que las asignaciones no se comparten, los paquetes que utilizan direcciones IP privadas se enrutan incorrectamente o se pierden.

Un ejemplo de cómo podría verse este problema usando MPI abierto:

Si se abre MPI en instancias de VM, se intentará determinar la mejor ruta de red para acceder a otros miembros de instancias de VM. El software puede examinar las interfaces locales y las direcciones IP y registrarlas con otros nodos del cluster.

Implementación de MPI abierto en Oracle Roving Edge Infrastructure

Para abordar la naturaleza no compartida de la red interna de Oracle Roving Edge Infrastructure, el software de Netfilter en las instancias de máquina virtual de Linux se utiliza para reescribir los paquetes de red que provienen de máquinas virtuales alojadas en otros nodos de Oracle Roving Edge Infrastructure y que están destinados a ellas.

Consideraciones de designación

En este tutorial, se utilizan tres nodos de Oracle Roving Edge Infrastructure Roving Edge Devices (RED) para crear un cluster de MPI abierto. Todos los RED están conectados a una red externa compartida. Cada nodo se ha configurado con su propio pool de IP externa para la asignación a instancias de VM.

Tabla CIDR de VCN y subred

Nombre de RED CIDR de VCN CIDR de subred
RED1 10/16 10/24
RED2 10/16 10/24
RED3 10/16 10/24

Este ejemplo se muestra en la siguiente imagen, dos configuraciones de red de dos RED diferentes.

Ejemplo de VCN y subred en "RED1"

Ejemplo de VCN y subred en "RED2"

Público Objetivo

Administradores, desarrolladores y usuarios de Oracle Roving Edge Infrastructure.

Objetivos

Requisitos

Tarea 1: Creación de instancias de máquina virtual

Cree una instancia de VM en cada subred de cada RED.

Ejemplo de asignaciones de direcciones IP:

Nombre de RED Nombre de VM VM O/S IP Privada de VM IP pública de VM
RED1 redvm1 Ubuntu 22.04 10/24 10,123
RED2 redvm2 Ubuntu 22.04 10/24 10,123
RED3 redvm3 Ubuntu 22.04 10/24 10,123

Nota: Las instancias de VM de esta tarea se crean mediante una imagen exportada desde Oracle Cloud Infrastructure (OCI) mediante OCI Ubuntu 22.04 LTS. Se puede utilizar cualquier distribución de Linux con paquetes MPI abiertos adecuados, por ejemplo, Oracle Linux 8 o 9, Fedora, etc.

Ejemplo de lista de máquinas virtuales en "RED3"

  1. En cada RED, vaya a Recursos informáticos, Instancia y haga clic en Crear instancia.

  2. En Crear instancia informática, introduzca Nombre, seleccione la imagen personalizada importada, Unidad, Configurar red, Claves SSH y haga clic en Crear.

    Creación de una imagen informática en cada RED

Tarea 2: Instalación del paquete MPI abierto en cada instancia de VM

Una vez que se hayan creado todas las instancias de VM, conéctese a cada instancia de VM a través de SSH con la clave proporcionada durante el aprovisionamiento. Los siguientes comandos son adecuados para Ubuntu 22.04, puede que necesite adaptar estas instrucciones o incluir repositorios de paquetes adicionales si utiliza una distribución de Linux diferente.

  1. Ejecute el siguiente comando para actualizar el sistema y reiniciar.

    sudo apt update && sudo apt upgrade -y
    

    Esto puede tardar. Cuando esto termine, reinicie la instancia.

    sudo shutdown -r now
    
  2. Inicie sesión en la instancia e instale los paquetes MPI abiertos.

    Nota:

    • Esto extraerá bastantes dependencias.

    • El paquete libopenmpi-dev solo es necesario para compilar posteriormente un programa de ejemplo con el que realizar la prueba. Si no va a compilar funciones de Open MPI en programas, este paquete no es necesario.

    sudo apt install openmpi-bin libopenmpi-dev -y
    

Tarea 3: Configuración de la traducción de direcciones de red de destino (DNAT) y la traducción de direcciones de red de origen (SNAT)

  1. Vea los detalles de cada instancia de máquina virtual iniciada y anote las direcciones IP públicas privadas y asignadas aleatoriamente. Vaya a Recursos informáticos, Instancia y haga clic en el nombre de la instancia para ver los detalles.

    VM de ejemplo en "RED3"

  2. Cree los SNAT.

    • Si asignamos las reglas SNAT para cada máquina virtual de una tabla, debería tener el siguiente aspecto:

      Italiano Procedente de RED1 Procedente de RED2 Procedente de RED3
      En redvm1 N/A Entrada src 10.123.123.67 SNAT to src 10.0.2.2 Entrada src 10.123.123.101 SNAT to src 10.0.3.2
      En redvm2 Entrada src 10.123.123.32 SNAT to src 10.0.1.2 N/A Entrada src 10.123.123.101 SNAT to src 10.0.3.2
      En redvm3 Entrada src 10.123.123.32 SNAT to src 10.0.1.2 Entrada src 10.123.123.67 SNAT to src 10.0.2.2 N/A
    • Utilice los comandos iptables para cada máquina virtual.

      • En redvm1.

        sudo iptables -I INPUT --src 10.123.123.0/24 -j ACCEPT -m comment --comment "Allow REDs public subnet access."
        sudo iptables -t nat -I INPUT -p tcp -s 10.123.123.67 -j SNAT --to-source 10.0.2.2
        sudo iptables -t nat -I INPUT -p tcp -s 10.123.123.101 -j SNAT --to-source 10.0.3.2
        sudo netfilter-persistent save
        
      • En redvm2.

        sudo iptables -I INPUT --src 10.123.123.0/24 -j ACCEPT -m comment --comment "Allow REDs public subnet access."
        sudo iptables -t nat -I INPUT -p tcp -s 10.123.123.32 -j SNAT --to-source 10.0.1.2
        sudo iptables -t nat -I INPUT -p tcp -s 10.123.123.101 -j SNAT --to-source 10.0.3.2
        sudo netfilter-persistent save
        
      • En redvm3.

        sudo iptables -I INPUT --src 10.123.123.0/24 -j ACCEPT -m comment --comment "Allow REDs public subnet access."
        sudo iptables -t nat -I INPUT -p tcp -s 10.123.123.32 -j SNAT --to-source 10.0.1.2
        sudo iptables -t nat -I INPUT -p tcp -s 10.123.123.67 -j SNAT --to-source 10.0.2.2
        sudo netfilter-persistent save
        

      Nota: La adición de la primera regla (sudo iptables -I INPUT --src 10.123.123.0/24 -j ACCEPT) para permitir el acceso desde la subred que los RED utilizan para sus IP públicas. Sin esto (o una regla similar), es probable que el tráfico entrante de RED a RED sea eliminado por el RED receptor. En estas máquinas virtuales, las nuevas reglas se mantienen con sudo netfilter-persistent save; sin embargo, es probable que este comando sea otra cosa si utiliza una distribución de Linux diferente.

  3. Cree los DNAT.

    • Del mismo modo, si asignamos las reglas DNAT para cada máquina virtual de una tabla, debería tener el siguiente aspecto:

      DNAT Ir a RED1 Ir a RED2 Ir a RED3
      En redvm1 N/A Salida dst 10.0.2.2 DNAT to dst 10.123.123.67 Salida dst 10.0.3.2 DNAT to dst 10.123.123.101
      En redvm2 Salida dst 10.0.1.2 DNAT to dst 10.123.123.32 N/A Salida dst 10.0.3.2 DNAT to dst 10.123.123.101
      En redvm3 Salida dst 10.0.1.2 DNAT to dst 10.123.123.32 Salida dst 10.0.2.2 DNAT to dst 10.123.123.67 N/A
    • Utilice los comandos iptables para cada máquina virtual.

      • En redvm1.

        sudo iptables -t nat -I OUTPUT -p tcp -d 10.0.2.2 -j DNAT --to-destination 10.123.123.67
        sudo iptables -t nat -I OUTPUT -p tcp -d 10.0.3.2 -j DNAT --to-destination 10.123.123.101
        sudo netfilter-persistent save
        
      • En redvm2.

        sudo iptables -t nat -I OUTPUT -p tcp -d 10.0.1.2 -j DNAT --to-destination 10.123.123.32
        sudo iptables -t nat -I OUTPUT -p tcp -d 10.0.3.2 -j DNAT --to-destination 10.123.123.101
        sudo netfilter-persistent save
        
      • En redvm3.

        sudo iptables -t nat -I OUTPUT -p tcp -d 10.0.1.2 -j DNAT --to-destination 10.123.123.32
        sudo iptables -t nat -I OUTPUT -p tcp -d 10.0.2.2 -j DNAT --to-destination 10.123.123.67
        sudo netfilter-persistent save
        

      Nota: En las instancias de VM, las nuevas reglas se mantienen con sudo netfilter-persistent save.

Tarea 4: Configurar MPI abierto

MPI abierto utiliza SSH para comunicarse entre los miembros del cluster, por lo que hay algunas cosas que se deben tener en cuenta para poder ejecutar trabajos.

  1. MPI abierto utilizará las direcciones IP privadas de cada una de las máquinas virtuales, realizará las entradas /etc/hosts para cada instancia de máquina virtual y su dirección IP privada en cada instancia de máquina virtual de MPI abierta.

    Por ejemplo, si se utiliza la configuración anterior, la entrada /etc/hosts de redvm1 contendrá las siguientes entradas:

    127.0.0.1 localhost
    127.0.1.1 redvm1  redvm1
    10.0.2.2  redvm2
    10.0.3.2  redvm3
    

    En redvm2, /etc/hosts contendrá las siguientes entradas:

    127.0.0.1 localhost
    127.0.1.1 redvm2  redvm2
    10.0.1.2  redvm1
    10.0.3.2  redvm3
    

    En redvm3, /etc/hosts contendrá las siguientes entradas:

    127.0.0.1 localhost
    127.0.1.1 redvm3  redvm3
    10.0.1.2  redvm1
    10.0.2.2  redvm2
    
  2. También debemos asegurarnos de que exista la equivalencia SSH entre cada VM para que la utilice Open MPI.

    Nota: Se supone que se trata de máquinas virtuales nuevas que no contienen claves SSH existentes para el usuario de Ubuntu. Si utiliza máquinas virtuales más antiguas que ya han creado claves SSH, deberá adaptar estas instrucciones, estas instrucciones podrían sobrescribir las claves existentes y bloquearlo de las máquinas virtuales.

    1. En redvm1, cree un nuevo par de claves pública o privada (si aún no tiene claves creadas). Utilice el comando ssh-keygen similar a ssh-keygen -b 4096 -t rsa (acepte los valores por defecto, no defina una contraseña para las nuevas claves). Esto generará ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub.

    2. Agregue la nueva clave pública al archivo authorized_keys ejecutando cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys o copiándolas manualmente mediante un editor de texto.

    3. Copie id_rsa y id_rsa.pub en el directorio ~/.ssh del usuario ubuntu en redvm2 y redvm3. Asegúrese de agregar id_rsa.pub a authorized_keys, ejecute cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys en redvm2 y redvm3.

    4. Una vez hecho esto, desde cada máquina virtual, conéctese a todas las demás máquinas virtuales, incluida la propia máquina virtual, para garantizar que la conectividad funciona y que SSH confía en los otros hosts.

      • Conexión SSH en redvm1.

        ubuntu@redvm1:~$ ssh redvm1 date
        The authenticity of host 'redvm1 (127.0.1.1)' can't be established.
        ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
        This key is not known by any other names
        Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
        Warning: Permanently added 'redvm1' (ED25519) to the list of known hosts.
        Fri Apr  5 04:28:57 UTC 2024
        ubuntu@redvm1:~$
        ubuntu@redvm1:~$ ssh redvm2 date
        The authenticity of host 'redvm2 (10.0.2.2)' can't be established.
        ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
        This key is not known by any other names
        Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
        Warning: Permanently added 'redvm2' (ED25519) to the list of known hosts.
        Wed Jan 31 04:29:11 UTC 2024
        ubuntu@redvm1:~$
        ubuntu@redvm1:~$ ssh redvm3 date
        The authenticity of host 'redvm3 (10.0.3.2)' can't be established.
        ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
        This key is not known by any other names
        Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
        Warning: Permanently added 'redvm3' (ED25519) to the list of known hosts.
        Wed Jan 31 04:29:19 UTC 2024
        
    5. Repita los pasos anteriores para redvm2 conectándose a redvm2, redvm1 y redvm3 y redvm3 conectándose a redvm3, redvm1 y redvm2.

  3. Cree una ubicación de almacenamiento común para cada miembro del cluster.

    Nota: Lo ideal es que todas las instancias de máquina virtual que utilicen MPI abierto tengan una ubicación de almacenamiento compartida. Esto podría tomar la forma de NFS, GlusterFS, OCFS2 o cualquier número de otras soluciones de sistemas de archivos compartidos. Esto es especialmente importante si se necesita un directorio de trabajo o un juego de datos comunes para la carga de trabajo.

    No es necesario un sistema de archivos compartido para este ejemplo, solo una ubicación con un nombre común para nuestros binarios de prueba. En cada máquina virtual, cree la ubicación de nombre común /mpitest.

    sudo mkdir /mpitest && sudo chown ubuntu:ubuntu /mpitest
    

    Si usamos un sistema de archivos compartido, el sistema de archivos compartido se montará en esta ubicación en todas las instancias de máquina virtual.

  4. Cree un hostfile para utilizarlo con mpirun. Para obtener más información, consulte ¿Cómo puedo utilizar la opción -hostfile para mpirun?.

    1. Crearemos dos hostfiles para las pruebas. En redvm1, con nuestra ubicación de nombre común /mpitest creada anteriormente, cree un archivo /mpitest/mpihosts.txt con el siguiente contenido:

      redvm1
      redvm2
      redvm3
      
    2. Cree un archivo /mpitest/mpihosts_slots.txt con el siguiente contenido:

      redvm1 slots=1
      redvm2 slots=1
      redvm3 slots=1
      

Nota: En este tutorial, las pruebas solo se ejecutarán desde redvm1, por lo que no es necesario copiar estos archivos en redvm2 y redvm3. Si también desea ejecutar trabajos desde otras máquinas virtuales, deberá copiar estos archivos en otras instancias de máquina virtual o utilizar un sistema de archivos compartido adecuado, como NFS.

Tarea 5: Prueba de la instancia de VM

  1. Prueba sencilla de comandos distribuidos.

    • Una prueba simple es llamar a un comando como hostname en todos los miembros del cluster. Esta es la salida esperada que se ejecuta en tres nodos con el archivo slots=1 (mpihosts_slots.txt). La directiva slots informa a mpirun de cuántos procesos se pueden asignar a este nodo en lugar de a mpirun para determinar el número de procesos.

      Nota: Puede que sea necesario especificar slots si utiliza recursos limitados que no sean CPU (por ejemplo, GPU), donde desea limitar los procesos al número del otro recurso. Si no lo hace, los procesos pueden fallar debido a que no se pueden asignar los otros recursos.

      ubuntu@redvm1:~$ cd /mpitest
      
      ubuntu@redvm1:/mpitest$ cat mpihosts_slots.txt
      redvm1 slots=1
      redvm2 slots=1
      redvm3 slots=1
      
      ubuntu@redvm1:/mpitest$ mpirun --hostfile mpihosts_slots.txt hostname
      redvm1
      redvm2
      redvm3
      
    • Ejecute la misma prueba, pero sin especificar el archivo slots (mpihosts.txt), mpirun determinará las CPU disponibles y ejecutará el número de comandos hostname de CPU en cada nodo. Estas tres máquinas virtuales tienen 16 CPU, por lo que debemos obtener 3 x 16 respuestas (16 de cada nombre de host).

      ubuntu@redvm1:/mpitest$ cat mpihosts.txt
      redvm1
      redvm2
      redvm3
      
      ubuntu@redvm1:/mpitest$ mpirun --hostfile mpihosts.txt hostname | sort | uniq -c
          16 redvm1
          16 redvm2
          16 redvm3
      
  2. Cree un binario de prueba de MPI abierto.

    Para una prueba adecuada con un programa que utiliza Open MPI, utilizamos un ejemplo de calculadora de números primos de John Burkardt. Esto tendrá que ser descargado y compilado en redvm1. Para obtener más información, consulte Calculadora de números primos de John Burkardt.

    ubuntu@redvm1:~$ cd /mpitest
    
    ubuntu@redvm1:/mpitest$ curl https://people.sc.fsu.edu/~jburkardt/c_src/prime_mpi/prime_mpi.c -o prime_mpi.c
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                    Dload  Upload   Total   Spent    Left  Speed
    100  4699  100  4699    0     0   2990      0  0:00:01  0:00:01 --:--:--  2991
    
    ubuntu@redvm1:/mpitest$ mpicc prime_mpi.c -o prime_mpi
    
    ubuntu@redvm1:/mpitest$ ls -l prime_mpi
    -rwxrwxr-x 1 ubuntu ubuntu 16736 Apr  5 05:38 prime_mpi
    

    Dado que no se configura un sistema de archivos compartido para pruebas, el binario prime_mpi se debe copiar en redvm2 y redvm3 en la misma ubicación que en redvm1. Ejecute el siguiente comando.

    ubuntu@redvm1:/mpitest$ scp prime_mpi redvm2:/mpitest
    prime_mpi                                                                                                                     100%   16KB  27.4MB/s   00:00
    ubuntu@redvm1:/mpitest$ scp prime_mpi redvm3:/mpitest
    prime_mpi                                                                                                                     100%   16KB  28.3MB/s   00:00
    
  3. Para comparar una línea base, ejecute un binario MPI abierto independiente. Ejecute prime_mpi sin MPI abierto para una línea base o comparación.

    ubuntu@redvm1:/mpitest$ ./prime_mpi
    31 January 2024 06:08:17 AM
    
    PRIME_MPI
      C/MPI version
    
      An MPI example program to count the number of primes.
      The number of processes is 1
    
            N        Pi          Time
    
            1         0        0.000003
            2         1        0.000000
            4         2        0.000000
            8         4        0.000000
            16         6        0.000000
            32        11        0.000001
            64        18        0.000002
          128        31        0.000022
          256        54        0.000019
          512        97        0.000066
          1024       172        0.000231
          2048       309        0.000810
          4096       564        0.002846
          8192      1028        0.010093
        16384      1900        0.037234
        32768      3512        0.137078
        65536      6542        0.515210
        131072     12251        1.932970
        262144     23000        7.243419
    
    PRIME_MPI - Master process:
      Normal end of execution.
    
    31 January 2024 06:08:27 AM
    

    Nota: El número de procesos es 1 y tarda unos 10 segundos en completarse.

  4. Ejecución distribuida mediante MPI abierto. Ejecute prime_mpi con MPI abierto en todas las CPU disponibles en las tres instancias de VM mediante el archivo mpihosts.txt.

    ubuntu@redvm1:/mpitest$ mpirun --hostfile mpihosts.txt ./prime_mpi
    31 January 2024 06:09:02 AM
    
    PRIME_MPI
      C/MPI version
    
      An MPI example program to count the number of primes.
      The number of processes is 48
    
            N        Pi          Time
    
            1         0        0.020740
            2         1        0.000428
            4         2        0.000331
            8         4        0.000392
            16         6        0.000269
            32        11        0.000295
            64        18        0.000374
          128        31        0.000390
          256        54        0.000380
          512        97        0.000331
          1024       172        0.000351
          2048       309        0.000385
          4096       564        0.000740
          8192      1028        0.001931
        16384      1900        0.006316
        32768      3512        0.021577
        65536      6542        0.078834
        131072     12251        0.273368
        262144     23000        0.808825
    
    PRIME_MPI - Master process:
      Normal end of execution.
    
    31 January 2024 06:09:03 AM
    

    Se utilizan 48 procesos y se tarda aproximadamente 1 segundo en ejecutarse.

    Explore Open MPI ejecutando el mismo ejemplo, pero con el archivo mpihosts_slots.txt. Debe ver una mejora en comparación con la ejecución de prime_mpi independiente, pero solo utilizará 1 procesador en cada nodo (total de 3) en lugar del complemento completo en todos los nodos. Al cambiar el número de ranuras en cada instancia de VM, puede controlar la distribución del trabajo.

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.