diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a2f69e8..e7b7d90 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -42,7 +42,7 @@ jobs: matrix: cuda_version: - '12.9.1' - - '13.0.0' + - '13.0.2' with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index e8c1503..7d7ac7d 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -68,7 +68,7 @@ jobs: matrix: cuda_version: - '12.9.1' - - '13.0.0' + - '13.0.2' with: build_type: pull-request node_type: "gpu-l4-latest-1" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 65b3a4a..c6019f2 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -31,7 +31,7 @@ jobs: matrix: cuda_version: - '12.9.1' - - '13.0.0' + - '13.0.2' with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} diff --git a/.gitignore b/.gitignore index 32d6a5b..f5287f1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ *.jar target **/.DS_Store +cuvs-workdir diff --git a/RAPIDS_BRANCH b/RAPIDS_BRANCH new file mode 100644 index 0000000..ba2906d --- /dev/null +++ b/RAPIDS_BRANCH @@ -0,0 +1 @@ +main diff --git a/build.sh b/build.sh index a6fea7a..e9b68eb 100755 --- a/build.sh +++ b/build.sh @@ -15,6 +15,24 @@ function hasArg { (( NUMARGS != 0 )) && (echo " ${ARGS} " | grep -q " $1 ") } +if hasArg --build-cuvs-java; then + CUVS_WORKDIR="cuvs-workdir" + CUVS_GIT_REPO="https://github.com/rapidsai/cuvs.git" + if [[ -d "$CUVS_WORKDIR" && -n "$(ls -A "$CUVS_WORKDIR")" ]]; then + echo "Directory '$CUVS_WORKDIR' exists and is not empty." + pushd $CUVS_WORKDIR + git pull + else + BRANCH=$(cat "RAPIDS_BRANCH") + echo "Directory '$CUVS_WORKDIR' does not exist or is empty. Cloning the cuvs's '$BRANCH' branch." + # Correct branch selection is crucial to avoid version mismatch issues when testing. + git clone --branch "$BRANCH" $CUVS_GIT_REPO $CUVS_WORKDIR + pushd $CUVS_WORKDIR + fi + ./build.sh java + popd +fi + MAVEN_VERIFY_ARGS=() if ! hasArg --run-java-tests; then MAVEN_VERIFY_ARGS=("-DskipTests") diff --git a/ci/build_java.sh b/ci/build_java.sh index 2f61f4b..b586ec9 100755 --- a/ci/build_java.sh +++ b/ci/build_java.sh @@ -13,6 +13,9 @@ if [[ "${1:-}" == "--run-java-tests" ]]; then EXTRA_BUILD_ARGS+=("--run-java-tests") fi +# Always build cuvs-java when running the pipeline +EXTRA_BUILD_ARGS+=("--build-cuvs-java") + # shellcheck disable=SC1091 . /opt/conda/etc/profile.d/conda.sh diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index 61848ed..afe73f6 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -86,8 +86,10 @@ PATCH_PEP440=$(python -c "from packaging.version import Version; print(Version(' # Log update context if [[ "${RUN_CONTEXT}" == "main" ]]; then + RAPIDS_BRANCH_NAME="main" echo "Preparing development branch update $CURRENT_TAG => $NEXT_FULL_TAG (targeting main branch)" elif [[ "${RUN_CONTEXT}" == "release" ]]; then + RAPIDS_BRANCH_NAME="release/${NEXT_SHORT_TAG}" echo "Preparing release branch update $CURRENT_TAG => $NEXT_FULL_TAG (targeting release/${NEXT_SHORT_TAG} branch)" fi @@ -98,6 +100,7 @@ function sed_runner() { # Centralized version file update echo "${NEXT_FULL_TAG}" > VERSION +echo "${RAPIDS_BRANCH_NAME}" > RAPIDS_BRANCH # Update Java version NEXT_FULL_JAVA_TAG="${NEXT_SHORT_TAG}.${PATCH_PEP440}" @@ -111,5 +114,6 @@ for FILE in dependencies.yaml conda/environments/*.yaml; do done for FILE in .github/workflows/*.yaml; do + sed_runner "/shared-workflows/ s|@.*|@${RAPIDS_BRANCH_NAME}|g" "${FILE}" sed_runner "s/:[0-9]*\\.[0-9]*-/:${NEXT_SHORT_TAG}-/g" "${FILE}" done diff --git a/conda/environments/all_cuda-129_arch-aarch64.yaml b/conda/environments/all_cuda-129_arch-aarch64.yaml index 2f45506..9f1778f 100644 --- a/conda/environments/all_cuda-129_arch-aarch64.yaml +++ b/conda/environments/all_cuda-129_arch-aarch64.yaml @@ -4,6 +4,7 @@ channels: - conda-forge - rapidsai-nightly dependencies: +- cmake>=3.30.4 - cuda-cudart-dev - cuda-nvtx-dev - cuda-profiler-api @@ -14,5 +15,6 @@ dependencies: - libcusparse-dev - libcuvs==26.02.* - maven +- ninja - openjdk=22.* name: all_cuda-129_arch-aarch64 diff --git a/conda/environments/all_cuda-129_arch-x86_64.yaml b/conda/environments/all_cuda-129_arch-x86_64.yaml index 72c66a2..64cacee 100644 --- a/conda/environments/all_cuda-129_arch-x86_64.yaml +++ b/conda/environments/all_cuda-129_arch-x86_64.yaml @@ -4,6 +4,7 @@ channels: - conda-forge - rapidsai-nightly dependencies: +- cmake>=3.30.4 - cuda-cudart-dev - cuda-nvtx-dev - cuda-profiler-api @@ -14,5 +15,6 @@ dependencies: - libcusparse-dev - libcuvs==26.02.* - maven +- ninja - openjdk=22.* name: all_cuda-129_arch-x86_64 diff --git a/conda/environments/all_cuda-130_arch-aarch64.yaml b/conda/environments/all_cuda-130_arch-aarch64.yaml index a87f9f2..0edaf41 100644 --- a/conda/environments/all_cuda-130_arch-aarch64.yaml +++ b/conda/environments/all_cuda-130_arch-aarch64.yaml @@ -4,6 +4,7 @@ channels: - conda-forge - rapidsai-nightly dependencies: +- cmake>=3.30.4 - cuda-cudart-dev - cuda-nvtx-dev - cuda-profiler-api @@ -14,5 +15,6 @@ dependencies: - libcusparse-dev - libcuvs==26.02.* - maven +- ninja - openjdk=22.* name: all_cuda-130_arch-aarch64 diff --git a/conda/environments/all_cuda-130_arch-x86_64.yaml b/conda/environments/all_cuda-130_arch-x86_64.yaml index 6727f79..7bc25ec 100644 --- a/conda/environments/all_cuda-130_arch-x86_64.yaml +++ b/conda/environments/all_cuda-130_arch-x86_64.yaml @@ -4,6 +4,7 @@ channels: - conda-forge - rapidsai-nightly dependencies: +- cmake>=3.30.4 - cuda-cudart-dev - cuda-nvtx-dev - cuda-profiler-api @@ -14,5 +15,6 @@ dependencies: - libcusparse-dev - libcuvs==26.02.* - maven +- ninja - openjdk=22.* name: all_cuda-130_arch-x86_64 diff --git a/dependencies.yaml b/dependencies.yaml index b846b6d..3443a2f 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -75,5 +75,7 @@ dependencies: common: - output_types: conda packages: + - cmake>=3.30.4 - maven + - ninja - openjdk=22.* diff --git a/pom.xml b/pom.xml index 75445b9..1602868 100644 --- a/pom.xml +++ b/pom.xml @@ -41,8 +41,6 @@ 21 - - org.apache.lucene diff --git a/src/main/java/com/nvidia/cuvs/lucene/FilterCuVSProvider.java b/src/main/java/com/nvidia/cuvs/lucene/FilterCuVSProvider.java index 01752d1..aaf7221 100644 --- a/src/main/java/com/nvidia/cuvs/lucene/FilterCuVSProvider.java +++ b/src/main/java/com/nvidia/cuvs/lucene/FilterCuVSProvider.java @@ -6,14 +6,19 @@ import com.nvidia.cuvs.BruteForceIndex; import com.nvidia.cuvs.CagraIndex; +import com.nvidia.cuvs.CagraIndexParams; +import com.nvidia.cuvs.CagraIndexParams.CuvsDistanceType; +import com.nvidia.cuvs.CagraIndexParams.HnswHeuristicType; import com.nvidia.cuvs.CuVSMatrix; import com.nvidia.cuvs.CuVSMatrix.Builder; import com.nvidia.cuvs.CuVSMatrix.DataType; import com.nvidia.cuvs.CuVSResources; import com.nvidia.cuvs.HnswIndex; +import com.nvidia.cuvs.HnswIndexParams; import com.nvidia.cuvs.spi.CuVSProvider; import java.lang.invoke.MethodHandle; import java.nio.file.Path; +import java.util.logging.Level; /*package-private*/ class FilterCuVSProvider implements CuVSProvider { @@ -114,4 +119,28 @@ public com.nvidia.cuvs.TieredIndex.Builder newTieredIndexBuilder(CuVSResources c throws UnsupportedOperationException { return delegate.newTieredIndexBuilder(cuVSResources); } + + @Override + public CagraIndexParams cagraIndexParamsFromHnswParams( + long arg0, long arg1, int arg2, int arg3, HnswHeuristicType arg4, CuvsDistanceType arg5) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Level getLogLevel() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setLogLevel(Level arg0) { + // TODO Auto-generated method stub + } + + @Override + public HnswIndex hnswIndexFromCagra(HnswIndexParams arg0, CagraIndex arg1) throws Throwable { + // TODO Auto-generated method stub + return null; + } }