Skip to content

Commit 0ddafca

Browse files
authored
Merge branch 'main' into landrumb/cagra-degree-warning
2 parents 0625256 + c854ea3 commit 0ddafca

182 files changed

Lines changed: 12942 additions & 786 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.

.devcontainer/cuda13.2-conda/devcontainer.json renamed to .devcontainer/cuda13.3-conda/devcontainer.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
"context": "${localWorkspaceFolder}/.devcontainer",
44
"dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
55
"args": {
6-
"CUDA": "13.2",
6+
"CUDA": "13.3",
77
"PYTHON_PACKAGE_MANAGER": "conda",
88
"BASE": "rapidsai/devcontainers:26.08-cpp-mambaforge"
99
},
1010
"cacheFrom": [
11-
"ghcr.io/rapidsai/cuvs/devcontainer:26.08-cuda13.2-conda"
11+
"ghcr.io/rapidsai/cuvs/devcontainer:26.08-cuda13.3-conda"
1212
]
1313
},
1414
"runArgs": [
1515
"--rm",
1616
"--name",
17-
"${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.08-cuda13.2-conda",
17+
"${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.08-cuda13.3-conda",
1818
"--ulimit",
1919
"nofile=500000"
2020
],
@@ -25,7 +25,7 @@
2525
"overrideFeatureInstallOrder": [
2626
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
2727
],
28-
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.2-envs}"],
28+
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.3-envs}"],
2929
"postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
3030
"workspaceFolder": "/home/coder",
3131
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuvs,type=bind,consistency=consistent",
@@ -34,7 +34,7 @@
3434
"source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent",
3535
"source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent",
3636
"source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent",
37-
"source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda13.2-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
37+
"source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda13.3-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
3838
],
3939
"customizations": {
4040
"vscode": {

.devcontainer/cuda13.2-pip/devcontainer.json renamed to .devcontainer/cuda13.3-pip/devcontainer.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,25 @@
33
"context": "${localWorkspaceFolder}/.devcontainer",
44
"dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
55
"args": {
6-
"CUDA": "13.2",
6+
"CUDA": "13.3",
77
"PYTHON_PACKAGE_MANAGER": "pip",
8-
"BASE": "rapidsai/devcontainers:26.08-cpp-cuda13.2-ucx1.19.0-openmpi5.0.10"
8+
"BASE": "rapidsai/devcontainers:26.08-cpp-cuda13.3-ucx1.19.0-openmpi5.0.10"
99
},
1010
"cacheFrom": [
11-
"ghcr.io/rapidsai/cuvs/devcontainer:26.08-cuda13.2-pip"
11+
"ghcr.io/rapidsai/cuvs/devcontainer:26.08-cuda13.3-pip"
1212
]
1313
},
1414
"runArgs": [
1515
"--rm",
1616
"--name",
17-
"${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.08-cuda13.2-pip",
17+
"${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.08-cuda13.3-pip",
1818
"--ulimit",
1919
"nofile=500000"
2020
],
2121
"hostRequirements": {"gpu": "optional"},
2222
"features": {
2323
"ghcr.io/rapidsai/devcontainers/features/cuda:26.8": {
24-
"version": "13.2",
24+
"version": "13.3",
2525
"installcuBLAS": true,
2626
"installcuSOLVER": true,
2727
"installcuRAND": true,
@@ -34,15 +34,15 @@
3434
"ghcr.io/rapidsai/devcontainers/features/cuda",
3535
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
3636
],
37-
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.2-venvs}"],
37+
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.3-venvs}"],
3838
"postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
3939
"workspaceFolder": "/home/coder",
4040
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuvs,type=bind,consistency=consistent",
4141
"mounts": [
4242
"source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent",
4343
"source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent",
4444
"source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent",
45-
"source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda13.2-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent"
45+
"source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda13.3-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent"
4646
],
4747
"customizations": {
4848
"vscode": {

.github/workflows/build.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,4 +335,4 @@ jobs:
335335
packages: write
336336
with:
337337
push: true
338-
cuda: '["12.9", "13.2"]'
338+
cuda: '["12.9", "13.3"]'

.github/workflows/pr.yaml

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,10 @@ jobs:
160160
- '!.github/workflows/trigger-breaking-change-alert.yaml'
161161
- '!.pre-commit-config.yaml'
162162
- '!.shellcheckrc'
163+
- '!CODEOWNERS'
164+
- '!Dockerfile'
165+
- '!README.md'
166+
- '!SECURITY.md'
163167
- '!ci/build_docs.sh'
164168
- '!ci/build_go.sh'
165169
- '!ci/build_python.sh'
@@ -171,14 +175,19 @@ jobs:
171175
- '!ci/test_python.sh'
172176
- '!ci/test_wheel_cuvs.sh'
173177
- '!ci/validate_wheel.sh'
174-
- '!Dockerfile'
178+
- '!conda/environments/**'
179+
- '!conda/recipes/cuvs/**'
180+
- '!conda/recipes/cuvs-bench/**'
181+
- '!conda/recipes/cuvs-bench-cpu/**'
175182
- '!docs/**'
183+
- '!examples/**'
176184
- '!fern/**'
185+
- '!go/**'
177186
- '!img/**'
178187
- '!notebooks/**'
188+
- '!pyproject.toml'
179189
- '!python/**'
180190
- '!rust/**'
181-
- '!go/**'
182191
- '!thirdparty/LICENSES/**'
183192
test_python_conda:
184193
- '**'
@@ -192,8 +201,12 @@ jobs:
192201
- '!.github/labeler.yml'
193202
- '!.github/ops-bot.yaml'
194203
- '!.github/release.yml'
204+
- '!.github/workflows/check-c-abi.yaml'
205+
- '!.github/workflows/labeler.yml'
195206
- '!.github/workflows/publish-rust.yaml'
207+
- '!.github/workflows/store-c-abi-baseline.yaml'
196208
- '!.github/workflows/trigger-breaking-change-alert.yaml'
209+
- '!.github/workflows/update-c-abi-baseline.yaml'
197210
- '!.pre-commit-config.yaml'
198211
- '!.shellcheckrc'
199212
- '!ci/build_go.sh'
@@ -210,6 +223,7 @@ jobs:
210223
- '!cpp/.clang-format'
211224
- '!cpp/.clang-tidy'
212225
- '!cpp/doxygen/**'
226+
- '!CODEOWNERS'
213227
- '!Dockerfile'
214228
- '!README.md'
215229
- '!SECURITY.md'
@@ -252,6 +266,7 @@ jobs:
252266
- '!ci/test_python.sh'
253267
- '!ci/test_standalone_c.sh'
254268
- '!ci/validate_wheel.sh'
269+
- '!CODEOWNERS'
255270
- '!Dockerfile'
256271
- '!README.md'
257272
- '!SECURITY.md'
@@ -283,6 +298,7 @@ jobs:
283298
- '!.github/workflows/trigger-breaking-change-alert.yaml'
284299
- '!.pre-commit-config.yaml'
285300
- '!.shellcheckrc'
301+
- '!CODEOWNERS'
286302
- '!Dockerfile'
287303
- '!README.md'
288304
- '!SECURITY.md'
@@ -324,6 +340,7 @@ jobs:
324340
- '!.github/workflows/trigger-breaking-change-alert.yaml'
325341
- '!.pre-commit-config.yaml'
326342
- '!.shellcheckrc'
343+
- '!CODEOWNERS'
327344
- '!Dockerfile'
328345
- '!README.md'
329346
- '!SECURITY.md'
@@ -670,7 +687,7 @@ jobs:
670687
uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@main
671688
with:
672689
arch: '["amd64", "arm64"]'
673-
cuda: '["13.2"]'
690+
cuda: '["13.3"]'
674691
node_type: "cpu8"
675692
env: |
676693
SCCACHE_DIST_MAX_RETRIES=inf

.github/workflows/publish-rust.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
fail-fast: false
1818
matrix:
1919
cuda_version:
20-
- '13.2.0'
20+
- '13.3.0'
2121
container:
2222
image: "rapidsai/ci-conda:26.08-cuda${{ matrix.cuda_version }}-ubuntu24.04-py3.13"
2323
steps:

.github/workflows/test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ jobs:
8686
matrix:
8787
cuda_version:
8888
- '12.9.1'
89-
- '13.2.0'
89+
- '13.3.0'
9090
with:
9191
build_type: ${{ inputs.build_type }}
9292
branch: ${{ inputs.branch }}

.pre-commit-config.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33

44
repos:
55
- repo: https://github.com/pre-commit/pre-commit-hooks
6-
rev: v5.0.0
6+
rev: v6.0.0
77
hooks:
88
- id: check-json
99
- id: trailing-whitespace
1010
- id: end-of-file-fixer
1111
- id: check-symlinks
12+
- id: check-xml
1213
- repo: https://github.com/PyCQA/isort
1314
rev: 5.12.0
1415
hooks:

c/src/neighbors/brute_force.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
/*
3-
* SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION.
3+
* SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION.
44
* SPDX-License-Identifier: Apache-2.0
55
*/
66

@@ -10,6 +10,7 @@
1010

1111
#include <raft/core/error.hpp>
1212
#include <raft/core/mdspan_types.hpp>
13+
#include <raft/core/numpy_serializer.hpp>
1314
#include <raft/core/resources.hpp>
1415
#include <raft/core/serialize.hpp>
1516

@@ -238,9 +239,13 @@ extern "C" cuvsError_t cuvsBruteForceDeserialize(cuvsResources_t res,
238239
// read the numpy dtype from the beginning of the file
239240
std::ifstream is(filename, std::ios::in | std::ios::binary);
240241
if (!is) { RAFT_FAIL("Cannot open file %s", filename); }
241-
char dtype_string[4];
242-
is.read(dtype_string, 4);
243-
auto dtype = raft::detail::numpy_serializer::parse_descr(std::string(dtype_string, 4));
242+
char dtype_string[4]{};
243+
if (!is.read(dtype_string, sizeof(dtype_string))) {
244+
RAFT_FAIL("Invalid or truncated index header in file %s", filename);
245+
}
246+
auto dtype =
247+
raft::numpy_serializer::parse_descr(std::string(dtype_string, sizeof(dtype_string)));
248+
is.close();
244249

245250
index->dtype.bits = dtype.itemsize * 8;
246251
if (dtype.kind == 'f' && dtype.itemsize == 4) {

c/src/neighbors/cagra.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include <raft/core/error.hpp>
1111
#include <raft/core/mdspan_types.hpp>
12+
#include <raft/core/numpy_serializer.hpp>
1213
#include <raft/core/resources.hpp>
1314
#include <raft/core/serialize.hpp>
1415

@@ -873,9 +874,13 @@ extern "C" cuvsError_t cuvsCagraDeserialize(cuvsResources_t res,
873874
// read the numpy dtype from the beginning of the file
874875
std::ifstream is(filename, std::ios::in | std::ios::binary);
875876
if (!is) { RAFT_FAIL("Cannot open file %s", filename); }
876-
char dtype_string[4];
877-
is.read(dtype_string, 4);
878-
auto dtype = raft::detail::numpy_serializer::parse_descr(std::string(dtype_string, 4));
877+
char dtype_string[4]{};
878+
if (!is.read(dtype_string, sizeof(dtype_string))) {
879+
RAFT_FAIL("Invalid or truncated index header in file %s", filename);
880+
}
881+
auto dtype =
882+
raft::numpy_serializer::parse_descr(std::string(dtype_string, sizeof(dtype_string)));
883+
is.close();
879884

880885
index->dtype.bits = dtype.itemsize * 8;
881886
if (dtype.kind == 'f' && dtype.itemsize == 4) {

c/src/neighbors/ivf_flat.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
/*
3-
* SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION.
3+
* SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION.
44
* SPDX-License-Identifier: Apache-2.0
55
*/
66

@@ -9,6 +9,7 @@
99

1010
#include <raft/core/error.hpp>
1111
#include <raft/core/mdspan_types.hpp>
12+
#include <raft/core/numpy_serializer.hpp>
1213
#include <raft/core/resources.hpp>
1314
#include <raft/core/serialize.hpp>
1415
#include <raft/util/cudart_utils.hpp>
@@ -299,9 +300,13 @@ extern "C" cuvsError_t cuvsIvfFlatDeserialize(cuvsResources_t res,
299300
// read the numpy dtype from the beginning of the file
300301
std::ifstream is(filename, std::ios::in | std::ios::binary);
301302
if (!is) { RAFT_FAIL("Cannot open file %s", filename); }
302-
char dtype_string[4];
303-
is.read(dtype_string, 4);
304-
auto dtype = raft::detail::numpy_serializer::parse_descr(std::string(dtype_string, 4));
303+
char dtype_string[4]{};
304+
if (!is.read(dtype_string, sizeof(dtype_string))) {
305+
RAFT_FAIL("Invalid or truncated index header in file %s", filename);
306+
}
307+
auto dtype =
308+
raft::numpy_serializer::parse_descr(std::string(dtype_string, sizeof(dtype_string)));
309+
is.close();
305310

306311
index->dtype.bits = dtype.itemsize * 8;
307312
if (dtype.kind == 'f' && dtype.itemsize == 4) {

0 commit comments

Comments
 (0)