Ejemplo n.º 1
0
 def federated_secure_sum(self, value, bitwidth):
   """Implements `federated_secure_sum` as defined in `api/intrinsics.py`."""
   value = value_impl.to_value(value, None, self._context_stack)
   value = value_utils.ensure_federated_value(value, placements.CLIENTS,
                                              'value to be summed')
   type_utils.check_is_structure_of_integers(value.type_signature)
   bitwidth = value_impl.to_value(bitwidth, None, self._context_stack)
   type_utils.check_equivalent_types(value.type_signature.member,
                                     bitwidth.type_signature)
   value = value_impl.ValueImpl.get_comp(value)
   bitwidth = value_impl.ValueImpl.get_comp(bitwidth)
   comp = building_block_factory.create_federated_secure_sum(value, bitwidth)
   return value_impl.ValueImpl(comp, self._context_stack)
Ejemplo n.º 2
0
 def federated_secure_sum(self, value, bitwidth):
     """Implements `federated_secure_sum` as defined in `api/intrinsics.py`."""
     value = value_impl.to_value(value, None, self._context_stack)
     value = value_utils.ensure_federated_value(value, placements.CLIENTS,
                                                'value to be summed')
     type_utils.check_is_structure_of_integers(value.type_signature)
     bitwidth = value_impl.to_value(bitwidth, None, self._context_stack)
     value_member_ty = value.type_signature.member
     bitwidth_ty = bitwidth.type_signature
     if not type_utils.are_equivalent_types(value_member_ty, bitwidth_ty):
         raise TypeError(
             'Expected `federated_secure_sum` parameters `value` and `bitwidth` '
             'to have the same structure. Found `value` of `{}` and `bitwidth` of `{}`'
             .format(value_member_ty, bitwidth_ty))
     value = value_impl.ValueImpl.get_comp(value)
     bitwidth = value_impl.ValueImpl.get_comp(bitwidth)
     comp = building_block_factory.create_federated_secure_sum(
         value, bitwidth)
     return value_impl.ValueImpl(comp, self._context_stack)
Ejemplo n.º 3
0
 def federated_secure_sum(self, value, bitwidth):
   """Implements `federated_secure_sum` as defined in `api/intrinsics.py`."""
   value = value_impl.to_value(value, None, self._context_stack)
   value = value_utils.ensure_federated_value(value, placements.CLIENTS,
                                              'value to be summed')
   type_utils.check_is_structure_of_integers(value.type_signature)
   bitwidth = value_impl.to_value(bitwidth, None, self._context_stack)
   value_member_type = value.type_signature.member
   bitwidth_type = bitwidth.type_signature
   if not type_utils.is_valid_bitwidth_type_for_value_type(
       bitwidth_type, value_member_type):
     raise TypeError(
         'Expected `federated_secure_sum` parameter `bitwidth` to match '
         'the structure of `value`, with one integer bitwidth per tensor in '
         '`value`. Found `value` of `{}` and `bitwidth` of `{}`.'.format(
             value_member_type, bitwidth_type))
   value = value_impl.ValueImpl.get_comp(value)
   bitwidth = value_impl.ValueImpl.get_comp(bitwidth)
   comp = building_block_factory.create_federated_secure_sum(value, bitwidth)
   return value_impl.ValueImpl(comp, self._context_stack)