Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Implementación de un clúster con una plantilla de ARM
Uso del clúster de nodo principal único para cargas de trabajo de Linux para implementar el clúster
Tenga en cuenta que
Compute Node Image
debe ser uno con sufijoHPC
yCompute Node VM Size
debe serStandard_H16r
oStandard_H16mr
en la serie H para que el clúster pueda ser compatible con RDMA.
Ejecución de Pingpong de Pruebas comparativas de Intel MPI
Inicie sesión en el nodo principal hpc6267 y tome nodos en línea
Envío de un trabajo para ejecutar pingpong de MPI entre nodos de proceso de Linux
job submit /numnodes:2 "source /opt/intel/impi/`ls /opt/intel/impi`/bin64/mpivars.sh && mpirun -env I_MPI_FABRICS=shm:dapl -env I_MPI_DAPL_PROVIDER=ofa-v2-ib0 -env I_MPI_DYNAMIC_CONNECTION=0 -env I_MPI_FALLBACK_DEVICE=0 -f $CCP_MPI_HOSTFILE -ppn 1 IMB-MPI1 pingpong | tail -n30"
El archivo host o el archivo de máquina para la tarea MPI se genera automáticamente.
La variable
$CCP_MPI_HOSTFILE
de entorno se puede usar en el comando task para obtener el nombre de archivo.La variable
$CCP_MPI_HOSTFILE_FORMAT
de entorno podría establecerse para especificar el formato del archivo host o del archivo de máquinaEl formato de archivo host predeterminado es similar al siguiente:
nodename1 nodename2 … nodenameN
Cuando
$CCP_MPI_HOSTFILE_FORMAT=1
, el formato es similar al siguiente:nodename1:4 nodename2:4 … nodenameN:4
Cuando
$CCP_MPI_HOSTFILE_FORMAT=2
, el formato es similar al siguiente:nodename1 slots=4 nodename2 slots=4 … nodenameN slots=4
Cuando
$CCP_MPI_HOSTFILE_FORMAT=3
, el formato es similar al siguiente:nodename1 4 nodename2 4 … nodenameN 4
Comprobación del resultado de la tarea en el Administrador de clústeres de HPC Pack 2016
Ejecución de la carga de trabajo de OpenFOAM
Descarga e instalación de Intel MPI
Intel MPI ya está instalado en la imagen
CentOS_7.4_HPC
de Linux, pero se necesita una versión más reciente para compilar OpenFOAM, que se puede descargar de la biblioteca de Intel MPI.Descarga e instalación silenciosa de Intel MPI con clusrun
clusrun /nodegroup:LinuxNodes /interleaved "wget https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/13063/l_mpi_2018.3.222.tgz && tar -zxvf l_mpi_2018.3.222.tgz && sed -i -e 's/ACCEPT_EULA=decline/ACCEPT_EULA=accept/g' ./l_mpi_2018.3.222/silent.cfg && ./l_mpi_2018.3.222/install.sh --silent ./l_mpi_2018.3.222/silent.cfg"
Descarga y compilación de OpenFOAM
Los paquetes openFOAM se pueden descargar desde la página de descarga de OpenFOAM
Antes de compilar OpenFOAM, es necesario instalar
zlib-devel
yDevelopment Tools
en nodos de proceso de Linux (CentOS) para cambiar el valor de la variableWM_MPLIB
deSYSTEMOPENMPI
aINTELMPI
en el archivobashrc
de configuración del entorno de OpenFOAM y para obtener el archivo de configuración del entorno de Intel MPI y el archivompivars.sh
de configuración del entorno openFOAM.bashrc
Opcionalmente, se podría establecer una variable
WM_NCOMPPROCS
de entorno para especificar cuántos procesadores se usarán para compilar OpenFoam, lo que podría acelerar la compilación.Uso de clusrun para lograr todo lo anterior
clusrun /nodegroup:LinuxNodes /interleaved "yum install -y zlib-devel && yum groupinstall -y 'Development Tools' && wget https://sourceforge.net/projects/openfoamplus/files/v1806/ThirdParty-v1806.tgz && wget https://sourceforge.net/projects/openfoamplus/files/v1806/OpenFOAM-v1806.tgz && mkdir /opt/OpenFOAM && tar -xzf OpenFOAM-v1806.tgz -C /opt/OpenFOAM && tar -xzf ThirdParty-v1806.tgz -C /opt/OpenFOAM && cd /opt/OpenFOAM/OpenFOAM-v1806/ && sed -i -e 's/WM_MPLIB=SYSTEMOPENMPI/WM_MPLIB=INTELMPI/g' ./etc/bashrc && source /opt/intel/impi/2018.3.222/bin64/mpivars.sh && source ./etc/bashrc && export WM_NCOMPPROCS=$((`grep -c ^processor /proc/cpuinfo`-1)) && ./Allwmake"
Creación de un recurso compartido en el clúster
Cree una carpeta denominada
openfoam
en el nodo principal y compártala conEveryone
permiso.Read/Write
Creación de un directorio
/openfoam
y montaje del recurso compartido en nodos de proceso de Linux con clusrunclusrun /nodegroup:LinuxNodes "mkdir /openfoam && mount -t cifs //hpc6267/openfoam /openfoam -o vers=2.1,username=hpcadmin,dir_mode=0777,file_mode=0777,password='********'"
Recuerde reemplazar el nombre de usuario y la contraseña en el código anterior al copiar.
Preparar el archivo de configuración del entorno para ejecutar tareas de MPI
Cree un archivo en el recurso
settings.sh
compartido con código:#!/bin/bash # impi source /opt/intel/impi/2018.3.222/bin64/mpivars.sh export MPI_ROOT=$I_MPI_ROOT export I_MPI_FABRICS=shm:dapl export I_MPI_DAPL_PROVIDER=ofa-v2-ib0 export I_MPI_DYNAMIC_CONNECTION=0 # openfoam source /opt/OpenFOAM/OpenFOAM-v1806/etc/bashrc
Tenga cuidado con los finales de línea si el archivo se edita en el nodo principal, que debe ser
\n
en lugar de\r\n
Preparación de datos de ejemplo para el trabajo de OpenFOAM
Copia del ejemplo
sloshingTank3D
en el directorio tutoriales de OpenFOAM en el recurso compartidoopenfoam
Opcionalmente, modifique el valor de
deltaT
de0.05
a y0.5
el valor de de0.05
a0.5
en/openfoam/sloshingTank3D/system/controlDict
para acelerar el procesamiento dewriteInterval
datos.Modifique el archivo
/openfoam/sloshingTank3D/system/decomposeParDict
en términos del número principal que se va a usar; más información, consulte la Guía del usuario de OpenFOAM: 3.4 En ejecución de aplicaciones en paralelo/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1806 | | \\ / A nd | Web: www.OpenFOAM.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object decomposeParDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // numberOfSubdomains 32; method hierarchical; coeffs { n (1 1 32); //delta 0.001; // default=0.001 //order xyz; // default=xzy } distributed no; roots ( ); // ************************************************************************* //
Prepare los datos de ejemplo en
/openfoam/sloshingTank3D
. El código siguiente se puede usar al realizarlo manualmente en el nodo de proceso de Linux:cd /openfoam/sloshingTank3D source /openfoam/settings.sh source /home/hpcadmin/OpenFOAM/OpenFOAM-v1806/bin/tools/RunFunctions m4 ./system/blockMeshDict.m4 > ./system/blockMeshDict runApplication blockMesh cp ./0/alpha.water.orig ./0/alpha.water runApplication setFields
Envío de un trabajo para lograr todo lo anterior
set CORE_NUMBER=32 job submit "cp -r /opt/OpenFOAM/OpenFOAM-v1806/tutorials/multiphase/interFoam/laminar/sloshingTank3D /openfoam/ && sed -i 's/deltaT 0.05;/deltaT 0.5;/g' /openfoam/sloshingTank3D/system/controlDict && sed -i 's/writeInterval 0.05;/writeInterval 0.5;/g' /openfoam/sloshingTank3D/system/controlDict && sed -i 's/numberOfSubdomains 16;/numberOfSubdomains %CORE_NUMBER%;/g' /openfoam/sloshingTank3D/system/decomposeParDict && sed -i 's/n (4 2 2);/n (1 1 %CORE_NUMBER%);/g' /openfoam/sloshingTank3D/system/decomposeParDict && cd /openfoam/sloshingTank3D/ && m4 ./system/blockMeshDict.m4 > ./system/blockMeshDict && source /opt/OpenFOAM/OpenFOAM-v1806/bin/tools/RunFunctions && source /opt/OpenFOAM/OpenFOAM-v1806/etc/bashrc && runApplication blockMesh && cp ./0/alpha.water.orig ./0/alpha.water && runApplication setFields"
Creación de un trabajo que contenga tareas de MPI para procesar la fecha
Creación de un trabajo y adición de 4 tareas con dependencia
Nombre de la tarea Tarea dependiente Núcleos Comando Variable del entorno task1 No disponible 1 source /openfoam/settings.sh && decomposePar -force No disponible task2 task1 32 source /openfoam/settings.sh && mpirun -machinefile $CCP_MPI_HOSTFILE interFoam -parallel CCP_MPI_HOSTFILE_FORMAT=1 task3 task2 1 source /openfoam/settings.sh && reconstructPar No disponible task4 task3 32 source /openfoam/settings.sh && mpirun -machinefile $CCP_MPI_HOSTFILE foamToEnsight -parallel CCP_MPI_HOSTFILE_FORMAT=1 Establezca el directorio
/openfoam/sloshingTank3D
de trabajo en y la salida estándar en${CCP_JOBID}.${CCP_TASKID}.log
de cada tarea.Logre todo lo anterior con comandos:
set CORE_NUMBER=32 job new job add !! /workdir:/openfoam/sloshingTank3D /name:task1 /stdout:${CCP_JOBID}.${CCP_TASKID}.log "source /openfoam/settings.sh && decomposePar -force" job add !! /workdir:/openfoam/sloshingTank3D /name:task2 /stdout:${CCP_JOBID}.${CCP_TASKID}.log /depend:task1 /numcores:%CORE_NUMBER% /env:CCP_MPI_HOSTFILE_FORMAT=1 "source /openfoam/settings.sh && mpirun -machinefile $CCP_MPI_HOSTFILE interFoam -parallel" job add !! /workdir:/openfoam/sloshingTank3D /name:task3 /stdout:${CCP_JOBID}.${CCP_TASKID}.log /depend:task2 "source /openfoam/settings.sh && reconstructPar" job add !! /workdir:/openfoam/sloshingTank3D /name:task4 /stdout:${CCP_JOBID}.${CCP_TASKID}.log /depend:task3 /numcores:%CORE_NUMBER% /env:CCP_MPI_HOSTFILE_FORMAT=1 "source /openfoam/settings.sh && mpirun -machinefile $CCP_MPI_HOSTFILE foamToEnsight -parallel" job submit /id:!!
Obtención del resultado
Comprobación del resultado del trabajo en el Administrador de clústeres de HPC Pack 2016
El resultado de ejemplo sloshingTank3D se genera como archivo
\\hpc6267\openfoam\sloshingTank3D\EnSight\sloshingTank3D.case
, que Ensight podría ver.