feat(optimizer): export unsafe_cast to cpp

This commit is contained in:
rudy
2023-11-15 11:52:04 +01:00
committed by rudy-6-4
parent e3a5428d21
commit 08dcf993e4
3 changed files with 22 additions and 0 deletions

View File

@@ -492,6 +492,14 @@ impl OperationDag {
self.0.add_round_op(input.into(), rounded_precision).into()
}
fn add_unsafe_cast_op(
&mut self,
input: ffi::OperatorIndex,
new_precision: Precision,
) -> ffi::OperatorIndex {
self.0.add_unsafe_cast(input.into(), new_precision).into()
}
fn optimize_v0(&self, options: ffi::Options) -> ffi::Solution {
let processing_unit = processing_unit(options);
@@ -666,6 +674,12 @@ mod ffi {
rounded_precision: u8,
) -> OperatorIndex;
fn add_unsafe_cast_op(
self: &mut OperationDag,
input: OperatorIndex,
rounded_precision: u8,
) -> OperatorIndex;
fn optimize_v0(self: &OperationDag, options: Options) -> Solution;
fn optimize(self: &OperationDag, options: Options) -> DagSolution;

View File

@@ -972,6 +972,7 @@ struct OperationDag final : public ::rust::Opaque {
::concrete_optimizer::dag::OperatorIndex add_dot(::rust::Slice<::concrete_optimizer::dag::OperatorIndex const> inputs, ::rust::Box<::concrete_optimizer::Weights> weights) noexcept;
::concrete_optimizer::dag::OperatorIndex add_levelled_op(::rust::Slice<::concrete_optimizer::dag::OperatorIndex const> inputs, double lwe_dim_cost_factor, double fixed_cost, double manp, ::rust::Slice<::std::uint64_t const> out_shape, ::rust::Str comment) noexcept;
::concrete_optimizer::dag::OperatorIndex add_round_op(::concrete_optimizer::dag::OperatorIndex input, ::std::uint8_t rounded_precision) noexcept;
::concrete_optimizer::dag::OperatorIndex add_unsafe_cast_op(::concrete_optimizer::dag::OperatorIndex input, ::std::uint8_t rounded_precision) noexcept;
::concrete_optimizer::v0::Solution optimize_v0(::concrete_optimizer::Options options) const noexcept;
::concrete_optimizer::dag::DagSolution optimize(::concrete_optimizer::Options options) const noexcept;
::rust::String dump() const noexcept;
@@ -1272,6 +1273,8 @@ extern "C" {
::concrete_optimizer::dag::OperatorIndex concrete_optimizer$cxxbridge1$OperationDag$add_round_op(::concrete_optimizer::OperationDag &self, ::concrete_optimizer::dag::OperatorIndex input, ::std::uint8_t rounded_precision) noexcept;
::concrete_optimizer::dag::OperatorIndex concrete_optimizer$cxxbridge1$OperationDag$add_unsafe_cast_op(::concrete_optimizer::OperationDag &self, ::concrete_optimizer::dag::OperatorIndex input, ::std::uint8_t rounded_precision) noexcept;
::concrete_optimizer::v0::Solution concrete_optimizer$cxxbridge1$OperationDag$optimize_v0(::concrete_optimizer::OperationDag const &self, ::concrete_optimizer::Options options) noexcept;
void concrete_optimizer$cxxbridge1$OperationDag$optimize(::concrete_optimizer::OperationDag const &self, ::concrete_optimizer::Options options, ::concrete_optimizer::dag::DagSolution *return$) noexcept;
@@ -1360,6 +1363,10 @@ namespace dag {
return concrete_optimizer$cxxbridge1$OperationDag$add_round_op(*this, input, rounded_precision);
}
::concrete_optimizer::dag::OperatorIndex OperationDag::add_unsafe_cast_op(::concrete_optimizer::dag::OperatorIndex input, ::std::uint8_t rounded_precision) noexcept {
return concrete_optimizer$cxxbridge1$OperationDag$add_unsafe_cast_op(*this, input, rounded_precision);
}
::concrete_optimizer::v0::Solution OperationDag::optimize_v0(::concrete_optimizer::Options options) const noexcept {
return concrete_optimizer$cxxbridge1$OperationDag$optimize_v0(*this, options);
}

View File

@@ -953,6 +953,7 @@ struct OperationDag final : public ::rust::Opaque {
::concrete_optimizer::dag::OperatorIndex add_dot(::rust::Slice<::concrete_optimizer::dag::OperatorIndex const> inputs, ::rust::Box<::concrete_optimizer::Weights> weights) noexcept;
::concrete_optimizer::dag::OperatorIndex add_levelled_op(::rust::Slice<::concrete_optimizer::dag::OperatorIndex const> inputs, double lwe_dim_cost_factor, double fixed_cost, double manp, ::rust::Slice<::std::uint64_t const> out_shape, ::rust::Str comment) noexcept;
::concrete_optimizer::dag::OperatorIndex add_round_op(::concrete_optimizer::dag::OperatorIndex input, ::std::uint8_t rounded_precision) noexcept;
::concrete_optimizer::dag::OperatorIndex add_unsafe_cast_op(::concrete_optimizer::dag::OperatorIndex input, ::std::uint8_t rounded_precision) noexcept;
::concrete_optimizer::v0::Solution optimize_v0(::concrete_optimizer::Options options) const noexcept;
::concrete_optimizer::dag::DagSolution optimize(::concrete_optimizer::Options options) const noexcept;
::rust::String dump() const noexcept;