mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-09 12:15:09 -05:00
feat: multiprecision, allow precision change in lut
This commit is contained in:
@@ -71,12 +71,17 @@ impl OperationDag {
|
||||
self.0.add_input(out_precision, out_shape).into()
|
||||
}
|
||||
|
||||
fn add_lut(&mut self, input: ffi::OperatorIndex, table: &[u64]) -> ffi::OperatorIndex {
|
||||
fn add_lut(
|
||||
&mut self,
|
||||
input: ffi::OperatorIndex,
|
||||
table: &[u64],
|
||||
out_precision: Precision,
|
||||
) -> ffi::OperatorIndex {
|
||||
let table = FunctionTable {
|
||||
values: table.to_owned(),
|
||||
};
|
||||
|
||||
self.0.add_lut(input.into(), table).into()
|
||||
self.0.add_lut(input.into(), table, out_precision).into()
|
||||
}
|
||||
|
||||
#[allow(clippy::boxed_local)]
|
||||
@@ -160,7 +165,12 @@ mod ffi {
|
||||
out_shape: &[u64],
|
||||
) -> OperatorIndex;
|
||||
|
||||
fn add_lut(self: &mut OperationDag, input: OperatorIndex, table: &[u64]) -> OperatorIndex;
|
||||
fn add_lut(
|
||||
self: &mut OperationDag,
|
||||
input: OperatorIndex,
|
||||
table: &[u64],
|
||||
out_precision: u8,
|
||||
) -> OperatorIndex;
|
||||
|
||||
fn add_dot(
|
||||
self: &mut OperationDag,
|
||||
|
||||
@@ -620,7 +620,7 @@ namespace concrete_optimizer {
|
||||
#define CXXBRIDGE1_STRUCT_concrete_optimizer$OperationDag
|
||||
struct OperationDag final : public ::rust::Opaque {
|
||||
::concrete_optimizer::dag::OperatorIndex add_input(::std::uint8_t out_precision, ::rust::Slice<const ::std::uint64_t> out_shape) noexcept;
|
||||
::concrete_optimizer::dag::OperatorIndex add_lut(::concrete_optimizer::dag::OperatorIndex input, ::rust::Slice<const ::std::uint64_t> table) noexcept;
|
||||
::concrete_optimizer::dag::OperatorIndex add_lut(::concrete_optimizer::dag::OperatorIndex input, ::rust::Slice<const ::std::uint64_t> table, ::std::uint8_t out_precision) noexcept;
|
||||
::concrete_optimizer::dag::OperatorIndex add_dot(::rust::Slice<const ::concrete_optimizer::dag::OperatorIndex> inputs, ::rust::Box<::concrete_optimizer::Weights> weights) noexcept;
|
||||
::concrete_optimizer::dag::OperatorIndex add_levelled_op(::rust::Slice<const ::concrete_optimizer::dag::OperatorIndex> inputs, double lwe_dim_cost_factor, double fixed_cost, double manp, ::rust::Slice<const ::std::uint64_t> out_shape, ::rust::Str comment) noexcept;
|
||||
~OperationDag() = delete;
|
||||
@@ -698,7 +698,7 @@ extern "C" {
|
||||
extern "C" {
|
||||
::concrete_optimizer::dag::OperatorIndex concrete_optimizer$cxxbridge1$OperationDag$add_input(::concrete_optimizer::OperationDag &self, ::std::uint8_t out_precision, ::rust::Slice<const ::std::uint64_t> out_shape) noexcept;
|
||||
|
||||
::concrete_optimizer::dag::OperatorIndex concrete_optimizer$cxxbridge1$OperationDag$add_lut(::concrete_optimizer::OperationDag &self, ::concrete_optimizer::dag::OperatorIndex input, ::rust::Slice<const ::std::uint64_t> table) noexcept;
|
||||
::concrete_optimizer::dag::OperatorIndex concrete_optimizer$cxxbridge1$OperationDag$add_lut(::concrete_optimizer::OperationDag &self, ::concrete_optimizer::dag::OperatorIndex input, ::rust::Slice<const ::std::uint64_t> table, ::std::uint8_t out_precision) noexcept;
|
||||
|
||||
::concrete_optimizer::dag::OperatorIndex concrete_optimizer$cxxbridge1$OperationDag$add_dot(::concrete_optimizer::OperationDag &self, ::rust::Slice<const ::concrete_optimizer::dag::OperatorIndex> inputs, ::concrete_optimizer::Weights *weights) noexcept;
|
||||
|
||||
@@ -737,8 +737,8 @@ namespace dag {
|
||||
return concrete_optimizer$cxxbridge1$OperationDag$add_input(*this, out_precision, out_shape);
|
||||
}
|
||||
|
||||
::concrete_optimizer::dag::OperatorIndex OperationDag::add_lut(::concrete_optimizer::dag::OperatorIndex input, ::rust::Slice<const ::std::uint64_t> table) noexcept {
|
||||
return concrete_optimizer$cxxbridge1$OperationDag$add_lut(*this, input, table);
|
||||
::concrete_optimizer::dag::OperatorIndex OperationDag::add_lut(::concrete_optimizer::dag::OperatorIndex input, ::rust::Slice<const ::std::uint64_t> table, ::std::uint8_t out_precision) noexcept {
|
||||
return concrete_optimizer$cxxbridge1$OperationDag$add_lut(*this, input, table, out_precision);
|
||||
}
|
||||
|
||||
::concrete_optimizer::dag::OperatorIndex OperationDag::add_dot(::rust::Slice<const ::concrete_optimizer::dag::OperatorIndex> inputs, ::rust::Box<::concrete_optimizer::Weights> weights) noexcept {
|
||||
|
||||
@@ -621,7 +621,7 @@ namespace concrete_optimizer {
|
||||
#define CXXBRIDGE1_STRUCT_concrete_optimizer$OperationDag
|
||||
struct OperationDag final : public ::rust::Opaque {
|
||||
::concrete_optimizer::dag::OperatorIndex add_input(::std::uint8_t out_precision, ::rust::Slice<const ::std::uint64_t> out_shape) noexcept;
|
||||
::concrete_optimizer::dag::OperatorIndex add_lut(::concrete_optimizer::dag::OperatorIndex input, ::rust::Slice<const ::std::uint64_t> table) noexcept;
|
||||
::concrete_optimizer::dag::OperatorIndex add_lut(::concrete_optimizer::dag::OperatorIndex input, ::rust::Slice<const ::std::uint64_t> table, ::std::uint8_t out_precision) noexcept;
|
||||
::concrete_optimizer::dag::OperatorIndex add_dot(::rust::Slice<const ::concrete_optimizer::dag::OperatorIndex> inputs, ::rust::Box<::concrete_optimizer::Weights> weights) noexcept;
|
||||
::concrete_optimizer::dag::OperatorIndex add_levelled_op(::rust::Slice<const ::concrete_optimizer::dag::OperatorIndex> inputs, double lwe_dim_cost_factor, double fixed_cost, double manp, ::rust::Slice<const ::std::uint64_t> out_shape, ::rust::Str comment) noexcept;
|
||||
~OperationDag() = delete;
|
||||
|
||||
Reference in New Issue
Block a user