From f0ca5aa42784e3e4948bc67d1e90c1fb7fbcd60f Mon Sep 17 00:00:00 2001 From: Quentin Bourgerie Date: Wed, 5 Apr 2023 17:10:47 +0200 Subject: [PATCH] feat(optimizer): Add a dump function to the CircuitSolution for debugging --- .../src/concrete-optimizer.rs | 9 +++++++++ .../src/cpp/concrete-optimizer.cpp | 18 ++++++++++++++++++ .../src/cpp/concrete-optimizer.hpp | 1 + 3 files changed, 28 insertions(+) diff --git a/compilers/concrete-optimizer/concrete-optimizer-cpp/src/concrete-optimizer.rs b/compilers/concrete-optimizer/concrete-optimizer-cpp/src/concrete-optimizer.rs index 8fc66bad5..49f251610 100644 --- a/compilers/concrete-optimizer/concrete-optimizer-cpp/src/concrete-optimizer.rs +++ b/compilers/concrete-optimizer/concrete-optimizer-cpp/src/concrete-optimizer.rs @@ -222,6 +222,12 @@ impl ffi::CircuitSolution { } } +impl ffi::CircuitSolution { + fn dump(&self) -> String { + format!("{self:#?}") + } +} + impl From for ffi::KsDecompositionParameters { fn from(v: KsDecompositionParameters) -> Self { ffi::KsDecompositionParameters { @@ -520,6 +526,9 @@ mod ffi { fn dump(self: &OperationDag) -> String; + #[namespace = "concrete_optimizer::dag"] + fn dump(self: &CircuitSolution) -> String; + type Weights; #[namespace = "concrete_optimizer::weights"] diff --git a/compilers/concrete-optimizer/concrete-optimizer-cpp/src/cpp/concrete-optimizer.cpp b/compilers/concrete-optimizer/concrete-optimizer-cpp/src/cpp/concrete-optimizer.cpp index 4161cc913..58b24b90f 100644 --- a/compilers/concrete-optimizer/concrete-optimizer-cpp/src/cpp/concrete-optimizer.cpp +++ b/compilers/concrete-optimizer/concrete-optimizer-cpp/src/cpp/concrete-optimizer.cpp @@ -1189,6 +1189,7 @@ struct CircuitSolution final { double p_error; double global_p_error; + ::rust::String dump() const noexcept; using IsRelocatable = ::std::true_type; }; #endif // CXXBRIDGE1_STRUCT_concrete_optimizer$dag$CircuitSolution @@ -1233,6 +1234,15 @@ extern "C" { void concrete_optimizer$cxxbridge1$OperationDag$optimize(::concrete_optimizer::OperationDag const &self, ::concrete_optimizer::Options options, ::concrete_optimizer::dag::DagSolution *return$) noexcept; void concrete_optimizer$cxxbridge1$OperationDag$dump(::concrete_optimizer::OperationDag const &self, ::rust::String *return$) noexcept; +} // extern "C" + +namespace dag { +extern "C" { +void concrete_optimizer$dag$cxxbridge1$CircuitSolution$dump(::concrete_optimizer::dag::CircuitSolution const &self, ::rust::String *return$) noexcept; +} // extern "C" +} // namespace dag + +extern "C" { ::std::size_t concrete_optimizer$cxxbridge1$Weights$operator$sizeof() noexcept; ::std::size_t concrete_optimizer$cxxbridge1$Weights$operator$alignof() noexcept; } // extern "C" @@ -1311,6 +1321,14 @@ namespace dag { return ::std::move(return$.value); } +namespace dag { +::rust::String CircuitSolution::dump() const noexcept { + ::rust::MaybeUninit<::rust::String> return$; + concrete_optimizer$dag$cxxbridge1$CircuitSolution$dump(*this, &return$.value); + return ::std::move(return$.value); +} +} // namespace dag + ::std::size_t Weights::layout::size() noexcept { return concrete_optimizer$cxxbridge1$Weights$operator$sizeof(); } diff --git a/compilers/concrete-optimizer/concrete-optimizer-cpp/src/cpp/concrete-optimizer.hpp b/compilers/concrete-optimizer/concrete-optimizer-cpp/src/cpp/concrete-optimizer.hpp index 6a6ec6d95..791d7750b 100644 --- a/compilers/concrete-optimizer/concrete-optimizer-cpp/src/cpp/concrete-optimizer.hpp +++ b/compilers/concrete-optimizer/concrete-optimizer-cpp/src/cpp/concrete-optimizer.hpp @@ -1170,6 +1170,7 @@ struct CircuitSolution final { double p_error; double global_p_error; + ::rust::String dump() const noexcept; using IsRelocatable = ::std::true_type; }; #endif // CXXBRIDGE1_STRUCT_concrete_optimizer$dag$CircuitSolution