Skip to content

Commit

Permalink
Add rust-agent-qbg (#2751)
Browse files Browse the repository at this point in the history
* add rust-agent-qbg

* add unit-test-rust.yaml

---------

Signed-off-by: datelier <57349093+datelier@users.noreply.github.com>
  • Loading branch information
datelier authored and vdaas-ci committed Dec 25, 2024
1 parent a989576 commit 3c8b68c
Show file tree
Hide file tree
Showing 10 changed files with 1,362 additions and 0 deletions.
51 changes: 51 additions & 0 deletions .github/workflows/unit-test-rust.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#
# Copyright (C) 2019-2024 vdaas.org vald team <vald@vdaas.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: "Run unit tests (Rust)"
on:
push:
branches:
- main
- "release/v*.*"
- "!release/v*.*.*"
paths:
- ".github/workflows/test.yaml"
- "rust/**"
pull_request:
paths:
- ".github/workflows/test.yaml"
- "rust/**"
jobs:
dump-contexts-to-log:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/dump-context
detect-ci-container:
uses: ./.github/workflows/_detect-ci-container.yaml
test-rust-qbg:
name: Run tests for Rust
runs-on: ubuntu-latest
needs: [detect-ci-container]
container:
image: ghcr.io/vdaas/vald/vald-ci-container:${{ needs.detect-ci-container.outputs.TAG }}
steps:
- uses: actions/checkout@v4
- name: Set Git config
run: |
git config --global --add safe.directory ${GITHUB_WORKSPACE}
- name: Run tests for Rust / gotestfmt
run: |
TEST_RESULT_DIR=${GITHUB_WORKSPACE} make test/rust/qbg
10 changes: 10 additions & 0 deletions Makefile.d/test.mk
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,16 @@ test/cmd:
CGO_LDFLAGS="$(CGO_LDFLAGS)" \
go test -short -shuffle=on -race -mod=readonly -cover $(ROOTDIR)/cmd/...

.PHONY: test/rust/qbg
## run tests for qbg
test/rust/qbg:
cargo test --manifest-path rust/Cargo.toml --package qbg --lib -- tests::test_ffi_qbg --exact --show-output
cargo test --manifest-path rust/Cargo.toml --package qbg --lib -- tests::test_ffi_qbg_prebuilt --exact --show-output
rm -rf rust/libs/algorithms/qbg/index/
cargo test --manifest-path rust/Cargo.toml --package qbg --lib -- tests::test_property --exact --show-output
cargo test --manifest-path rust/Cargo.toml --package qbg --lib -- tests::test_index --exact --show-output
rm -rf rust/libs/algorithms/qbg/index/

.PHONY: test/hack
## run tests for hack
test/hack:
Expand Down
11 changes: 11 additions & 0 deletions rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ members = [
"bin/agent",
"libs/algorithm",
"libs/algorithms/ngt",
"libs/algorithms/qbg",
"libs/algorithms/faiss",
]
1 change: 1 addition & 0 deletions rust/libs/algorithm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,6 @@ edition = "2021"
anyhow = "1.0.88"
faiss = { version = "0.1.0", path = "../algorithms/faiss" }
ngt = { version = "0.1.0", path = "../algorithms/ngt" }
qbg = { version = "0.1.0", path = "../algorithms/qbg" }
proto = { version = "0.1.0", path = "../proto" }
tonic = "0.12.2"
29 changes: 29 additions & 0 deletions rust/libs/algorithms/qbg/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#
# Copyright (C) 2019-2024 vdaas.org vald team <vald@vdaas.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
[package]
name = "qbg"
version = "0.1.0"
edition = "2021"

[dependencies]
anyhow = "1.0.88"
cxx = { version = "1.0.128", features = ["c++20"] }

[build-dependencies]
cxx-build = "1.0.128"
miette = { version = "7.2.0", features = ["fancy"] }

[dev-dependencies]
35 changes: 35 additions & 0 deletions rust/libs/algorithms/qbg/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
//
// Copyright (C) 2019-2024 vdaas.org vald team <vald@vdaas.org>
//
// Licensed under the Apache License, Version 2.0 (the "License");
// You may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
fn main() -> miette::Result<()> {
let current_dir = std::env::current_dir().unwrap();
println!("cargo:rustc-link-search=native={}", current_dir.display());

cxx_build::bridge("src/lib.rs")
.file("src/input.cpp")
.flag_if_supported("-std=c++20")
.flag_if_supported("-fopenmp")
.flag_if_supported("-DNGT_BFLOAT_DISABLED")
.compile("qbg-rs");

println!("cargo:rustc-link-search=native=/usr/local/lib");
println!("cargo:rustc-link-lib=static=ngt");
println!("cargo:rustc-link-lib=blas");
println!("cargo:rustc-link-lib=lapack");
println!("cargo:rustc-link-lib=dylib=gomp");
println!("cargo:rerun-if-changed=src/*");

Ok(())
}
Loading

0 comments on commit 3c8b68c

Please sign in to comment.