16 #include <helib/SumRegister.h>
17 #include <NTL/BasicThreadPool.h>
31 template <
typename TXT>
35 int end = ctxtArray.size();
42 NTL_EXEC_RANGE(comps, first, last)
43 for (
unsigned i = first; i < last; i++) {
44 ctxtArray.at(i) += ctxtArray.at(comps + i + odd);
49 ctxtArray.erase(ctxtArray.begin() + comps + odd, ctxtArray.end());
50 ctxtArray.shrink_to_fit();
53 end = (end + odd) >> 1;
66 template <
typename TXT>
68 const std::vector<NTL::ZZX>& server_set)
70 long availableThreads =
71 std::min(NTL::AvailableThreads(),
long(server_set.size()));
72 std::vector<TXT> interResult(availableThreads, query);
74 NTL::PartitionInfo pinfo(server_set.size());
76 NTL_EXEC_INDEX(availableThreads, index)
78 pinfo.interval(first, last, index);
81 for (
long i = first; i < last; ++i) {
82 auto lquery = std::make_unique<TXT>(query);
83 Ptxt<BGV> entry(query.getContext(), server_set[i]);
85 mapTo01(query.getContext().getEA(), *lquery);
87 lquery->addConstant(NTL::ZZX(1L));
88 sumRegister.
add(lquery);
95 interResult.at(index) = *(sumRegister.
getResult());
99 binSumReduction<TXT>(interResult);
100 return interResult.at(0) *= query;
An object that mimics the functionality of the Ctxt object, and acts as a convenient entry point for ...
Definition: Ptxt.h:188
Class to do a binary tree summation as results appear to keep memory usage to a minimum.
Definition: SumRegister.h:31
bool hasResult() const
Check result exists.
Definition: SumRegister.h:116
void flush()
Flush the binary tree to force producing a result on current tree.
Definition: SumRegister.h:127
std::unique_ptr< T > getResult()
Get the result of the summation.
Definition: SumRegister.h:107
void add(std::unique_ptr< T > &t)
Add to the sum another object of type T.
Definition: SumRegister.h:67
Definition: apiAttributes.h:21
TXT calculateSetIntersection(const TXT &query, const std::vector< NTL::ZZX > &server_set)
Given two sets, calculates and returns the set intersection.
Definition: set.h:67
void mapTo01(const EncryptedArray &ea, Ctxt &ctxt)
Definition: eqtesting.cpp:35
void binSumReduction(std::vector< TXT > &ctxtArray)
Performs a binary summation of a vector of elements.
Definition: set.h:32
void assertTrue(const T &value, const std::string &message)
Definition: assertions.h:61