لقد توليت مؤخرًا إدارة خادم discourse، وهناك بعض المشكلات.
- لدي مشكلات مستمرة عند محاولة إنشاء أو تعديل منشور يحتوي على كتل تعليمات برمجية. عند محاولة إنشاء أو تعديل منشور بكتلة التعليمات البرمجية
(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
...
أتلقى خطأ 403 Forbidden.
-
لا يدعم Markdown تمييز التعليمات البرمجية، وإضافة أي مواصفات بناء الجملة يؤدي إلى خطأ
403 Forbidden. -
تتسبب مقاطع التعليمات البرمجية المضمنة أيضًا في حدوث
403 Forbiddenفي بعض المواقع وليس كلها، بالنسبة لكتل التعليمات البرمجية الأخرى.
الإصدار المثبت هو 3.1.1 ( 0612f0d5b6 ).
هل هذه المشكلات مرتبطة، وما الذي يمكن أن يسبب هذا السلوك؟
مثال على منشور: Compiling OpenFOAM with Spack - 📚 Knowledge nuggets - HPC discourse
النتيجة المقصودة:
هناك بعض المشكلات عند تثبيت OpenFOAM من OpenCFD باستخدام Spack.
تم إعداد بيئة لإدارة الحزم باستخدام Spack باتباع التعليمات الواردة في برنامج UL HPC التعليمي. باختصار، تم تعريف التبعيات التالية لحزم 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
وتم تعريف الخيارات التالية لدلائل ذاكرة التخزين المؤقت للبناء،
(access)$ cat << EOF > $SPACK_ROOT/etc/spack/config.yaml
config:
build_stage:
- /dev/shm/$user/spack-stage
EOF
لتسريع عملية التجميع باستخدام نظام ملفات ذاكرة الوصول العشوائي. قبل المتابعة إلى تثبيت OpenFOAM، يتم تثبيت الإصدار المطلوب من Open MPI باستخدام المترجم النظامي:
(compute node)$ spack install -j openmpi@4.0.5 +pmi schedulers=slurm ^pmix@4.2.3 ^hwloc@2.2.0
يتم تثبيت توزيع OpenFOAM باستخدام المترجم النظامي أيضًا. المكونات المتاحة لـ OpenFOAM هي:
(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 باستخدام جميع أدوات التقسيم المتاحة (metis، scotch، zoltan، kahip) ومكونات مولد الشبكة المتعددة (mgridgen، القسم 6.3.1.4 من الوثائق) باستخدام الأمر:
(compute node)$ spack install -j openfoam@2306 +source precision=dp +metis +scotch +zoltan +kahip +mgridgen ~knl ~int64 ~paraview ^openmpi@4.0.5
ومع ذلك، فإن التثبيت الناتج يفتقر إلى مكونات متعددة. على سبيل المثال، عند تنفيذ التحقق اليدوي بعد التثبيت في doc/Build.md،
# Create the user "run" directory:
mkdir -p "$FOAM_RUN"
# Change to the user "run" directory:
run
# Copy tutorial
cp -r "$FOAM_TUTORIALS"/incompressible/simpleFoam/pitzDaily ./
# Run the tutorial
( cd pitzDaily && blockMesh && simpleFoam )
كل من مولد الشبكة blockMesh والمحلل simpleFoam مفقودان.
يتضح أن أداة التقسيم METIS تسبب فشل تثبيت مكونات متعددة. إعادة التجميع باستخدام أداة التقسيم SCOTCH فقط،
(compute node)$ spack install openfoam@2306 +source +scotch +mgridgen precision=dp ~int64 ~kahip ~knl ~metis ~paraview ~vtk ~zoltan ^openmpi@4.0.5
يحل المشكلة. يتم تثبيت جميع مكونات المحلل، ولكن لا يزال هناك عدد قليل من الأدوات المساعدة مفقودة.
نستخدم البرنامج النصي التالي لاكتشاف جميع المكونات المفقودة:
(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}"
يُظهر التشغيل البسيط للبرنامج النصي أن الأدوات المساعدة التالية مفقودة:
(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