Tengo problemas persistentes al intentar crear o editar una publicación con bloques de código. Al intentar crear o editar una publicación con el bloque de código
(access node)$ spack list openfoam@2306
...
Variants:
Name [Default] When Allowed values Description
====================== ==== ============== ==================================================
build_system [generic] -- generic Build systems supported by the package
int64 [off] -- on, off With 64-bit labels
kahip [off] -- on, off With kahip decomposition
knl [off] -- on, off Use KNL compiler settings
metis [off] -- on, off With metis decomposition
mgridgen [off] -- on, off With mgridgen support
paraview [off] -- on, off Build paraview plugins and runtime post-processing
precision [dp] -- sp, dp, spdp Precision option
scotch [on] -- on, off With scotch/ptscotch decomposition
source [on] -- on, off Install library/application sources and tutorials
vtk [off] -- on, off With VTK runTimePostProcessing
zoltan [off] -- on, off With zoltan renumbering
...
Recibo un error 403 Forbidden.
Markdown no admite resaltado de código; agregar cualquier especificación de sintaxis genera un error 403 Forbidden.
Los segmentos de código en línea también causan 403 Forbidden en algunas ubicaciones, pero no en todas, en relación con otros bloques de código.
La versión instalada es 3.1.1 ( 0612f0d5b6 ).
¿Están relacionados estos problemas y qué podría estar causando este comportamiento?
Publicación de ejemplo: Compiling OpenFOAM with Spack - 📚 Knowledge nuggets - HPC discourse
Resultado previsto:
Hay algunos problemas al instalar OpenFOAM de OpenCFD con Spack.
Se configuró un entorno para administrar los paquetes con Spack siguiendo las instrucciones del tutorial de UL HPC. En resumen, se definieron las siguientes dependencias para los paquetes SPACK,
(access node)$ cat << EOF > $SPACK_ROOT/etc/spack/packages.yaml
packages:
slurm:
externals:
- spec: slurm@22.05.5
prefix: /usr
buildable: False
libevent:
externals:
- spec: libevent@2.1.8
prefix: /usr
buildable: False
pmix:
externals:
- spec: pmix@4.2.3
prefix: /usr
buildable: False
hwloc:
externals:
- spec: hwloc@2.2.0
prefix: /usr
buildable: False
EOF
y se definieron las siguientes opciones para los directorios de caché de compilación,
(access)$ cat << EOF > $SPACK_ROOT/etc/spack/config.yaml
config:
build_stage:
- /dev/shm/$user/spack-stage
EOF
para acelerar la compilación utilizando el sistema de archivos de ramdisk. Antes de proceder a la instalación de OpenFOAM, la versión deseada de Open MPI se instala con el compilador del sistema:
(compute node)$ spack install -j openmpi@4.0.5 +pmi schedulers=slurm ^pmix@4.2.3 ^hwloc@2.2.0
La distribución de OpenFOAM se instala utilizando también el compilador del sistema. Los componentes disponibles de OpenFOAM son:
(access node)$ spack list openfoam@2306
...
Variants:
Name [Default] When Allowed values Description
====================== ==== ============== ==================================================
build_system [generic] -- generic Build systems supported by the package
int64 [off] -- on, off With 64-bit labels
kahip [off] -- on, off With kahip decomposition
knl [off] -- on, off Use KNL compiler settings
metis [off] -- on, off With metis decomposition
mgridgen [off] -- on, off With mgridgen support
paraview [off] -- on, off Build paraview plugins and runtime post-processing
precision [dp] -- sp, dp, spdp Precision option
scotch [on] -- on, off With scotch/ptscotch decomposition
source [on] -- on, off Install library/application sources and tutorials
vtk [off] -- on, off With VTK runTimePostProcessing
zoltan [off] -- on, off With zoltan renumbering
...
OpenFOAM se instala utilizando todos los particionadores disponibles (metis, scotch, zoltan, kahip) y los componentes del generador de multi-mallas (mgridgen, sección 6.3.1.4 de la documentación) con el comando:
(compute node)$ spack install -j openfoam@2306 +source precision=dp +metis +scotch +zoltan +kahip +mgridgen ~knl ~int64 ~paraview ^openmpi@4.0.5
Sin embargo, la instalación resultante carece de múltiples componentes. Por ejemplo, al ejecutar la verificación manual posterior a la instalación en doc/Build.md,
# Crear el directorio de usuario "run":
mkdir -p "$FOAM_RUN"
# Cambiar al directorio de usuario "run":
run
# Copiar tutorial
cp -r "$FOAM_TUTORIALS"/incompressible/simpleFoam/pitzDaily ./
# Ejecutar el tutorial
( cd pitzDaily && blockMesh && simpleFoam )
faltan tanto el generador de mallas blockMesh como el solucionador simpleFoam.
Resulta que el particionador METIS causa que la instalación de múltiples componentes falle. Al recompilar solo con el particionador SCOTCH,
(compute node)$ spack install openfoam@2306 +source +scotch +mgridgen precision=dp ~int64 ~kahip ~knl ~metis ~paraview ~vtk ~zoltan ^openmpi@4.0.5
se resuelve el problema. Todos los componentes del solucionador se instalan, pero todavía faltan algunas utilidades.
Usamos el siguiente script para detectar todos los componentes faltantes:
(access node)$ cat list_spack_openfoam
#!/usr/bin/bash
set -euo pipefail
declare variant="${1}" # e.g. @2306%gcc@8.5.0 @2306+mgridgen
declare type="${2}" # solvers, utilities
find_makefile_directories() {
local directory="${1}"
find "${directory}" -type d | grep -E '\/Make$' || true
}
extract_executable_name() {
local makefile_directory="${1}"
cat "${makefile_directory}/files" | ( grep -E '^EXE[[:space:]]*=' || true ) | sed 's/^EXE[[:space:]]*=[[:space:]]*\$(FOAM_APPBIN)\///g'
}
main() {
local variant="${1}"
local type="${2}"
local foam_location="$(spack location -i openfoam"${variant}")"
local pagkage_directory=""
local executable_name=""
local installed=""
local package_makefile_directory=""
while read -r package_makefile_directory; do
executable_name=$( extract_executable_name "${package_makefile_directory}" )
if [ -n "${executable_name}" ]; then
if [ -x "${foam_location}/platforms/linux64GccDPInt32-spack/bin/${executable_name}" ]; then
installed="Y"
else
installed="N"
fi
package_directory="$( echo "${package_makefile_directory}" | xargs -I % dirname % )"
echo "${installed} : ${executable_name} => ${package_directory#${foam_location}}"
fi
done < <( find_makefile_directories "${foam_location}/applications/${type}" )
}
main "${variant}" "${type}"
Una ejecución simple del script indica que faltan las siguientes utilidades:
(access node)$ ./list_spack_openfoam utilities @2306 | grep -E '^N'
N : addr2line => /applications/utilities/miscellaneous/OSspecific/addr2line
N : foamyHexMeshSurfaceSimplify => /applications/utilities/mesh/generation/foamyMesh/foamyHexMeshSurfaceSimplify
N : foamyHexMeshBackgroundMesh => /applications/utilities/mesh/generation/foamyMesh/foamyHexMeshBackgroundMesh
N : cellSizeAndAlignmentGrid => /applications/utilities/mesh/generation/foamyMesh/cellSizeAndAlignmentGrid
N : foamToCcm => /applications/utilities/mesh/conversion/ccm/foamToCcm
N : ccmToFoam => /applications/utilities/mesh/conversion/ccm/ccmToFoam