J’ai récemment pris en charge la gestion du serveur Discourse, et il y a quelques problèmes.
- J’ai des problèmes persistants lorsque j’essaie de créer ou de modifier un message avec des blocs de code. Lorsque j’essaie de créer ou de modifier un message avec le bloc de code
(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
...
J’obtiens une erreur 403 Forbidden.
-
Markdown ne prend pas en charge la coloration syntaxique, l’ajout de toute spécification de syntaxe entraîne une erreur
403 Forbidden. -
Les segments de code en ligne provoquent également une erreur
403 Forbiddenà certains endroits mais pas à d’autres, par rapport à d’autres blocs de code.
La version installée est 3.1.1 ( 0612f0d5b6 ).
Ces problèmes sont-ils liés, et qu’est-ce qui pourrait causer ce comportement ?
Exemple de message : Compiling OpenFOAM with Spack - 📚 Knowledge nuggets - HPC discourse
Résultat souhaité :
Il y a quelques problèmes lors de l’installation d’OpenFOAM d’OpenCFD avec Spack.
Un environnement a été configuré pour gérer les paquets avec Spack en suivant les instructions du tutoriel UL HPC. En bref, les dépendances suivantes ont été définies pour les paquets 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
et les options suivantes ont été définies pour les répertoires de cache de construction,
(access)$ cat << EOF > $SPACK_ROOT/etc/spack/config.yaml
config:
build_stage:
- /dev/shm/$user/spack-stage
EOF
pour accélérer la compilation en utilisant le système de fichiers ramdisk. Avant de procéder à l’installation d’OpenFOAM, la version souhaitée d’Open MPI est installée avec le compilateur système :
(compute node)$ spack install -j openmpi@4.0.5 +pmi schedulers=slurm ^pmix@4.2.3 ^hwloc@2.2.0
La distribution d’OpenFOAM est également installée à l’aide du compilateur système. Les composants disponibles d’OpenFOAM sont :
(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 est installé en utilisant tous les partitionneurs disponibles (metis, scotch, zoltan, kahip) et les composants de génération multi-grilles (mgridgen, section 6.3.1.4 de la documentation) avec la commande :
(compute node)$ spack install -j openfoam@2306 +source precision=dp +metis +scotch +zoltan +kahip +mgridgen ~knl ~int64 ~paraview ^openmpi@4.0.5
Cependant, l’installation résultante manque de plusieurs composants. Par exemple, en exécutant la vérification manuelle post-installation dans doc/Build.md,
# Créer le répertoire utilisateur "run" :
mkdir -p "$FOAM_RUN"
# Changer pour le répertoire utilisateur "run" :
run
# Copier le tutoriel
cp -r "$FOAM_TUTORIALS"/incompressible/simpleFoam/pitzDaily ./
# Exécuter le tutoriel
( cd pitzDaily && blockMesh && simpleFoam )
le générateur de maillage blockMesh et le solveur simpleFoam sont tous deux manquants.
Il s’avère que le partitionneur METIS provoque l’échec de l’installation de plusieurs composants. La recompilation avec uniquement le partitionneur SCOTCH,
(compute node)$ spack install openfoam@2306 +source +scotch +mgridgen precision=dp ~int64 ~kahip ~knl ~metis ~paraview ~vtk ~zoltan ^openmpi@4.0.5
résout le problème. Tous les composants du solveur sont installés, mais quelques utilitaires sont toujours manquants.
Nous utilisons le script suivant pour détecter tous les composants manquants :
(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}"
Une simple exécution du script indique que les utilitaires suivants sont manquants :
(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