Skip to content

Commit cb39254

Browse files
authored
Merge branch 'main' into all-neighbors-bf-metrics
2 parents 6bfc3be + f2bffb6 commit cb39254

149 files changed

Lines changed: 4562 additions & 1325 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yaml

Lines changed: 43 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -44,51 +44,65 @@ jobs:
4444
script: ci/build_cpp.sh
4545
sha: ${{ inputs.sha }}
4646

47+
rocky8-clib-standalone-build-matrix:
48+
secrets: inherit
49+
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
50+
with:
51+
build_type: pull-request
52+
matrix_name: conda-cpp-build
4753
rocky8-clib-standalone-build:
54+
needs: rocky8-clib-standalone-build-matrix
4855
secrets: inherit
4956
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
5057
strategy:
5158
fail-fast: false
52-
matrix:
53-
cuda_version:
54-
- &latest_cuda12 '12.9.1'
55-
- &latest_cuda13 '13.1.1'
56-
arch:
57-
- amd64
58-
- arm64
59+
matrix: ${{ fromJSON(needs.rocky8-clib-standalone-build-matrix.outputs.matrix) }}
5960
with:
6061
build_type: ${{ inputs.build_type || 'branch' }}
6162
branch: ${{ inputs.branch }}
62-
arch: "${{matrix.arch}}"
63+
arch: "${{matrix.ARCH}}"
6364
date: ${{ inputs.date }}
64-
container_image: "rapidsai/ci-wheel:26.06-cuda${{ matrix.cuda_version }}-rockylinux8-py3.11"
65+
container_image: "rapidsai/ci-wheel:26.06-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
6566
node_type: "cpu16"
6667
requires_license_builder: true
6768
script: "ci/build_standalone_c.sh"
68-
artifact-name: "libcuvs_c_${{ matrix.cuda_version }}_${{ matrix.arch }}.tar.gz"
69+
artifact-name: "libcuvs_c_${{ matrix.CUDA_VER }}_${{ matrix.ARCH }}.tar.gz"
6970
file_to_upload: "libcuvs_c.tar.gz"
7071
sha: ${{ inputs.sha }}
71-
rust-build:
72+
rust-build-matrix:
7273
needs: cpp-build
7374
secrets: inherit
75+
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
76+
with:
77+
build_type: pull-request
78+
matrix_name: conda-cpp-build
79+
matrix_filter: map(select(.ARCH == "amd64"))
80+
rust-build:
81+
needs: rust-build-matrix
82+
secrets: inherit
7483
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
7584
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
7685
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
7786
strategy:
7887
fail-fast: false
79-
matrix:
80-
cuda_version:
81-
- *latest_cuda12
82-
- *latest_cuda13
88+
matrix: ${{ fromJSON(needs.rust-build-matrix.outputs.matrix) }}
8389
with:
8490
build_type: ${{ inputs.build_type || 'branch' }}
8591
branch: ${{ inputs.branch }}
8692
arch: "amd64"
8793
date: ${{ inputs.date }}
88-
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.cuda_version }}-ubuntu24.04-py3.13"
94+
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
8995
node_type: "gpu-l4-latest-1"
9096
script: "ci/build_rust.sh"
9197
sha: ${{ inputs.sha }}
98+
go-build-matrix:
99+
needs: cpp-build
100+
secrets: inherit
101+
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
102+
with:
103+
build_type: pull-request
104+
matrix_name: conda-cpp-build
105+
matrix_filter: map(select(.ARCH == "amd64"))
92106
go-build:
93107
needs: cpp-build
94108
secrets: inherit
@@ -97,19 +111,24 @@ jobs:
97111
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
98112
strategy:
99113
fail-fast: false
100-
matrix:
101-
cuda_version:
102-
- *latest_cuda12
103-
- *latest_cuda13
114+
matrix: ${{ fromJSON(needs.go-build-matrix.outputs.matrix) }}
104115
with:
105116
build_type: ${{ inputs.build_type || 'branch' }}
106117
branch: ${{ inputs.branch }}
107118
arch: "amd64"
108119
date: ${{ inputs.date }}
109-
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.cuda_version }}-ubuntu24.04-py3.13"
120+
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
110121
node_type: "gpu-l4-latest-1"
111122
script: "ci/build_go.sh"
112123
sha: ${{ inputs.sha }}
124+
java-build-matrix:
125+
needs: cpp-build
126+
secrets: inherit
127+
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
128+
with:
129+
build_type: pull-request
130+
matrix_name: conda-cpp-build
131+
matrix_filter: map(select(.ARCH == "amd64"))
113132
java-build:
114133
needs: cpp-build
115134
secrets: inherit
@@ -118,18 +137,15 @@ jobs:
118137
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
119138
strategy:
120139
fail-fast: false
121-
matrix:
122-
cuda_version:
123-
- *latest_cuda12
124-
- *latest_cuda13
140+
matrix: ${{ fromJSON(needs.java-build-matrix.outputs.matrix) }}
125141
with:
126142
build_type: ${{ inputs.build_type || 'branch' }}
127143
branch: ${{ inputs.branch }}
128144
arch: "amd64"
129145
date: ${{ inputs.date }}
130-
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.cuda_version }}-ubuntu24.04-py3.13"
146+
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
131147
script: "ci/build_java.sh"
132-
artifact-name: "cuvs-java-cuda${{ matrix.cuda_version }}"
148+
artifact-name: "cuvs-java-cuda${{ matrix.CUDA_VER }}"
133149
file_to_upload: "java/cuvs-java/target/"
134150
sha: ${{ inputs.sha }}
135151
python-build:

.github/workflows/pr.yaml

Lines changed: 65 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,15 @@ jobs:
1818
- conda-cpp-checks
1919
- conda-python-build
2020
- conda-python-tests
21+
- rocky8-clib-standalone-build-matrix
2122
- rocky8-clib-standalone-build
23+
- rocky8-clib-tests-matrix
2224
- rocky8-clib-tests
25+
- conda-java-build-and-tests-matrix
2326
- conda-java-build-and-tests
27+
- rust-build-matrix
2428
- rust-build
29+
- go-build-matrix
2530
- go-build
2631
- docs-build
2732
- wheel-build-libcuvs
@@ -373,110 +378,127 @@ jobs:
373378
with:
374379
build_type: pull-request
375380
script: ci/test_python.sh
381+
rocky8-clib-standalone-build-matrix:
382+
needs: checks
383+
secrets: inherit
384+
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
385+
with:
386+
build_type: pull-request
387+
matrix_name: conda-cpp-build
376388
rocky8-clib-standalone-build:
377-
needs: [checks]
389+
needs: rocky8-clib-standalone-build-matrix
378390
secrets: inherit
379391
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
380392
strategy:
381393
fail-fast: false
382-
matrix:
383-
cuda_version:
384-
- &latest_cuda12 '12.9.1'
385-
- &latest_cuda13 '13.1.1'
386-
arch:
387-
- amd64
388-
- arm64
394+
matrix: ${{ fromJSON(needs.rocky8-clib-standalone-build-matrix.outputs.matrix) }}
389395
with:
390396
build_type: pull-request
391397
arch: "${{matrix.arch}}"
392398
date: ${{ inputs.date }}_c
393-
container_image: "rapidsai/ci-wheel:26.06-cuda${{ matrix.cuda_version }}-rockylinux8-py3.11"
399+
container_image: "rapidsai/ci-wheel:26.06-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
394400
node_type: "cpu16"
395401
requires_license_builder: true
396402
script: "ci/build_standalone_c.sh --build-tests"
397-
artifact-name: "libcuvs_c_${{ matrix.cuda_version }}_${{ matrix.arch }}.tar.gz"
403+
artifact-name: "libcuvs_c_${{ matrix.CUDA_VER }}_${{ matrix.ARCH }}.tar.gz"
398404
file_to_upload: "libcuvs_c.tar.gz"
399405
sha: ${{ inputs.sha }}
400-
rocky8-clib-tests:
406+
rocky8-clib-tests-matrix:
401407
needs: [rocky8-clib-standalone-build, changed-files]
402408
secrets: inherit
403-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
409+
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
404410
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
411+
with:
412+
build_type: pull-request
413+
matrix_name: conda-cpp-build
414+
rocky8-clib-tests:
415+
needs: rocky8-clib-tests-matrix
416+
secrets: inherit
417+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
405418
strategy:
406419
fail-fast: false
407-
matrix:
408-
cuda_version:
409-
- *latest_cuda12
410-
- *latest_cuda13
411-
arch:
412-
- amd64
413-
- arm64
420+
matrix: ${{ fromJSON(needs.rocky8-clib-tests-matrix.outputs.matrix) }}
414421
with:
415422
build_type: pull-request
416423
node_type: "gpu-l4-latest-1"
417424
arch: "${{matrix.arch}}"
418425
date: ${{ inputs.date }}_c
419-
container_image: "rapidsai/ci-wheel:26.06-cuda${{ matrix.cuda_version }}-rockylinux8-py3.11"
420-
script: "ci/test_standalone_c.sh libcuvs_c_${{ matrix.cuda_version }}_${{ matrix.arch }}.tar.gz"
426+
container_image: "rapidsai/ci-wheel:26.06-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
427+
script: "ci/test_standalone_c.sh libcuvs_c_${{ matrix.CUDA_VER }}_${{ matrix.ARCH }}.tar.gz"
421428
sha: ${{ inputs.sha }}
422-
conda-java-build-and-tests:
429+
conda-java-build-and-tests-matrix:
423430
needs: [conda-cpp-build, changed-files]
424431
secrets: inherit
425-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
432+
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
426433
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_java || fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
434+
with:
435+
build_type: pull-request
436+
matrix_name: conda-cpp-build
437+
matrix_filter: map(select(.ARCH == "amd64"))
438+
conda-java-build-and-tests:
439+
needs: conda-java-build-and-tests-matrix
440+
secrets: inherit
441+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
427442
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
428443
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
429444
strategy:
430445
fail-fast: false
431-
matrix:
432-
cuda_version:
433-
- *latest_cuda12
434-
- *latest_cuda13
446+
matrix: ${{ fromJSON(needs.conda-java-build-and-tests-matrix.outputs.matrix) }}
435447
with:
436448
build_type: pull-request
437449
node_type: "gpu-l4-latest-1"
438450
arch: "amd64"
439-
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.cuda_version }}-ubuntu24.04-py3.13"
451+
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
440452
script: "ci/test_java.sh"
441-
artifact-name: "cuvs-java-cuda${{ matrix.cuda_version }}"
453+
artifact-name: "cuvs-java-cuda${{ matrix.CUDA_VER }}"
442454
file_to_upload: "java/cuvs-java/target/"
443-
rust-build:
455+
rust-build-matrix:
444456
needs: [conda-cpp-build, changed-files]
445457
secrets: inherit
446-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
458+
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
447459
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_rust || fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
460+
with:
461+
build_type: pull-request
462+
matrix_name: conda-cpp-build
463+
matrix_filter: map(select(.ARCH == "amd64"))
464+
rust-build:
465+
needs: rust-build-matrix
466+
secrets: inherit
467+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
448468
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
449469
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
450470
strategy:
451471
fail-fast: false
452-
matrix:
453-
cuda_version:
454-
- *latest_cuda12
455-
- *latest_cuda13
472+
matrix: ${{ fromJSON(needs.rust-build-matrix.outputs.matrix) }}
456473
with:
457474
build_type: pull-request
458475
node_type: "gpu-l4-latest-1"
459476
arch: "amd64"
460-
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.cuda_version }}-ubuntu24.04-py3.13"
477+
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
461478
script: "ci/build_rust.sh"
462-
go-build:
479+
go-build-matrix:
463480
needs: [conda-cpp-build, changed-files]
464481
secrets: inherit
465-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
482+
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
466483
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_go || fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
484+
with:
485+
build_type: pull-request
486+
matrix_name: conda-cpp-build
487+
matrix_filter: map(select(.ARCH == "amd64"))
488+
go-build:
489+
needs: go-build-matrix
490+
secrets: inherit
491+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
467492
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
468493
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
469494
strategy:
470495
fail-fast: false
471-
matrix:
472-
cuda_version:
473-
- *latest_cuda12
474-
- *latest_cuda13
496+
matrix: ${{ fromJSON(needs.go-build-matrix.outputs.matrix) }}
475497
with:
476498
build_type: pull-request
477499
node_type: "gpu-l4-latest-1"
478500
arch: "amd64"
479-
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.cuda_version }}-ubuntu24.04-py3.13"
501+
container_image: "rapidsai/ci-conda:26.06-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
480502
script: "ci/build_go.sh"
481503
docs-build:
482504
needs: conda-python-build

c/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ add_library(
9999
src/neighbors/refine.cpp
100100
src/neighbors/tiered_index.cpp
101101
src/neighbors/all_neighbors.cpp
102+
src/preprocessing/pca.cpp
102103
src/preprocessing/quantize/binary.cpp
103104
src/preprocessing/quantize/pq.cpp
104105
src/preprocessing/quantize/scalar.cpp

c/include/cuvs/core/all.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
#include <cuvs/neighbors/mg_ivf_pq.h>
3939
#endif
4040

41+
#include <cuvs/preprocessing/pca.h>
4142
#include <cuvs/preprocessing/quantize/binary.h>
4243
#include <cuvs/preprocessing/quantize/pq.h>
4344
#include <cuvs/preprocessing/quantize/scalar.h>

0 commit comments

Comments
 (0)