-
Notifications
You must be signed in to change notification settings - Fork 35
Introduce standalone SkalaXC with ABI-isolated CPU, CUDA, MPI, and language bindings #129
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Open
Changes from all commits
Commits
Show all changes
34 commits
Select commit
Hold shift + click to select a range
a7d10e7
Remove legacy GauXC integration
JensWehner 99d7efd
Bootstrap SkalaXC dependencies
JensWehner dd7fc5d
Add SkalaXC core data primitives
JensWehner 1b3e471
Add TorchScript model runtime
JensWehner 08b00af
Implement host XC backend
JensWehner 961c96c
Add ABI-isolated C++ API
JensWehner 436b9ac
Add C API
JensWehner f77abee
Add Fortran API
JensWehner 1ed798e
Add CUDA backend and native build
JensWehner 334b762
Add native integration and ABI tests
JensWehner d1931f0
Add native examples and API docs
JensWehner a73f11f
Add Python bindings and tests
JensWehner 229c7ac
Add package build recipes
JensWehner a540456
Integrate SkalaXC into Pixi
JensWehner 4ba29bc
Add CI and update repository docs
JensWehner b4a4ed3
fix all Setup Pixi
JensWehner bcf5b8c
Migrate SkalaXC tests to Catch2 3
JensWehner a413451
Strengthen SkalaXC behavioral contracts
JensWehner 967d7ab
Make SkalaXC test selection fail closed
JensWehner dca0535
Add chlorine functional parity coverage
JensWehner ff8c84f
Clarify SkalaXC API compatibility contracts
JensWehner a18c979
Document SkalaXC contributor workflow
JensWehner 26732ad
Fix PySCF SkalaXC gradient parity tests
JensWehner c4609c8
harden tests
JensWehner a60032c
Fix Python container value access and assignment
JensWehner 575ca43
Remove unsupported LKO molecular weights from public APIs
JensWehner 7d99b5f
Coordinate MPI evaluation failures across runtime ranks
JensWehner 616eb6d
Reject kinetic-density models without gradient features
JensWehner b3dfb54
reduce gpu4pyscf memory requirements
JensWehner 8f789ea
fix parit tests
JensWehner 62aff37
Fix MPI gradient tensor conversion
Copilot 7cbebde
made indexing cleaner
JensWehner b8e0256
each mpi test runs independently
JensWehner 86fbba0
add documentation
JensWehner File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| self-hosted-runner: | ||
| labels: | ||
| - microsoft-skala-cpu-pool | ||
| - microsoft-skala-gpu-pool | ||
| - microsoft-skala-small-gpu-pool | ||
|
|
||
| paths: | ||
| .github/workflows/**/*.{yml,yaml}: | ||
| ignore: | ||
| - '"paths" section must be sequence node but got alias node' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| name: Report compiler toolchain | ||
| description: Report the activated compiler environment and compiler-selected linker | ||
|
|
||
| inputs: | ||
| c-compiler: | ||
| description: C compiler command; defaults to CC or cc | ||
| required: false | ||
| default: "" | ||
| cxx-compiler: | ||
| description: C++ compiler command; defaults to CXX or c++ | ||
| required: false | ||
| default: "" | ||
| fortran-compiler: | ||
| description: Fortran compiler command; defaults to FC or gfortran | ||
| required: false | ||
| default: "" | ||
| cuda-compiler: | ||
| description: CUDA compiler command; defaults to CUDACXX or nvcc when available | ||
| required: false | ||
| default: "" | ||
|
|
||
| runs: | ||
| using: composite | ||
| steps: | ||
| - name: Report compiler toolchain | ||
| shell: bash | ||
| env: | ||
| INPUT_C_COMPILER: ${{ inputs.c-compiler }} | ||
| INPUT_CXX_COMPILER: ${{ inputs.cxx-compiler }} | ||
| INPUT_FORTRAN_COMPILER: ${{ inputs.fortran-compiler }} | ||
| INPUT_CUDA_COMPILER: ${{ inputs.cuda-compiler }} | ||
| run: | | ||
| set -euo pipefail | ||
|
|
||
| for variable in \ | ||
| CONDA_PREFIX CC CXX FC CUDACXX \ | ||
| CFLAGS CXXFLAGS FFLAGS CUDAFLAGS LDFLAGS | ||
| do | ||
| printf '%s=%s\n' "$variable" "${!variable:-<unset>}" | ||
| done | ||
|
|
||
| c_compiler=${INPUT_C_COMPILER:-${CC:-$(command -v cc || true)}} | ||
| cxx_compiler=${INPUT_CXX_COMPILER:-${CXX:-$(command -v c++ || true)}} | ||
| fortran_compiler=${INPUT_FORTRAN_COMPILER:-${FC:-$(command -v gfortran || true)}} | ||
| cuda_compiler=${INPUT_CUDA_COMPILER:-${CUDACXX:-$(command -v nvcc || true)}} | ||
|
|
||
| report_compiler() { | ||
| local language=$1 | ||
| local compiler=$2 | ||
| if [[ -z "$compiler" ]]; then | ||
| return | ||
| fi | ||
| printf '\n%s compiler: %s\n' "$language" "$compiler" | ||
| "$compiler" --version | ||
| } | ||
|
|
||
| report_compiler C "$c_compiler" | ||
| report_compiler C++ "$cxx_compiler" | ||
| report_compiler Fortran "$fortran_compiler" | ||
| report_compiler CUDA "$cuda_compiler" | ||
|
|
||
| if [[ -z "$cxx_compiler" ]]; then | ||
| printf 'A C++ compiler is required to identify the host linker.\n' >&2 | ||
| exit 1 | ||
| fi | ||
|
|
||
| linker=$("$cxx_compiler" -print-prog-name=ld) | ||
| if [[ "$linker" != /* ]]; then | ||
| linker=$(command -v "$linker" || true) | ||
| fi | ||
| if [[ -z "$linker" || ! -x "$linker" ]]; then | ||
| printf 'Could not resolve the C++ compiler-selected linker.\n' >&2 | ||
| exit 1 | ||
| fi | ||
|
|
||
| printf '\nC++ linker: %s\n' "$linker"; "$linker" --version || "$linker" -v |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,71 @@ | ||
| name: "PySCF-SkalaXC parity tests" | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| paths: &parity-test-paths | ||
| - '.github/workflows/pyscf-skalaxc-parity.yml' | ||
| - 'tests/**' | ||
| - 'skala/src/skala/**' | ||
| - 'SkalaXC/**' | ||
| - 'pixi.lock' | ||
| - 'pixi.toml' | ||
| - 'pyproject.toml' | ||
| pull_request: | ||
| branches: [main] | ||
| paths: *parity-test-paths | ||
| workflow_dispatch: | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| test: | ||
| runs-on: ubuntu-latest | ||
| env: | ||
| OMP_NUM_THREADS: 4 | ||
| steps: | ||
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | ||
| with: | ||
| submodules: recursive | ||
| persist-credentials: false | ||
|
|
||
| - name: Print CPU diagnostics | ||
| uses: ./.github/actions/cpu-diagnostics | ||
|
|
||
| - name: Setup Pixi | ||
| uses: ./.github/actions/setup-pixi | ||
| with: | ||
| environment: skalaxc-parity | ||
|
|
||
| - name: Configure SkalaXC | ||
| run: >- | ||
| cmake | ||
| -S SkalaXC | ||
| -B SkalaXC/build-pixi-parity | ||
| -G Ninja | ||
| -DCMAKE_BUILD_TYPE=Release | ||
| -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/SkalaXC/install-pixi-parity | ||
| -DSKALAXC_BUILD_FORTRAN=OFF | ||
| -DSKALAXC_BUILD_TESTS=OFF | ||
| -DSKALAXC_BUILD_EXAMPLES=OFF | ||
| -DSKALAXC_DOWNLOAD_MODELS=ON | ||
| -DSKALAXC_ENABLE_CUDA=OFF | ||
| -DSKALAXC_ENABLE_MPI=OFF | ||
| -DSKALAXC_ENABLE_OPENMP=ON | ||
|
|
||
| - name: Build and install SkalaXC | ||
| run: | | ||
| cmake --build SkalaXC/build-pixi-parity --parallel 2 | ||
| cmake --install SkalaXC/build-pixi-parity --component Core | ||
|
|
||
| - name: Install SkalaXC Python binding | ||
| env: | ||
| SkalaXC_DIR: ${{ github.workspace }}/SkalaXC/install-pixi-parity/lib/cmake/SkalaXC | ||
| SKALAXC_PYTHON_LAYOUT: WHEEL | ||
| run: >- | ||
| python -m pip install SkalaXC/python | ||
| --no-build-isolation --no-deps --force-reinstall | ||
|
|
||
| - name: Run direct-binding parity tests | ||
| run: pytest -v tests/test_pyscf_skalaxc_parity.py |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.