diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..f0896d3 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,26 @@ +{ + "name": "Ubuntu 24.04 with C++", + + "image": "mcr.microsoft.com/devcontainers/cpp:ubuntu-24.04", + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + "settings": { + "terminal.integrated.shell.linux": "/bin/bash" + }, + "extensions": [ + "ms-vscode.cpptools", + "ms-vscode.cmake-tools", + "josetr.cmake-language-support-vscode", + "asciidoctor.asciidoctor-vscode", + "ms-python.python", + "ms-toolsai.jupyter", + "ms-vsliveshare.vsliveshare", + "asciidoctor.asciidoctor-vscode", + "shardulm94.trailing-spaces", + "redhat.vscode-yaml" + ] + } + } +} \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..53e3d0b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,90 @@ +name: CI + +on: + workflow_dispatch: + push: + branches: + - main + tags: + - 'v*' + pull_request: + branches: + - main + +jobs: + build: + runs-on: ubuntu-24.04 + permissions: + packages: write + strategy: + matrix: + env_variant: [int32-real32-shared, int64-real64-shared] + + steps: + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: true + - name: Prepare Spack & Push Build-Cache + uses: numpex/spack-buildcache-action@v1.1.2 + with: + env-variant: ${{ matrix.env_variant }} + repo-packages: numpex/spack.numpex + repo-packages-path: numpex-spack + mirror: numpex-buildcache + mirror-token: ${{ secrets.GITHUB_TOKEN }} + env-path: .spack + # base-image: ubuntu:24.04 + + - name: Configure CMake + shell: spack-bash {0} + run: | + spack env activate .spack/${{ matrix.env_variant }} + cmake --preset ${{ matrix.env_variant }} + + # 4) build + - name: Build + run: cmake --build --preset ${{ matrix.env_variant }} --parallel + + # 5) test + - name: Test + run: ctest --preset ${{ matrix.env_variant }} --output-on-failure + + # 6) package via CPack + - name: Package with CPack + run: | + cmake --build --preset ${{ matrix.env_variant }} --target package + cmake --build --preset ${{ matrix.env_variant }} --target package_source + + # 7) upload artifacts + - name: Upload ParMETIS artifacts + uses: actions/upload-artifact@v4 + with: + name: metis-artifacts-${{ matrix.env_variant }} + path: | + build/${{ matrix.env_variant }}/*.tar.gz + build/${{ matrix.env_variant }}/*.zip + + release: + if: startsWith(github.ref, 'refs/tags/') + needs: build + runs-on: ubuntu-24.04 + steps: + - name: Download ParMETIS artifacts + uses: actions/download-artifact@v4 + with: + path: dist + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + files: | + dist/*.tar.gz + dist/*.zip + draft: false + prerelease: ${{ contains(github.ref, '-rc') || contains(github.ref, '-alpha') || contains(github.ref, '-beta') }} + name: Release ${{ github.ref_name }} + generate_release_notes: true + tag_name: ${{ github.ref }} + token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4796f27..b0132b7 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ graphs/*.epart.* graphs/*.npart.* .svn/ +.spack-env diff --git a/.spack/int32-real32-shared/spack.lock b/.spack/int32-real32-shared/spack.lock new file mode 100644 index 0000000..98cc55f --- /dev/null +++ b/.spack/int32-real32-shared/spack.lock @@ -0,0 +1 @@ +{"_meta":{"file-type":"spack-lockfile","lockfile-version":6,"specfile-version":5},"spack":{"version":"1.0.0.dev0","type":"git","commit":"3f8d5fed393b35d129b03f092ea9cb6b857b634c"},"roots":[{"hash":"tyq234l3qe73cch74ecbrzkf62ceatld","spec":"metis~int64+shared %gcc@14:"},{"hash":"xxfg4qh5fn37tjmbuxaxhdwm5q7zasie","spec":"gcc@14:"},{"hash":"jqq5i3i6qbcxjpdrmiuealdt7pty7ac7","spec":"openmpi@:4.1.6 fabrics=auto %gcc@14:"},{"hash":"gi2uc4pdbzt4t5xmmztuv7x6ellbei6t","spec":"gklib+shared %gcc@14:"}],"concrete_specs":{"tyq234l3qe73cch74ecbrzkf62ceatld":{"name":"metis","version":"5.3.1-rc.6","arch":{"platform":"linux","platform_os":"ubuntu24.04","target":"x86_64_v3"},"namespace":"spack.numpex","parameters":{"build_system":"cmake","build_type":"Release","gdb":false,"generator":"make","int64":false,"ipo":false,"no_warning":false,"omp":false,"real64":false,"shared":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"jkvwnysx3lxljchvexu6o6ffhyk4ysyadanl5qizrqdzy3nzi47q====","dependencies":[{"name":"cmake","hash":"hd6o3qve3dlbqey7lh37feat3nfa4f46","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"compiler-wrapper","hash":"qcgxz7lngyik2f6h55fvnrq2x2tvld23","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"gcc","hash":"xxfg4qh5fn37tjmbuxaxhdwm5q7zasie","parameters":{"deptypes":["build"],"virtuals":["c","cxx"]}},{"name":"gcc-runtime","hash":"lr2eemba6t4zxg7axxsyff4rk43kkvh6","parameters":{"deptypes":["link"],"virtuals":[]}},{"name":"gklib","hash":"gi2uc4pdbzt4t5xmmztuv7x6ellbei6t","parameters":{"deptypes":["build","link","run"],"virtuals":[]}},{"name":"glibc","hash":"nmh7m3scvygv3ar7s2vqky2uizl7jmaa","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":5},"hash":"tyq234l3qe73cch74ecbrzkf62ceatld"},"hd6o3qve3dlbqey7lh37feat3nfa4f46":{"name":"cmake","version":"3.27.9","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"generic","build_type":"Release","doc":false,"ncurses":true,"ownlibs":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"4nfzzuirvovagbkvkxjvtkvwyokgaekv3iyo3emo7h2ai42uofmq====","dependencies":[{"name":"curl","hash":"5ibjroa337fq6ux7zfjmq5b6xk7ezucs","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"ncurses","hash":"2it6ne7sib26k3mkxtr7rsfy7ntyk45b","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"zlib-ng","hash":"vadvpfj2mrmlrwl5x5ail6o6gl6lezkp","parameters":{"deptypes":["build","link"],"virtuals":["zlib-api"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"hd6o3qve3dlbqey7lh37feat3nfa4f46"},"5ibjroa337fq6ux7zfjmq5b6xk7ezucs":{"name":"curl","version":"8.7.1","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","gssapi":false,"ldap":false,"libidn2":false,"librtmp":false,"libs":["shared","static"],"libssh":false,"libssh2":false,"nghttp2":true,"tls":["openssl"],"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"kcgsfmigaqmusztsy67k2gfkizipob2uj5o5yub2i4onsxph454q====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"nghttp2","hash":"77uqgj3tnfbsh3uko3lklsswuoff7p3d","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"openssl","hash":"vxfysozs7q5z3qxdyhagbubshmagstd7","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"perl","hash":"fklxodqpl5qa6awbgee5eqvkcnzhndrt","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"pkgconf","hash":"udj2is6zd4txwiunnmvdcyjj4mzc57rd","parameters":{"deptypes":["build"],"virtuals":["pkgconfig"]}},{"name":"zlib-ng","hash":"vadvpfj2mrmlrwl5x5ail6o6gl6lezkp","parameters":{"deptypes":["build","link"],"virtuals":["zlib-api"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"5ibjroa337fq6ux7zfjmq5b6xk7ezucs"},"ob46f4apc7zqnt6cq7jem6iodf72z45y":{"name":"glibc","version":"2.35","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"external":{"path":"/usr","module":null,"extra_attributes":{}},"package_hash":"6fpf3zdg7hq5rihyyy2uqirjv4cz6bqwuhxackeq22cszeyklvua====","annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y"},"2i5w66ksi2es67thjquz25hzgovdfquf":{"name":"gmake","version":"4.4.1","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"generic","guile":false,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"ghstvqlc3r7kgiikwx24xhcxdxcqdk5viinrzgm2mssqigfonika====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"2i5w66ksi2es67thjquz25hzgovdfquf"},"77uqgj3tnfbsh3uko3lklsswuoff7p3d":{"name":"nghttp2","version":"1.61.0","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"6dlcuezxyasdali4g6bjjt4yteqwgh3h22d3xxosfh2xhqotl5yq====","dependencies":[{"name":"diffutils","hash":"vypacletq7k6duftdyt627x5arvzf2zs","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"pkgconf","hash":"udj2is6zd4txwiunnmvdcyjj4mzc57rd","parameters":{"deptypes":["build"],"virtuals":["pkgconfig"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"77uqgj3tnfbsh3uko3lklsswuoff7p3d"},"vypacletq7k6duftdyt627x5arvzf2zs":{"name":"diffutils","version":"3.10","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"kbmzdy7mgklc24qx55cvx7kq7hceby2yav4fnf64gfdo7epdghwa====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["build","link"],"virtuals":["iconv","libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"vypacletq7k6duftdyt627x5arvzf2zs"},"udj2is6zd4txwiunnmvdcyjj4mzc57rd":{"name":"pkgconf","version":"2.2.0","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"gl6tpyarjlclzsal6wa4dtc7cdzprq36nbibalai4a6wgzblrseq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"udj2is6zd4txwiunnmvdcyjj4mzc57rd"},"vxfysozs7q5z3qxdyhagbubshmagstd7":{"name":"openssl","version":"3.3.0","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"generic","certs":"mozilla","docs":false,"shared":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"nosdt2e4evafjqgoepbjwjs5swb6yvf227cjdn5qwof6es7m53fa====","dependencies":[{"name":"ca-certificates-mozilla","hash":"majgn3gehmzcirghja2zl5accyhpjabq","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"perl","hash":"fklxodqpl5qa6awbgee5eqvkcnzhndrt","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"zlib-ng","hash":"vadvpfj2mrmlrwl5x5ail6o6gl6lezkp","parameters":{"deptypes":["build","link"],"virtuals":["zlib-api"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"vxfysozs7q5z3qxdyhagbubshmagstd7"},"majgn3gehmzcirghja2zl5accyhpjabq":{"name":"ca-certificates-mozilla","version":"2023-05-30","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"generic","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"63npvwqwo2x7i6emvnklh4mhcn45gx2qzveorybh5h2inwr55sea====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"majgn3gehmzcirghja2zl5accyhpjabq"},"fklxodqpl5qa6awbgee5eqvkcnzhndrt":{"name":"perl","version":"5.38.0","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"generic","cpanm":true,"opcode":true,"open":true,"patches":["714e4d1c7496e6b23834e7c88da3d69139418860fbc488fe82fd226b450a4be7"],"shared":true,"threads":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"patches":["714e4d1c7496e6b23834e7c88da3d69139418860fbc488fe82fd226b450a4be7"],"package_hash":"ta4gjmwr42nirckhlozeuijm5sx4pvf76ydo7ee5ixwwcttrhxha====","dependencies":[{"name":"berkeley-db","hash":"s4xxfelbpdcsoyvwrl4zjz5fzph6kqta","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"bzip2","hash":"foieuzksyh2iplc2dzxk6woupqnnzafe","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"gdbm","hash":"kcmfaavdwdvgehlnauczsgexnl52ti6x","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"zlib-ng","hash":"vadvpfj2mrmlrwl5x5ail6o6gl6lezkp","parameters":{"deptypes":["build","link"],"virtuals":["zlib-api"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"fklxodqpl5qa6awbgee5eqvkcnzhndrt"},"s4xxfelbpdcsoyvwrl4zjz5fzph6kqta":{"name":"berkeley-db","version":"18.1.40","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cxx":true,"docs":false,"patches":["26090f418891757af46ac3b89a9f43d6eb5989f7a3dce3d1cfc99fba547203b3","b231fcc4d5cff05e5c3a4814f6a5af0e9a966428dc2176540d2c05aff41de522"],"stl":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"patches":["b231fcc4d5cff05e5c3a4814f6a5af0e9a966428dc2176540d2c05aff41de522","26090f418891757af46ac3b89a9f43d6eb5989f7a3dce3d1cfc99fba547203b3"],"package_hash":"h57ydfn33zevvzctzzioiiwjwe362izbbwncb6a26dfeno4y7tda====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"s4xxfelbpdcsoyvwrl4zjz5fzph6kqta"},"foieuzksyh2iplc2dzxk6woupqnnzafe":{"name":"bzip2","version":"1.0.8","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"generic","debug":false,"pic":false,"shared":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"wa33h4h2abj7tx5cndixz7bdwu5fspdaf2kjlqsinnearayw6fra====","dependencies":[{"name":"diffutils","hash":"vypacletq7k6duftdyt627x5arvzf2zs","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"foieuzksyh2iplc2dzxk6woupqnnzafe"},"kcmfaavdwdvgehlnauczsgexnl52ti6x":{"name":"gdbm","version":"1.23","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"liepxl6phlcxbgfmibxafhewtihlgaa4x3hko37ckqlafhxkrgdq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"readline","hash":"q7i4kwekutxkrtvp3saoycovxpjesg7y","parameters":{"deptypes":["build","link"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"kcmfaavdwdvgehlnauczsgexnl52ti6x"},"q7i4kwekutxkrtvp3saoycovxpjesg7y":{"name":"readline","version":"8.2","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","patches":["bbf97f1ec40a929edab5aa81998c1e2ef435436c597754916e6a5868f273aff7"],"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"patches":["bbf97f1ec40a929edab5aa81998c1e2ef435436c597754916e6a5868f273aff7"],"package_hash":"oww6dmr7xqgg6j7iiluonxbcl4irqnnrip4vfkjdwujncwnuhwuq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"ncurses","hash":"2it6ne7sib26k3mkxtr7rsfy7ntyk45b","parameters":{"deptypes":["build","link"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"q7i4kwekutxkrtvp3saoycovxpjesg7y"},"2it6ne7sib26k3mkxtr7rsfy7ntyk45b":{"name":"ncurses","version":"6.5","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"abi":"none","build_system":"autotools","patches":["7a351bc4953a4ab70dabdbea31c8db0c03d40ce505335f3b6687180dde24c535"],"symlinks":false,"termlib":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"patches":["7a351bc4953a4ab70dabdbea31c8db0c03d40ce505335f3b6687180dde24c535"],"package_hash":"rlqzqxoau3wwzu62x6qxlf4flon6b4n3p4zesnc6t2oyybrvnkwq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"pkgconf","hash":"udj2is6zd4txwiunnmvdcyjj4mzc57rd","parameters":{"deptypes":["build"],"virtuals":["pkgconfig"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"2it6ne7sib26k3mkxtr7rsfy7ntyk45b"},"vadvpfj2mrmlrwl5x5ail6o6gl6lezkp":{"name":"zlib-ng","version":"2.1.6","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","compat":true,"new_strategies":true,"opt":true,"pic":true,"shared":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"mulfc7ykutrxflhqn3h6pqypexmggje35ldj6ekqxn53zdhrkpuq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"vadvpfj2mrmlrwl5x5ail6o6gl6lezkp"},"qcgxz7lngyik2f6h55fvnrq2x2tvld23":{"name":"compiler-wrapper","version":"1.0","arch":{"platform":"linux","platform_os":"ubuntu24.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"generic","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"yddw7n6fqj7xyws4ji7mipxn35xs3h4wipgnwawhtmer53lrpmyq====","annotations":{"original_specfile_version":5},"hash":"qcgxz7lngyik2f6h55fvnrq2x2tvld23"},"xxfg4qh5fn37tjmbuxaxhdwm5q7zasie":{"name":"gcc","version":"14.2.0","arch":{"platform":"linux","platform_os":"ubuntu24.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"binutils":false,"bootstrap":true,"build_system":"autotools","build_type":"RelWithDebInfo","graphite":false,"languages":["c","c++","fortran"],"mold":false,"nvptx":false,"piclibs":false,"profiled":false,"strip":false,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"external":{"path":"/usr","module":null,"extra_attributes":{"compilers":{"c":"/usr/bin/gcc-14","cxx":"/usr/bin/g++-14","fortran":"/usr/bin/gfortran-14"}}},"package_hash":"32rt3s3mapu5zbapuaygiwnkbiye5cmt5wefet4jjgtyqx5mdqtq====","annotations":{"original_specfile_version":5},"hash":"xxfg4qh5fn37tjmbuxaxhdwm5q7zasie"},"lr2eemba6t4zxg7axxsyff4rk43kkvh6":{"name":"gcc-runtime","version":"14.2.0","arch":{"platform":"linux","platform_os":"ubuntu24.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"generic","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"up2pdsw5tfvmn5gwgb3opl46la3uxoptkr3udmradd54s7qo72ha====","dependencies":[{"name":"gcc","hash":"xxfg4qh5fn37tjmbuxaxhdwm5q7zasie","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"glibc","hash":"nmh7m3scvygv3ar7s2vqky2uizl7jmaa","parameters":{"deptypes":["link"],"virtuals":["libc"]}}],"annotations":{"original_specfile_version":5},"hash":"lr2eemba6t4zxg7axxsyff4rk43kkvh6"},"nmh7m3scvygv3ar7s2vqky2uizl7jmaa":{"name":"glibc","version":"2.39","arch":{"platform":"linux","platform_os":"ubuntu24.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"external":{"path":"/usr","module":null,"extra_attributes":{}},"package_hash":"25tj5wl7gil5nxhhfysfoef4x2hzf52n5eg4krohjeyw4o55r4vq====","annotations":{"original_specfile_version":5},"hash":"nmh7m3scvygv3ar7s2vqky2uizl7jmaa"},"gi2uc4pdbzt4t5xmmztuv7x6ellbei6t":{"name":"gklib","version":"5.2.0","arch":{"platform":"linux","platform_os":"ubuntu24.04","target":"x86_64_v3"},"namespace":"spack.numpex","parameters":{"build_system":"cmake","build_type":"Release","debug":false,"generator":"make","ipo":false,"shared":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"s56ct6qlmqh5jqaookokeh4lkn4mdmc2ehlchyywoqlajo2jpe2q====","dependencies":[{"name":"cmake","hash":"hd6o3qve3dlbqey7lh37feat3nfa4f46","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"compiler-wrapper","hash":"qcgxz7lngyik2f6h55fvnrq2x2tvld23","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"gcc","hash":"xxfg4qh5fn37tjmbuxaxhdwm5q7zasie","parameters":{"deptypes":["build","link"],"virtuals":["c"]}},{"name":"gcc-runtime","hash":"lr2eemba6t4zxg7axxsyff4rk43kkvh6","parameters":{"deptypes":["link"],"virtuals":[]}},{"name":"glibc","hash":"nmh7m3scvygv3ar7s2vqky2uizl7jmaa","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":5},"hash":"gi2uc4pdbzt4t5xmmztuv7x6ellbei6t"},"jqq5i3i6qbcxjpdrmiuealdt7pty7ac7":{"name":"openmpi","version":"4.1.6","arch":{"platform":"linux","platform_os":"ubuntu24.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"atomics":true,"build_system":"autotools","cuda":false,"cxx":false,"cxx_exceptions":false,"debug":false,"fabrics":["auto"],"gpfs":false,"internal-hwloc":false,"internal-libevent":false,"internal-pmix":false,"ipv6":false,"java":false,"lustre":false,"memchecker":false,"openshmem":false,"orterunprefix":false,"romio":true,"romio-filesystem":["none"],"rsh":true,"schedulers":["none"],"singularity":false,"static":false,"two_level_namespace":false,"vt":true,"wrapper-rpath":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"xtepfen3e3iw6e43qsjt3kfxvh6b5dcqdywvimasyenuswlvdgya====","dependencies":[{"name":"compiler-wrapper","hash":"qcgxz7lngyik2f6h55fvnrq2x2tvld23","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"gcc","hash":"arofb2usf2r5yagwucsrgncfc2nfl3hu","parameters":{"deptypes":["build"],"virtuals":["c","cxx","fortran"]}},{"name":"gcc-runtime","hash":"ocen46zrggdzc6r2y66kathjjo7auj5l","parameters":{"deptypes":["link"],"virtuals":["fortran-rt","libgfortran"]}},{"name":"glibc","hash":"2fbs345cfsotvluodgtxhkem6gwcq7i3","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"hwloc","hash":"xlruoqs34ha7zn4tphis2rlge7x5q3da","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"libevent","hash":"tkufbl5hckqurz55gy6ha6qd3dncdvpk","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"numactl","hash":"cwkmfgjk4mjof7uwf7npb27eacksao4u","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"openssh","hash":"q5ovukqq7smqhvep22bq76ru3p7ambyn","parameters":{"deptypes":["run"],"virtuals":[]}},{"name":"perl","hash":"fklxodqpl5qa6awbgee5eqvkcnzhndrt","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"pkgconf","hash":"udj2is6zd4txwiunnmvdcyjj4mzc57rd","parameters":{"deptypes":["build"],"virtuals":["pkgconfig"]}},{"name":"pmix","hash":"ioivba3iifit7lcy2xwojbfy6wzl2m5h","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"zlib-ng","hash":"vadvpfj2mrmlrwl5x5ail6o6gl6lezkp","parameters":{"deptypes":["build","link"],"virtuals":["zlib-api"]}}],"annotations":{"original_specfile_version":5},"hash":"jqq5i3i6qbcxjpdrmiuealdt7pty7ac7"},"arofb2usf2r5yagwucsrgncfc2nfl3hu":{"name":"gcc","version":"14.2.0","arch":{"platform":"linux","platform_os":"ubuntu24.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"binutils":false,"bootstrap":true,"build_system":"autotools","build_type":"RelWithDebInfo","graphite":false,"languages":["c","c++","fortran"],"mold":false,"nvptx":false,"piclibs":false,"profiled":false,"strip":false,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"external":{"path":"/usr","module":null,"extra_attributes":{"compilers":{"c":"/usr/bin/gcc-14","cxx":"/usr/bin/g++-14","fortran":"/usr/bin/gfortran-14"}}},"package_hash":"gqe5mc43rxarf5qqc7bivzjdtzcymuijf34cfsm3urrk7jbwkv7a====","annotations":{"original_specfile_version":5},"hash":"arofb2usf2r5yagwucsrgncfc2nfl3hu"},"ocen46zrggdzc6r2y66kathjjo7auj5l":{"name":"gcc-runtime","version":"14.2.0","arch":{"platform":"linux","platform_os":"ubuntu24.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"generic","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"up2pdsw5tfvmn5gwgb3opl46la3uxoptkr3udmradd54s7qo72ha====","dependencies":[{"name":"gcc","hash":"arofb2usf2r5yagwucsrgncfc2nfl3hu","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"glibc","hash":"2fbs345cfsotvluodgtxhkem6gwcq7i3","parameters":{"deptypes":["link"],"virtuals":["libc"]}}],"annotations":{"original_specfile_version":5},"hash":"ocen46zrggdzc6r2y66kathjjo7auj5l"},"2fbs345cfsotvluodgtxhkem6gwcq7i3":{"name":"glibc","version":"2.39","arch":{"platform":"linux","platform_os":"ubuntu24.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"external":{"path":"/usr","module":null,"extra_attributes":{}},"package_hash":"i5pyttni2dr3ucfxfjobgtcsbnes6ebwepmzb7bboy3k4fk2rboa====","annotations":{"original_specfile_version":5},"hash":"2fbs345cfsotvluodgtxhkem6gwcq7i3"},"xlruoqs34ha7zn4tphis2rlge7x5q3da":{"name":"hwloc","version":"2.9.1","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cairo":false,"cuda":false,"gl":false,"libs":["shared","static"],"libudev":false,"libxml2":true,"netloc":false,"nvml":false,"oneapi-level-zero":false,"opencl":false,"pci":true,"rocm":false,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"hir47frlnqog35tswqx57f2ncq3ymdf6gvi6mxhben2mxer3p4lq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"libpciaccess","hash":"ncyk37ffn7zspwnu7aahbyn6rgz3gpgv","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"libxml2","hash":"is4ojmbyyf3ncmbw2bnk52jqmepvnx4a","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"ncurses","hash":"2it6ne7sib26k3mkxtr7rsfy7ntyk45b","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"pkgconf","hash":"udj2is6zd4txwiunnmvdcyjj4mzc57rd","parameters":{"deptypes":["build"],"virtuals":["pkgconfig"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"xlruoqs34ha7zn4tphis2rlge7x5q3da"},"ncyk37ffn7zspwnu7aahbyn6rgz3gpgv":{"name":"libpciaccess","version":"0.17","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"zjibztp7iq2h3hgdgjs2dvk75m5nhxd2fwjr4cmpwvkidwbwk2dq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"libtool","hash":"azvarc6lisnkfrdv2b5pgrxattxdsb2v","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"pkgconf","hash":"udj2is6zd4txwiunnmvdcyjj4mzc57rd","parameters":{"deptypes":["build"],"virtuals":["pkgconfig"]}},{"name":"util-macros","hash":"tlnw2tkaf2ivdmkfy4sgktcqypvuebxg","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"ncyk37ffn7zspwnu7aahbyn6rgz3gpgv"},"azvarc6lisnkfrdv2b5pgrxattxdsb2v":{"name":"libtool","version":"2.4.7","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"7lyavyiwpnrhw7tfv5vgri32at345gdegbixiskk63ext2f5rzza====","dependencies":[{"name":"findutils","hash":"66b3nixhck4wwcraohwb4yv4xkqhuhq7","parameters":{"deptypes":["run"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"m4","hash":"f2iq4foz2aky2aqfgh5vgsmkzojkdtxu","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"azvarc6lisnkfrdv2b5pgrxattxdsb2v"},"66b3nixhck4wwcraohwb4yv4xkqhuhq7":{"name":"findutils","version":"4.9.0","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","patches":["440b9543365b4692a2e6e0b5674809659846658d34d1dfc542c4397c8d668b92"],"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"patches":["440b9543365b4692a2e6e0b5674809659846658d34d1dfc542c4397c8d668b92"],"package_hash":"bo3pd5cjg27xg6plm5x6znimvxfa2rj4br754j67zlk363w2hxvq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"66b3nixhck4wwcraohwb4yv4xkqhuhq7"},"f2iq4foz2aky2aqfgh5vgsmkzojkdtxu":{"name":"m4","version":"1.4.19","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","patches":["9dc5fbd0d5cb1037ab1e6d0ecc74a30df218d0a94bdd5a02759a97f62daca573","bfdffa7c2eb01021d5849b36972c069693654ad826c1a20b53534009a4ec7a89"],"sigsegv":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"patches":["bfdffa7c2eb01021d5849b36972c069693654ad826c1a20b53534009a4ec7a89","9dc5fbd0d5cb1037ab1e6d0ecc74a30df218d0a94bdd5a02759a97f62daca573"],"package_hash":"npb7a53yz7wqx4nvnasxwgzxaoiks6sdjz2eugrgkjxs4ml24xea====","dependencies":[{"name":"diffutils","hash":"vypacletq7k6duftdyt627x5arvzf2zs","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"libsigsegv","hash":"2buqgc3n7m2tlhiqlprzq7rg7o2sq55r","parameters":{"deptypes":["build","link"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"f2iq4foz2aky2aqfgh5vgsmkzojkdtxu"},"2buqgc3n7m2tlhiqlprzq7rg7o2sq55r":{"name":"libsigsegv","version":"2.14","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"ypp3sciaprcyojozq2c5gqugtewmr5ytjbfpycyhu6wivtky7rja====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"2buqgc3n7m2tlhiqlprzq7rg7o2sq55r"},"tlnw2tkaf2ivdmkfy4sgktcqypvuebxg":{"name":"util-macros","version":"1.19.3","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"5atggv5uirdl2trmzmewkonyvzmzg6sg46zpvurdk43wi2gpr7pa====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"tlnw2tkaf2ivdmkfy4sgktcqypvuebxg"},"is4ojmbyyf3ncmbw2bnk52jqmepvnx4a":{"name":"libxml2","version":"2.10.3","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","pic":true,"python":false,"shared":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"squqo2aayigwxdusu3q3syojwit5gqdh6q4un576652hy4gytxcq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["build","link"],"virtuals":["iconv","libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"pkgconf","hash":"udj2is6zd4txwiunnmvdcyjj4mzc57rd","parameters":{"deptypes":["build"],"virtuals":["pkgconfig"]}},{"name":"xz","hash":"h3chnd2whpjrstvirppzwng4nrqfrzip","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"zlib-ng","hash":"vadvpfj2mrmlrwl5x5ail6o6gl6lezkp","parameters":{"deptypes":["build","link"],"virtuals":["zlib-api"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"is4ojmbyyf3ncmbw2bnk52jqmepvnx4a"},"h3chnd2whpjrstvirppzwng4nrqfrzip":{"name":"xz","version":"5.4.6","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","libs":["shared","static"],"pic":false,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"zt5vu2vph2v2qjwgdbe7btgcz7axpyalorcsqiuxhrg5grwgrrvq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"h3chnd2whpjrstvirppzwng4nrqfrzip"},"tkufbl5hckqurz55gy6ha6qd3dncdvpk":{"name":"libevent","version":"2.1.12","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","openssl":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"chtoynanib2eblvcdjcw7wxhpssxzovtbuewl3ygjqi56lhd3uka====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"openssl","hash":"vxfysozs7q5z3qxdyhagbubshmagstd7","parameters":{"deptypes":["build","link"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"tkufbl5hckqurz55gy6ha6qd3dncdvpk"},"cwkmfgjk4mjof7uwf7npb27eacksao4u":{"name":"numactl","version":"2.0.14","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","patches":["4e1d78cbbb85de625bad28705e748856033eaafab92a66dffd383a3d7e00cc94","62fc8a8bf7665a60e8f4c93ebbd535647cebf74198f7afafec4c085a8825c006","ff37630df599cfabf0740518b91ec8daaf18e8f288b19adaae5364dc1f6b2296"],"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"patches":["4e1d78cbbb85de625bad28705e748856033eaafab92a66dffd383a3d7e00cc94","62fc8a8bf7665a60e8f4c93ebbd535647cebf74198f7afafec4c085a8825c006","ff37630df599cfabf0740518b91ec8daaf18e8f288b19adaae5364dc1f6b2296"],"package_hash":"yfrelh4vcagcl7wantudtwpccnburhkpgqyvhgmxrzeo3wdmck4q====","dependencies":[{"name":"autoconf","hash":"44hks46iaqbgq5wxwkyvqttujwd6dfyk","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"automake","hash":"eaucnpeeexa3jqoa3m2zzajx4osggxld","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"libtool","hash":"azvarc6lisnkfrdv2b5pgrxattxdsb2v","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"m4","hash":"f2iq4foz2aky2aqfgh5vgsmkzojkdtxu","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"cwkmfgjk4mjof7uwf7npb27eacksao4u"},"44hks46iaqbgq5wxwkyvqttujwd6dfyk":{"name":"autoconf","version":"2.72","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"o2p7sd2y7u3arqkk24aap54uarfgpxcdohyjbpcmw56nkbs27ueq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"m4","hash":"f2iq4foz2aky2aqfgh5vgsmkzojkdtxu","parameters":{"deptypes":["build","run"],"virtuals":[]}},{"name":"perl","hash":"fklxodqpl5qa6awbgee5eqvkcnzhndrt","parameters":{"deptypes":["build","run"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"44hks46iaqbgq5wxwkyvqttujwd6dfyk"},"eaucnpeeexa3jqoa3m2zzajx4osggxld":{"name":"automake","version":"1.16.5","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"mwdviv4g6xu2ttfs6dnzmwbofpxa4vke3y5egbb6w4fesykvnbda====","dependencies":[{"name":"autoconf","hash":"44hks46iaqbgq5wxwkyvqttujwd6dfyk","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"perl","hash":"fklxodqpl5qa6awbgee5eqvkcnzhndrt","parameters":{"deptypes":["build","run"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"eaucnpeeexa3jqoa3m2zzajx4osggxld"},"q5ovukqq7smqhvep22bq76ru3p7ambyn":{"name":"openssh","version":"9.7p1","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","gssapi":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"kqq3i67lvcw7go2gzmo3z3glfbvwvehgqigvr3j7gb4plzxd7gzq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"krb5","hash":"wukqpxpecl76ri22nn7hpxizgpb47vuh","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"libedit","hash":"rolpfsbuedi54sggjfftdnf2er2u6daq","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"libxcrypt","hash":"vigex7i37utk2py6faljpv5alcfgmtec","parameters":{"deptypes":["link"],"virtuals":[]}},{"name":"ncurses","hash":"2it6ne7sib26k3mkxtr7rsfy7ntyk45b","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"openssl","hash":"vxfysozs7q5z3qxdyhagbubshmagstd7","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"zlib-ng","hash":"vadvpfj2mrmlrwl5x5ail6o6gl6lezkp","parameters":{"deptypes":["build","link"],"virtuals":["zlib-api"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"q5ovukqq7smqhvep22bq76ru3p7ambyn"},"wukqpxpecl76ri22nn7hpxizgpb47vuh":{"name":"krb5","version":"1.21.2","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","shared":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"vlgx7p5osjiceqck4vs2urfyfemhrxubwxscwduv7hnisoqmn75a====","dependencies":[{"name":"bison","hash":"lbozg7vpwlzuaqzvuvjq7mkkgtaprufq","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"diffutils","hash":"vypacletq7k6duftdyt627x5arvzf2zs","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"findutils","hash":"66b3nixhck4wwcraohwb4yv4xkqhuhq7","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"gettext","hash":"6walsy7plkh5jsmhfcjs7ycegmmoejxb","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"openssl","hash":"vxfysozs7q5z3qxdyhagbubshmagstd7","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"perl","hash":"fklxodqpl5qa6awbgee5eqvkcnzhndrt","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"wukqpxpecl76ri22nn7hpxizgpb47vuh"},"lbozg7vpwlzuaqzvuvjq7mkkgtaprufq":{"name":"bison","version":"3.8.2","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","color":false,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"d4j62fwvuxqbiez32ltjnhu47ac425wjebsy6fhoptv6saxazcxq====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"m4","hash":"f2iq4foz2aky2aqfgh5vgsmkzojkdtxu","parameters":{"deptypes":["build","run"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"lbozg7vpwlzuaqzvuvjq7mkkgtaprufq"},"6walsy7plkh5jsmhfcjs7ycegmmoejxb":{"name":"gettext","version":"0.22.5","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","bzip2":true,"curses":true,"git":true,"libunistring":false,"libxml2":true,"pic":true,"shared":true,"tar":true,"xz":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"6jj4v4jxihnsb4fzhdviq2ht6bep4pjfciqeg453dhyj73e4fl6a====","dependencies":[{"name":"bzip2","hash":"foieuzksyh2iplc2dzxk6woupqnnzafe","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["build","link"],"virtuals":["iconv","libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"libxml2","hash":"is4ojmbyyf3ncmbw2bnk52jqmepvnx4a","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"ncurses","hash":"2it6ne7sib26k3mkxtr7rsfy7ntyk45b","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"tar","hash":"7xpkkpmchep5rttlbrjdprrmjdfx7o2c","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"xz","hash":"h3chnd2whpjrstvirppzwng4nrqfrzip","parameters":{"deptypes":["build","link","run"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"6walsy7plkh5jsmhfcjs7ycegmmoejxb"},"7xpkkpmchep5rttlbrjdprrmjdfx7o2c":{"name":"tar","version":"1.34","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","zip":"pigz","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"cpgzon3rxegbd3xdnmhrmxvzaq5hyvpzz4y6egmhghhydvefupuq====","dependencies":[{"name":"bzip2","hash":"foieuzksyh2iplc2dzxk6woupqnnzafe","parameters":{"deptypes":["run"],"virtuals":[]}},{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["build","link"],"virtuals":["iconv","libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"pigz","hash":"7ssau2ubdmlbm25c4gwfvfdebjz7qrdk","parameters":{"deptypes":["run"],"virtuals":[]}},{"name":"xz","hash":"h3chnd2whpjrstvirppzwng4nrqfrzip","parameters":{"deptypes":["run"],"virtuals":[]}},{"name":"zstd","hash":"leaneta2pcrzhiwjkje7z6bztkvjsnje","parameters":{"deptypes":["run"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"7xpkkpmchep5rttlbrjdprrmjdfx7o2c"},"7ssau2ubdmlbm25c4gwfvfdebjz7qrdk":{"name":"pigz","version":"2.8","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"makefile","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"4w67lflje4giekjg4ie2vpyuiunjcumo6geofykvon3hodllp42q====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"zlib-ng","hash":"vadvpfj2mrmlrwl5x5ail6o6gl6lezkp","parameters":{"deptypes":["build","link"],"virtuals":["zlib-api"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"7ssau2ubdmlbm25c4gwfvfdebjz7qrdk"},"leaneta2pcrzhiwjkje7z6bztkvjsnje":{"name":"zstd","version":"1.5.6","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"makefile","compression":["none"],"libs":["shared","static"],"programs":true,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"uvmrov4c6unft6o4yd3jk3uqvweua3uhwdli4sw7h5wvklaf5t3q====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"leaneta2pcrzhiwjkje7z6bztkvjsnje"},"rolpfsbuedi54sggjfftdnf2er2u6daq":{"name":"libedit","version":"3.1-20230828","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"wij27clgemujebl6ce2tg52bd3tzzvrr6rlj7zyox724qlrbafba====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"ncurses","hash":"2it6ne7sib26k3mkxtr7rsfy7ntyk45b","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"pkgconf","hash":"udj2is6zd4txwiunnmvdcyjj4mzc57rd","parameters":{"deptypes":["build"],"virtuals":["pkgconfig"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"rolpfsbuedi54sggjfftdnf2er2u6daq"},"vigex7i37utk2py6faljpv5alcfgmtec":{"name":"libxcrypt","version":"4.4.35","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","obsolete_api":false,"patches":["4885da3afc027999d7cc3c231de7fc6f3c8b119847536e0fc106bc846c617b9b"],"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"patches":["4885da3afc027999d7cc3c231de7fc6f3c8b119847536e0fc106bc846c617b9b"],"package_hash":"dam6cqot2l4nfh6nk3jidk7u2pr2p534tw7446ejqwttqitr4zea====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"perl","hash":"fklxodqpl5qa6awbgee5eqvkcnzhndrt","parameters":{"deptypes":["build"],"virtuals":[]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"vigex7i37utk2py6faljpv5alcfgmtec"},"ioivba3iifit7lcy2xwojbfy6wzl2m5h":{"name":"pmix","version":"5.0.1","arch":{"platform":"linux","platform_os":"ubuntu22.04","target":"x86_64_v3"},"namespace":"builtin","parameters":{"build_system":"autotools","docs":false,"pmi_backwards_compatibility":true,"python":false,"restful":false,"cflags":[],"cppflags":[],"cxxflags":[],"fflags":[],"ldflags":[],"ldlibs":[]},"package_hash":"cscwabesbiokragt3qr6y3qeokebhkru3o3pdq7xknkfpyooqpva====","dependencies":[{"name":"glibc","hash":"ob46f4apc7zqnt6cq7jem6iodf72z45y","parameters":{"deptypes":["link"],"virtuals":["libc"]}},{"name":"gmake","hash":"2i5w66ksi2es67thjquz25hzgovdfquf","parameters":{"deptypes":["build"],"virtuals":[]}},{"name":"hwloc","hash":"xlruoqs34ha7zn4tphis2rlge7x5q3da","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"libevent","hash":"tkufbl5hckqurz55gy6ha6qd3dncdvpk","parameters":{"deptypes":["build","link"],"virtuals":[]}},{"name":"pkgconf","hash":"udj2is6zd4txwiunnmvdcyjj4mzc57rd","parameters":{"deptypes":["build"],"virtuals":["pkgconfig"]}}],"annotations":{"original_specfile_version":4,"compiler":"clang@=15.0.7"},"hash":"ioivba3iifit7lcy2xwojbfy6wzl2m5h"}}} \ No newline at end of file diff --git a/.spack/int32-real32-shared/spack.yaml b/.spack/int32-real32-shared/spack.yaml new file mode 100644 index 0000000..d348999 --- /dev/null +++ b/.spack/int32-real32-shared/spack.yaml @@ -0,0 +1,31 @@ +# This is a Spack Environment file. +# +# It describes a set of packages to be installed, along with +# configuration settings. +spack: + config: + install_tree: + padded_length: 128 + packages: + all: + compiler: ['gcc@14:', 'clang@14:'] + require: [target=x86_64_v3] + mpi: + require: [openmpi@:4.1.6 fabrics=auto] + definitions: + - compilers: ['gcc@14:'] + - mpis: [openmpi@:4.1.6 fabrics=auto] + - packages: [gklib+shared, metis+shared~int64] + specs: + - $compilers + - matrix: + - [$mpis] + - [$%compilers] + - matrix: + - [$packages] + - [$%compilers] + view: true + concretizer: + unify: true + mirrors: + numpex-buildcache: oci://ghcr.io/numpex/spack-buildcache diff --git a/.spack/int64-real64-shared/spack.yaml b/.spack/int64-real64-shared/spack.yaml new file mode 100644 index 0000000..d5ae6cf --- /dev/null +++ b/.spack/int64-real64-shared/spack.yaml @@ -0,0 +1,31 @@ +# This is a Spack Environment file. +# +# It describes a set of packages to be installed, along with +# configuration settings. +spack: + config: + install_tree: + padded_length: 128 + packages: + all: + compiler: [gcc@14:, clang@14:] + require: ['target=x86_64_v3'] + mpi: + require: ['openmpi@:4 fabrics=auto'] + definitions: + - compilers: [gcc@12:] + - mpis: ['openmpi@:4.1.6 fabrics=auto'] + - packages: [gklib+shared,metis+shared+int64] + specs: + - $compilers + - matrix: + - [$mpis] + - [$%compilers] + - matrix: + - [$packages] + - [$%compilers] + view: true + concretizer: + unify: when_possible + mirrors: + numpex-buildcache: oci://ghcr.io/numpex/spack-buildcache diff --git a/CMakeLists.txt b/CMakeLists.txt index 146bc5f..157ae4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,43 +1,130 @@ -cmake_minimum_required(VERSION 2.8) -project(ParMETIS C) +cmake_minimum_required(VERSION 3.15) +project(ParMETIS + VERSION 4.0.4 + DESCRIPTION "Parallel Graph Partitioning Library" + LANGUAGES C +) -# Search for MPI. -# GK commented this out as it seems to be creating problems -# include(FindMPI) -# if(NOT MPI_FOUND) -# message(FATAL_ERROR "mpi is not found") -# endif() -# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MPI_COMPILE_FLAGS}") +set(ParMETIS_PRERELEASE "-rc.4") +set(ParMETIS_VERSION_STRING "${PROJECT_VERSION}${ParMETIS_PRERELEASE}") +set(ParMETIS_VERSION_MAJOR 5) +set(ParMETIS_VERSION_MINOR 3) +set(ParMETIS_VERSION_PATCH 1) +set(ParMETIS_VERSION "${ParMETIS_VERSION_MAJOR}.${ParMETIS_VERSION_MINOR}.${ParMETIS_VERSION_PATCH}${ParMETIS_PRERELEASE}") +set(ParMETIS_VERSION_NUMBER + ((ParMETIS_VERSION_MAJOR << 16) | (ParMETIS_VERSION_MINOR << 9) | ParMETIS_VERSION_PATCH) +) +# ----------------------------------------------------------------------------- +# 1) Options +# ----------------------------------------------------------------------------- -# Prepare libraries. -if(SHARED) - set(ParMETIS_LIBRARY_TYPE SHARED) +option(IDX64 "enable 64‑bit indices (IDXTYPEWIDTH=64)" OFF) +option(REAL64 "enable 64‑bit reals (REALTYPEWIDTH=64)" OFF) +option(SHARED "build shared library" OFF) +option(GDB "enable gdb symbols" OFF) +option(ASSERT "enable ASSERT" OFF) +option(ASSERT2 "enable ASSERT2" OFF) +option(DEBUG "enable DEBUG" OFF) +option(GPROF "enable gprof profiling" OFF) +option(VALGRIND "enable valgrind instrumentation" OFF) +option(OPENMP "enable OpenMP support" OFF) + +option(BUILD_SHARED_LIBS + "Build ParMETIS as a shared library (default OFF → static)" + ${SHARED} +) +# ----------------------------------------------------------------------------- +# 2) Map options to compile-time widths +# ----------------------------------------------------------------------------- +if(IDX64) + set(IDXTYPEWIDTH 64) else() - set(ParMETIS_LIBRARY_TYPE STATIC) + set(IDXTYPEWIDTH 32) endif() -include(./conf/gkbuild.cmake) - -# List of paths that the compiler will search for header files. -# i.e., the -I equivalent -include_directories(include) -include_directories(${MPI_INCLUDE_PATH}) -include_directories(${GKLIB_PATH}/include) -include_directories(${METIS_PATH}/include) -include_directories(${CMAKE_INSTALL_PREFIX}/include) - -# List of paths that the compiler will search for library files. -# i.e., the -L equivalent -link_directories(${GKLIB_PATH}/lib) -link_directories(${METIS_PATH}/lib) -link_directories(${CMAKE_INSTALL_PREFIX}/lib) - -# List of directories that cmake will look for CMakeLists.txt -add_subdirectory(include) -add_subdirectory(libparmetis) -add_subdirectory(programs) - -# This is for testing during development and is not being distributed -#add_subdirectory(test) +if(REAL64) + set(REALTYPEWIDTH 64) +else() + set(REALTYPEWIDTH 32) +endif() + + + +# ----------------------------------------------------------------------------- +# 2) Dependencies +# ----------------------------------------------------------------------------- +find_package(MPI REQUIRED) # MPI::MPI_C +find_package(GKlib REQUIRED) # GKlib::GKlib +find_package(Metis REQUIRED) # METIS::metis +if(OPENMP) + find_package(OpenMP REQUIRED) +endif() + +option(PARMETIS_ENABLE_TESTS "Enable PARMETIS testing (default OFF)" ON) +if (PARMETIS_ENABLE_TESTS) + enable_testing() +endif() +# ----------------------------------------------------------------------------- +# 3) Subdirectories +# ----------------------------------------------------------------------------- +add_subdirectory(include) # installs parmetis.h +add_subdirectory(libparmetis) # builds ParMETIS lib +add_subdirectory(programs) # builds pm_* executables + +# ----------------------------------------------------------------------------- +# 4) Installation & Export +# ----------------------------------------------------------------------------- +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +install( + EXPORT ParMETISTargets + NAMESPACE ParMETIS:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ParMETIS +) + +# 4b) Generate and install Config files for find_package(ParMETIS) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/ParMETISConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion +) + +configure_package_config_file( + "${CMAKE_CURRENT_LIST_DIR}/cmake/ParMETISConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/ParMETISConfig.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ParMETIS +) + +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/ParMETISConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/ParMETISConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ParMETIS +) + +# ----------------------------------------------------------------------------- +# 5) CPack (optional) +# ----------------------------------------------------------------------------- +include(InstallRequiredSystemLibraries) +set(CPACK_PACKAGE_NAME "ParMETIS") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ParMETIS Graph Partitioning Library") +set(CPACK_PACKAGE_VERSION_MAJOR "${ParMETIS_VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${ParMETIS_VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${ParMETIS_VERSION_PATCH}") +set(CPACK_PACKAGE_VERSION "${ParMETIS_VERSION}") +set(CPACK_PACKAGE_NAME "${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${ParMETIS_PRERELEASE}") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}${ParMETIS_PRERELEASE}") +SET(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${ParMETIS_PRERELEASE}-${CMAKE_SYSTEM_NAME}") + +# Optionally point to your LICENSE and README +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") +set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md") +set(CPACK_GENERATOR "TGZ;ZIP") +set(CPACK_SOURCE_IGNORE_FILES + "/build/;/.spack-env/;spack*;metis-*;.git/;~$;${CPACK_SOURCE_IGNORE_FILES}" +) + +include(CPack) \ No newline at end of file diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..6e1a8df --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,132 @@ +{ + "version": 3, + "cmakeMinimumRequired": { + "major": 3, + "minor": 21, + "patch": 0 + }, + "configurePresets": [ + { + "name": "default", + "displayName": "Static Release", + "description": "Static Release build of METIS", + "generator": "Ninja", + "binaryDir": "${sourceDir}/build/${presetName}", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "BUILD_SHARED_LIBS": "OFF", + "IDX64": "OFF", + "REAL64": "OFF", + "GDB": "OFF", + "ASSERT": "OFF", + "ASSERT2": "OFF", + "DEBUG": "OFF", + "GPROF": "OFF", + "VALGRIND": "OFF", + "OPENMP": "OFF", + "GKLIB_PATH": "", + "METIS_INSTALL": "ON" + } + }, + { + "name": "shared", + "displayName": "Shared Release", + "description": "Shared-library Release build of METIS", + "inherits": "default", + "generator": "Ninja", + "binaryDir": "${sourceDir}/build/${presetName}", + "cacheVariables": { + "BUILD_SHARED_LIBS": "ON", + "CMAKE_RUNTIME_OUTPUT_DIRECTORY": "${sourceDir}/build/${presetName}/bin" + } + }, + { + "name": "local-gklib", + "displayName": "local gklib path", + "inherits": "default", + "generator": "Ninja", + "binaryDir": "${sourceDir}/build/${presetName}", + "cacheVariables": { + "BUILD_SHARED_LIBS": "ON", + "CMAKE_RUNTIME_OUTPUT_DIRECTORY": "${sourceDir}/build/${presetName}/bin", + "GKLIB_PATH": "./GKlib" + } + }, + { + "name": "int64", + "hidden": true, + "displayName": "64-bit integers", + "description": "64-bit integers build of METIS", + "inherits": "default", + "cacheVariables": { + "IDX64": "ON" + } + }, + { + "name": "real64", + "hidden": true, + "displayName": "64-bit real numbers", + "description": "64-bit real numbers build of METIS", + "inherits": "default", + "cacheVariables": { + "REAL64": "ON" + } + }, + { + "name": "int32-real32-shared", + "displayName": "32-bit index and real numbers (shared)", + "description": "32-bit index and real numbers build of METIS", + "inherits": ["shared"] + }, + { + "name": "int64-real64-shared", + "displayName": "64-bit index and real numbers (shared)", + "description": "64-bit index and real numbers build of METIS", + "inherits": ["int64","real64", "shared"] + } + ], + "buildPresets": [ + { + "name": "default", + "configurePreset": "default" + }, + { + "name": "shared", + "configurePreset": "shared" + }, + { + "name": "local-gklib", + "configurePreset": "local-gklib" + }, + { + "name": "int32-real32-shared", + "configurePreset": "int32-real32-shared" + }, + { + "name": "int64-real64-shared", + "configurePreset": "int64-real64-shared" + } + ], + "testPresets": [ + { + "name": "default", + "configurePreset": "default" + }, + { + "name": "shared", + "configurePreset": "shared" + }, + { + "name": "local-gklib", + "configurePreset": "local-gklib" + }, + { + "name": "int32-real32-shared", + "configurePreset": "int32-real32-shared" + }, + { + "name": "int64-real64-shared", + "configurePreset": "int64-real64-shared" + } + ] +} \ No newline at end of file diff --git a/cmake/ParMETISConfig.cmake.in b/cmake/ParMETISConfig.cmake.in new file mode 100644 index 0000000..a8c8a6c --- /dev/null +++ b/cmake/ParMETISConfig.cmake.in @@ -0,0 +1,6 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) +find_dependency(Metis REQUIRED) +# define imported target +include("${CMAKE_CURRENT_LIST_DIR}/ParMETISTargets.cmake") \ No newline at end of file diff --git a/libparmetis/CMakeLists.txt b/libparmetis/CMakeLists.txt index b9d6d84..f47a2ff 100644 --- a/libparmetis/CMakeLists.txt +++ b/libparmetis/CMakeLists.txt @@ -1,17 +1,48 @@ -# Include directories for library code. -include_directories(.) +# libparmetis/CMakeLists.txt -# Find sources. -file(GLOB parmetis_sources *.c) +# grab all the .c files in this directory +file(GLOB PARMETIS_SOURCES CONFIGURE_DEPENDS *.c) -# Create libparmetis -add_library(parmetis ${ParMETIS_LIBRARY_TYPE} ${parmetis_sources}) +# build either SHARED or STATIC +if(BUILD_SHARED_LIBS) + add_library(parmetis SHARED ${PARMETIS_SOURCES}) +else() + add_library(parmetis STATIC ${PARMETIS_SOURCES}) +endif() + +# headers are in ../include +target_include_directories(parmetis + PUBLIC + $ + $ + $ +) + +# pass along your width‐macros +target_compile_definitions(parmetis + PUBLIC + IDXTYPEWIDTH=${IDXTYPEWIDTH} + REALTYPEWIDTH=${REALTYPEWIDTH} +) -if(SHARED) - target_link_libraries(parmetis metis GKlib) +# OpenMP if requested +if(OPENMP) + find_package(OpenMP REQUIRED) + target_compile_definitions(parmetis PUBLIC OPENMP) + target_link_libraries(parmetis PUBLIC OpenMP::OpenMP_C) endif() - + +# link to MPI, METIS and GKlib +target_link_libraries(parmetis + PUBLIC + MPI::MPI_C + Metis::metis + GKlib::GKlib +) + install(TARGETS parmetis - LIBRARY DESTINATION lib - RUNTIME DESTINATION lib - ARCHIVE DESTINATION lib) + EXPORT ParMETISTargets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) diff --git a/programs/CMakeLists.txt b/programs/CMakeLists.txt index 2f9341c..c572e9c 100644 --- a/programs/CMakeLists.txt +++ b/programs/CMakeLists.txt @@ -1,16 +1,30 @@ -include_directories(.) +# programs/CMakeLists.txt -# Create programs. -add_executable(pm_ptest ptest.c io.c adaptgraph.c) -add_executable(pm_mtest mtest.c io.c) -add_executable(pm_parmetis parmetis.c io.c adaptgraph.c) -add_executable(pm_pometis pometis.c io.c) -add_executable(pm_dglpart dglpart.c) +# A helper macro: name + list of .c sources +macro(pm_program prog) + add_executable(${prog} ${ARGN}) + target_include_directories(${prog} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + target_link_libraries(${prog} + PRIVATE + parmetis + MPI::MPI_C + Metis::metis + GKlib::GKlib + ) + if(OPENMP) + find_package(OpenMP REQUIRED) + target_link_libraries(${prog} PRIVATE OpenMP::OpenMP_C) + endif() + install(TARGETS ${prog} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ) +endmacro() -# Link with the required libraries -foreach(prog pm_ptest pm_mtest pm_parmetis pm_pometis pm_dglpart) - target_link_libraries(${prog} parmetis metis GKlib m) -endforeach(prog) - -install(TARGETS pm_ptest pm_mtest pm_parmetis pm_pometis pm_dglpart - RUNTIME DESTINATION bin) +# now invoke it for each program: +pm_program(pm_ptest ptest.c io.c adaptgraph.c) +add_test(NAME pm_ptest COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 2 ${PROJECT_BINARY_DIR}/bin/pm_ptest ${PROJECT_SOURCE_DIR}/graphs/rotor.graph) +pm_program(pm_mtest mtest.c io.c) +add_test(NAME pm_mtest COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 2 ${PROJECT_BINARY_DIR}/bin/pm_mtest ${PROJECT_SOURCE_DIR}/graphs/bricks.hex3d) +pm_program(pm_parmetis parmetis.c io.c adaptgraph.c) +pm_program(pm_pometis pometis.c io.c) +pm_program(pm_dglpart dglpart.c) \ No newline at end of file