Skip to content

Commit aaac8a6

Browse files
authored
Merge pull request #304 from j-berman/curve-trees-touchups
Minor touchups to some CurveTrees fn's
2 parents a81421b + b3b8f80 commit aaac8a6

2 files changed

Lines changed: 30 additions & 30 deletions

File tree

src/fcmp_pp/curve_trees.cpp

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -713,7 +713,7 @@ typename CurveTrees<C1, C2>::TreeExtension CurveTrees<C1, C2>::get_tree_extensio
713713
const uint64_t old_n_leaf_tuples,
714714
const LastHashes &existing_last_hashes,
715715
std::vector<std::vector<UnifiedOutput>> &&new_outputs,
716-
const bool use_fast_torsion_check)
716+
const bool use_fast_torsion_check) const
717717
{
718718
TreeExtension tree_extension;
719719
tree_extension.leaves.start_leaf_tuple_idx = old_n_leaf_tuples;
@@ -747,9 +747,9 @@ typename CurveTrees<C1, C2>::TreeExtension CurveTrees<C1, C2>::get_tree_extensio
747747
// and place the outputs in a tree extension struct for insertion into the db. We ignore invalid outputs, since
748748
// they cannot be inserted to the tree.
749749
std::vector<typename C1::Scalar> flattened_leaves;
750-
this->set_valid_leaves(flattened_leaves,
750+
this->outputs_to_leaves(std::move(flat_sorted_outputs),
751+
flattened_leaves,
751752
tree_extension.leaves.tuples,
752-
std::move(flat_sorted_outputs),
753753
use_fast_torsion_check);
754754

755755
if (flattened_leaves.empty())
@@ -829,7 +829,7 @@ template CurveTrees<Selene, Helios>::TreeExtension CurveTrees<Selene, Helios>::g
829829
const uint64_t old_n_leaf_tuples,
830830
const LastHashes &existing_last_hashes,
831831
std::vector<std::vector<UnifiedOutput>> &&new_outputs,
832-
const bool use_fast_torsion_check);
832+
const bool use_fast_torsion_check) const;
833833
//----------------------------------------------------------------------------------------------------------------------
834834
template<typename C1, typename C2>
835835
CompressedTreeExtension CurveTrees<C1, C2>::compress_tree_extension(
@@ -1508,13 +1508,15 @@ template CurveTrees<Selene, Helios>::TreeExtension CurveTrees<Selene, Helios>::p
15081508
// CurveTrees private member functions
15091509
//----------------------------------------------------------------------------------------------------------------------
15101510
template<typename C1, typename C2>
1511-
void CurveTrees<C1, C2>::set_valid_leaves(
1511+
void CurveTrees<C1, C2>::outputs_to_leaves(std::vector<UnifiedOutput> &&new_outputs,
15121512
std::vector<typename C1::Scalar> &flattened_leaves_out,
1513-
std::vector<UnifiedOutput> &tuples_out,
1514-
std::vector<UnifiedOutput> &&new_outputs,
1515-
const bool use_fast_torsion_check)
1513+
std::vector<UnifiedOutput> &valid_outputs_out,
1514+
const bool use_fast_torsion_check) const
15161515
{
1517-
TIME_MEASURE_START(set_valid_leaves);
1516+
flattened_leaves_out.clear();
1517+
valid_outputs_out.clear();
1518+
1519+
TIME_MEASURE_START(outputs_to_leaves);
15181520

15191521
// Keep track of valid outputs to make sure we only use leaves from valid outputs. Can't use std::vector<bool>
15201522
// because std::vector<bool> concurrent access is not thread safe.
@@ -1673,8 +1675,7 @@ void CurveTrees<C1, C2>::set_valid_leaves(
16731675
TIME_MEASURE_FINISH(get_selene_scalars);
16741676

16751677
// Step 5. Set valid tuples to be stored in the db
1676-
tuples_out.clear();
1677-
tuples_out.reserve(n_valid_outputs);
1678+
valid_outputs_out.reserve(n_valid_outputs);
16781679
for (std::size_t i = 0; i < valid_outputs.size(); ++i)
16791680
{
16801681
if (!valid_outputs[i])
@@ -1683,19 +1684,19 @@ void CurveTrees<C1, C2>::set_valid_leaves(
16831684
CHECK_AND_ASSERT_THROW_MES(new_outputs.size() > i, "unexpected size of valid outputs");
16841685

16851686
// We can derive leaf tuples from output pairs, so we store just the unified output in the db to save 32 bytes
1686-
tuples_out.emplace_back(std::move(new_outputs[i]));
1687+
valid_outputs_out.emplace_back(std::move(new_outputs[i]));
16871688
}
16881689

1689-
TIME_MEASURE_FINISH(set_valid_leaves);
1690+
TIME_MEASURE_FINISH(outputs_to_leaves);
16901691

16911692
m_convert_valid_leaves_ms += convert_valid_leaves;
16921693
m_collect_derivatives_ms += collect_derivatives;
16931694
m_batch_invert_ms += batch_invert;
16941695
m_get_selene_scalars_ms += get_selene_scalars;
16951696

1696-
m_set_valid_leaves_ms += set_valid_leaves;
1697+
m_outputs_to_leaves_ms += outputs_to_leaves;
16971698

1698-
LOG_PRINT_L2("Total time spent setting leaves: " << m_set_valid_leaves_ms / 1000
1699+
LOG_PRINT_L2("Total time spent setting leaves: " << m_outputs_to_leaves_ms / 1000
16991700
<< " , converting valid leaves: " << m_convert_valid_leaves_ms / 1000
17001701
<< " , collecting derivatives: " << m_collect_derivatives_ms / 1000
17011702
<< " , batch invert: " << m_batch_invert_ms / 1000

src/fcmp_pp/curve_trees.h

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ class CurveTrees
206206
TreeExtension get_tree_extension(const uint64_t old_n_leaf_tuples,
207207
const LastHashes &existing_last_hashes,
208208
std::vector<std::vector<UnifiedOutput>> &&new_outputs,
209-
const bool use_fast_torsion_check = false);
209+
const bool use_fast_torsion_check = false) const;
210210

211211
// Compress all the points in the tree extension
212212
CompressedTreeExtension compress_tree_extension(TreeExtension &&tree_extension) const;
@@ -246,12 +246,11 @@ class CurveTrees
246246
const uint64_t n_leaf_tuples,
247247
const uint64_t leaf_tuple_idx) const;
248248
private:
249-
// Multithreaded helper function to convert outputs to leaf tuples and set leaves on tree extension
250-
void set_valid_leaves(
249+
// Multithreaded helper function to convert valid outputs to leaf tuples ready for insertion to the tree & db
250+
void outputs_to_leaves(std::vector<UnifiedOutput> &&new_outputs,
251251
std::vector<typename C1::Scalar> &flattened_leaves_out,
252-
std::vector<UnifiedOutput> &tuples_out,
253-
std::vector<UnifiedOutput> &&new_outputs,
254-
const bool use_fast_torsion_check = false);
252+
std::vector<UnifiedOutput> &valid_outputs_out,
253+
const bool use_fast_torsion_check = false) const;
255254

256255
// Helper function used to set the next layer extension used to grow the next layer in the tree
257256
// - for example, if we just grew the parent layer after the leaf layer, the "next layer" would be the grandparent
@@ -266,15 +265,15 @@ class CurveTrees
266265

267266
//private state
268267
private:
269-
uint64_t m_set_valid_leaves_ms{0};
270-
uint64_t m_get_selene_scalars_ms{0};
271-
uint64_t m_batch_invert_ms{0};
272-
uint64_t m_collect_derivatives_ms{0};
273-
uint64_t m_convert_valid_leaves_ms{0};
274-
275-
uint64_t m_sorting_outputs_ms{0};
276-
uint64_t m_hash_leaves_ms{0};
277-
uint64_t m_hash_layers_ms{0};
268+
mutable uint64_t m_outputs_to_leaves_ms{0};
269+
mutable uint64_t m_get_selene_scalars_ms{0};
270+
mutable uint64_t m_batch_invert_ms{0};
271+
mutable uint64_t m_collect_derivatives_ms{0};
272+
mutable uint64_t m_convert_valid_leaves_ms{0};
273+
274+
mutable uint64_t m_sorting_outputs_ms{0};
275+
mutable uint64_t m_hash_leaves_ms{0};
276+
mutable uint64_t m_hash_layers_ms{0};
278277

279278
//public member variables
280279
public:

0 commit comments

Comments
 (0)