Skip to content
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

WIP: introduce libcugraph wheels #4804

Draft
wants to merge 38 commits into
base: branch-25.02
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
2898e78
distribute libcugraph wheels
jameslamb Dec 3, 2024
0ecd5a5
exclude libcugraph.so from cugraph/pylibcugraph
jameslamb Dec 4, 2024
f1645ac
fix pr-builder
jameslamb Dec 5, 2024
6e1d3d9
remove more cugraph-ops, fix variables
jameslamb Dec 5, 2024
3aa693c
remove Python interpreter stuff
jameslamb Dec 6, 2024
7c55d20
Merge branch 'branch-25.02' into libcugraph-wheel
jameslamb Dec 6, 2024
c5cb53d
temporarily raise size threshold
jameslamb Dec 6, 2024
e73606c
declare librmm dependency, fix CI dependency tree
jameslamb Dec 6, 2024
fc37020
run a subet of wheel-testing CI
jameslamb Dec 6, 2024
e80d566
skip devcontainer jobs
jameslamb Dec 6, 2024
695f627
skip 'checks' job too
jameslamb Dec 6, 2024
486bf96
just run Python 3.12 builds
jameslamb Dec 6, 2024
fce4fcf
move CUDA libs deps to wheels, ignore deprecation warning
jameslamb Dec 6, 2024
796b54e
more dependency fiddling
jameslamb Dec 6, 2024
157f63e
fix CI configs, remove unnecessary stuff from pylibcugraph CMake
jameslamb Dec 9, 2024
4b4c4b2
load libcugraph_c too
jameslamb Dec 9, 2024
e5aa3c2
merge branch-25.02
jameslamb Dec 9, 2024
089109f
fix typo
jameslamb Dec 9, 2024
881dc25
header install sort of working
jameslamb Dec 10, 2024
3484186
Merge branch 'branch-25.02' into libcugraph-wheel
nv-rliu Dec 12, 2024
ead60e4
install working (no libraft.a/libraft.so, just headers) ... export no…
jameslamb Dec 12, 2024
7dd4409
install working, exports still not quite working
jameslamb Dec 12, 2024
1d60712
remove debugging stuff
jameslamb Dec 12, 2024
7913278
merge branch-25.02
jameslamb Dec 12, 2024
96a7b5b
Merge branch 'libcugraph-wheel' of github.com:jameslamb/cugraph into …
jameslamb Dec 12, 2024
a18be8c
remove more debugging stuff
jameslamb Dec 12, 2024
7f4f13b
try adding exports back
jameslamb Dec 12, 2024
dc7dac9
use libraft wheels
jameslamb Dec 17, 2024
a38e5ae
use libraft from PR
jameslamb Dec 17, 2024
3e57917
update RAFT reference
jameslamb Dec 17, 2024
79cebbc
fix libcugraph build script
jameslamb Dec 17, 2024
3a07f41
try to fix installing libraft
jameslamb Dec 17, 2024
c753752
use constraints instead
jameslamb Dec 17, 2024
8e9fc0e
Merge branch 'branch-25.02' into libcugraph-wheel
jameslamb Dec 17, 2024
e72f55c
Merge branch 'branch-25.02' into libcugraph-wheel
jameslamb Dec 18, 2024
f924cef
merge branch-25.02
jameslamb Dec 20, 2024
c6b1d5a
try new libraft wheels
jameslamb Dec 20, 2024
ba612bd
merge
jameslamb Dec 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,28 @@ jobs:
node_type: "gpu-v100-latest-1"
run_script: "ci/build_docs.sh"
sha: ${{ inputs.sha }}
wheel-build-libcugraph:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
sha: ${{ inputs.sha }}
date: ${{ inputs.date }}
script: ci/build_wheel_libcugraph.sh
node_type: cpu32
wheel-publish-libcugraph:
needs: wheel-publish-libcugraph
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
sha: ${{ inputs.sha }}
date: ${{ inputs.date }}
package-name: libcugraph
wheel-build-pylibcugraph:
needs: wheel-publish-libcugraph
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
Expand All @@ -76,7 +97,6 @@ jobs:
sha: ${{ inputs.sha }}
date: ${{ inputs.date }}
script: ci/build_wheel_pylibcugraph.sh
node_type: cpu32
wheel-publish-pylibcugraph:
needs: wheel-build-pylibcugraph
secrets: inherit
Expand Down
277 changes: 144 additions & 133 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,37 +14,37 @@ jobs:
pr-builder:
needs:
- changed-files
- checks
- conda-cpp-build
- conda-cpp-tests
- conda-cpp-checks
- conda-notebook-tests
- conda-python-build
- conda-python-tests
- docs-build
# - checks
# - conda-cpp-build
# - conda-cpp-tests
# - conda-cpp-checks
# - conda-notebook-tests
# - conda-python-build
# - conda-python-tests
# - docs-build
- wheel-build-libcugraph
- wheel-build-pylibcugraph
- wheel-tests-pylibcugraph
- wheel-build-cugraph
- wheel-tests-cugraph
- telemetry-setup
- devcontainer
# - wheel-tests-pylibcugraph
# - wheel-build-cugraph
# - wheel-tests-cugraph
# - telemetry-setup
# - devcontainer
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
if: always()
with:
needs: ${{ toJSON(needs) }}
telemetry-setup:
runs-on: ubuntu-latest
continue-on-error: true
env:
OTEL_SERVICE_NAME: "pr-cugraph"
steps:
- name: Telemetry setup
if: ${{ vars.TELEMETRY_ENABLED == 'true' }}
uses: rapidsai/shared-actions/telemetry-dispatch-stash-base-env-vars@main
# telemetry-setup:
# runs-on: ubuntu-latest
# continue-on-error: true
# env:
# OTEL_SERVICE_NAME: "pr-cugraph"
# steps:
# - name: Telemetry setup
# uses: rapidsai/shared-actions/telemetry-dispatch-stash-base-env-vars@main
changed-files:
secrets: inherit
needs: telemetry-setup
# needs: telemetry-setup
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
files_yaml: |
Expand Down Expand Up @@ -73,123 +73,134 @@ jobs:
- '!docs/**'
- '!img/**'
- '!notebooks/**'
checks:
# checks:
# secrets: inherit
# # needs: telemetry-setup
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# with:
# enable_check_generated_files: false
# ignored_pr_jobs: telemetry-summarize
# conda-cpp-build:
# needs: checks
# secrets: inherit
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# with:
# build_type: pull-request
# node_type: cpu32
# conda-cpp-tests:
# needs: [conda-cpp-build, changed-files]
# secrets: inherit
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
# with:
# build_type: pull-request
# conda-cpp-checks:
# needs: conda-cpp-build
# secrets: inherit
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# with:
# build_type: pull-request
# enable_check_symbols: true
# symbol_exclusions: (cugraph::ops|hornet|void writeEdgeCountsKernel|void markUniqueOffsetsKernel)
# conda-python-build:
# needs: conda-cpp-build
# secrets: inherit
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# with:
# build_type: pull-request
# conda-python-tests:
# needs: [conda-python-build, changed-files]
# secrets: inherit
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python
# with:
# build_type: pull-request
# conda-notebook-tests:
# needs: [conda-python-build, changed-files]
# secrets: inherit
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_notebooks
# with:
# build_type: pull-request
# node_type: "gpu-v100-latest-1"
# arch: "amd64"
# container_image: "rapidsai/ci-conda:cuda11.8.0-ubuntu22.04-py3.10"
# run_script: "ci/test_notebooks.sh"
# docs-build:
# needs: conda-python-build
# secrets: inherit
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# with:
# build_type: pull-request
# node_type: "gpu-v100-latest-1"
# arch: "amd64"
# container_image: "rapidsai/ci-conda:cuda11.8.0-ubuntu22.04-py3.10"
# run_script: "ci/build_docs.sh"
wheel-build-libcugraph:
# needs: checks
secrets: inherit
needs: telemetry-setup
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
enable_check_generated_files: false
ignored_pr_jobs: telemetry-summarize
conda-cpp-build:
needs: checks
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
# build for every combination of arch and CUDA version, but only for the latest Python
matrix_filter: group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(".")|map(tonumber)))
build_type: pull-request
script: ci/build_wheel_libcugraph.sh
node_type: cpu32
conda-cpp-tests:
needs: [conda-cpp-build, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
with:
build_type: pull-request
conda-cpp-checks:
needs: conda-cpp-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
build_type: pull-request
enable_check_symbols: true
symbol_exclusions: (cugraph::ops|hornet|void writeEdgeCountsKernel|void markUniqueOffsetsKernel)
conda-python-build:
needs: conda-cpp-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
build_type: pull-request
conda-python-tests:
needs: [conda-python-build, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python
with:
build_type: pull-request
conda-notebook-tests:
needs: [conda-python-build, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_notebooks
with:
build_type: pull-request
node_type: "gpu-v100-latest-1"
arch: "amd64"
container_image: "rapidsai/ci-conda:cuda11.8.0-ubuntu22.04-py3.10"
run_script: "ci/test_notebooks.sh"
docs-build:
needs: conda-python-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
build_type: pull-request
node_type: "gpu-v100-latest-1"
arch: "amd64"
container_image: "rapidsai/ci-conda:cuda11.8.0-ubuntu22.04-py3.10"
run_script: "ci/build_docs.sh"
wheel-build-pylibcugraph:
needs: checks
needs: wheel-build-libcugraph
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
build_type: pull-request
script: ci/build_wheel_pylibcugraph.sh
node_type: cpu32
wheel-tests-pylibcugraph:
needs: [wheel-build-pylibcugraph, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python
with:
build_type: pull-request
script: ci/test_wheel_pylibcugraph.sh
wheel-build-cugraph:
needs: wheel-build-pylibcugraph
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
build_type: pull-request
script: ci/build_wheel_cugraph.sh
wheel-tests-cugraph:
needs: [wheel-build-cugraph, changed-files]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python
with:
build_type: pull-request
script: ci/test_wheel_cugraph.sh
devcontainer:
secrets: inherit
needs: telemetry-setup
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
with:
arch: '["amd64"]'
cuda: '["12.5"]'
node_type: cpu32
build_command: |
sccache -z;
build-all --verbose -j$(nproc --ignore=1) -DBUILD_CUGRAPH_MG_TESTS=ON;
sccache -s;
telemetry-summarize:
runs-on: ubuntu-latest
needs: pr-builder
if: ${{ vars.TELEMETRY_ENABLED == 'true' && !cancelled() }}
continue-on-error: true
steps:
- name: Load stashed telemetry env vars
uses: rapidsai/shared-actions/telemetry-dispatch-load-base-env-vars@main
with:
load_service_name: true
- name: Telemetry summarize
uses: rapidsai/shared-actions/telemetry-dispatch-write-summary@main
with:
cert_concat: "${{ secrets.OTEL_EXPORTER_OTLP_CA_CERTIFICATE }};${{ secrets.OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE }};${{ secrets.OTEL_EXPORTER_OTLP_CLIENT_KEY }}"
# wheel-tests-pylibcugraph:
# needs: [wheel-build-pylibcugraph, changed-files]
# secrets: inherit
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python
# with:
# build_type: pull-request
# script: ci/test_wheel_pylibcugraph.sh
# wheel-build-cugraph:
# needs: wheel-build-pylibcugraph
# secrets: inherit
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# with:
# build_type: pull-request
# script: ci/build_wheel_cugraph.sh
# wheel-tests-cugraph:
# needs: [wheel-build-cugraph, changed-files]
# secrets: inherit
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# # if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python
# with:
# build_type: pull-request
# script: ci/test_wheel_cugraph.sh
# # This selects "ARCH=amd64 + the latest supported Python + CUDA".
# matrix_filter: map(select(.ARCH == "amd64")) | max_by([(.PY_VER|split(".")|map(tonumber)), (.CUDA_VER|split(".")|map(tonumber))]) | [.]
# devcontainer:
# secrets: inherit
# # needs: telemetry-setup
# uses: rapidsai/shared-workflows/.github/workflows/[email protected]
# with:
# arch: '["amd64"]'
# cuda: '["12.5"]'
# node_type: cpu32
# build_command: |
# sccache -z;
# build-all --verbose -j$(nproc --ignore=1) -DBUILD_CUGRAPH_MG_TESTS=ON;
# sccache -s;
# telemetry-summarize:
# runs-on: ubuntu-latest
# needs: pr-builder
# if: always()
# continue-on-error: true
# steps:
# - name: Load stashed telemetry env vars
# uses: rapidsai/shared-actions/telemetry-dispatch-load-base-env-vars@main
# with:
# load_service_name: true
# - name: Telemetry summarize
# uses: rapidsai/shared-actions/telemetry-dispatch-write-summary@main
# with:
# cert_concat: "${{ secrets.OTEL_EXPORTER_OTLP_CA_CERTIFICATE }};${{ secrets.OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE }};${{ secrets.OTEL_EXPORTER_OTLP_CLIENT_KEY }}"
7 changes: 3 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,16 @@ test-results
## Python build directories & artifacts
dask-worker-space/
htmlcov
*.conda
dist/
*.egg-info/
.egg-info/
python/build
python/cugraph/bindings/*.cpp
wheels/
wheelhouse/
_skbuild/
cufile.log

## pylibcugraph build directories & artifacts
python/pylibcugraph/pylibcugraph.egg-info
*.whl

## Patching
*.diff
Expand Down
5 changes: 0 additions & 5 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -175,11 +175,6 @@ SKBUILD_EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS}"
# Replace spaces with semicolons in SKBUILD_EXTRA_CMAKE_ARGS
SKBUILD_EXTRA_CMAKE_ARGS=$(echo ${SKBUILD_EXTRA_CMAKE_ARGS} | sed 's/ /;/g')

# Append `-DFIND_CUGRAPH_CPP=ON` to EXTRA_CMAKE_ARGS unless a user specified the option.
if [[ "${EXTRA_CMAKE_ARGS}" != *"DFIND_CUGRAPH_CPP"* ]]; then
SKBUILD_EXTRA_CMAKE_ARGS="${SKBUILD_EXTRA_CMAKE_ARGS};-DFIND_CUGRAPH_CPP=ON"
fi

# If clean or uninstall targets given, run them prior to any other steps
if hasArg uninstall; then
if [[ "$INSTALL_PREFIX" != "" ]]; then
Expand Down
Loading
Loading