Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@ template <typename FF_> class EccOpQueueRelationImpl {

template <typename AllEntities> inline static bool skip([[maybe_unused]] const AllEntities& in)
{
// The prover can skip execution of this relation altogether since an honest input will lead to a zero
// contribution at every row, even when the selector lagrange_ecc_op is on
return true;
// The prover can skip execution of this relation if the ecc op selector is identically zero
return in.lagrange_ecc_op.is_zero();
}

/**
Expand Down
2 changes: 1 addition & 1 deletion barretenberg/cpp/src/barretenberg/relations/utils.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ template <typename Flavor> class RelationUtils {
{
constexpr_for<0, NUM_RELATIONS, 1>([&]<size_t rel_index>() {
// FIXME: You wan't /*consider_skipping=*/false here, but tests need to be fixed.
accumulate_single_relation<Parameters, rel_index, /*consider_skipping=*/true>(
accumulate_single_relation<Parameters, rel_index, /*consider_skipping=*/false>(
evaluations, relation_evaluations, relation_parameters, partial_evaluation_result);
});
}
Expand Down
19 changes: 12 additions & 7 deletions barretenberg/cpp/src/barretenberg/sumcheck/sumcheck.test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,17 +211,22 @@ template <typename Flavor> class SumcheckTests : public ::testing::Test {
auto r = FF::random_element();

std::array<FF, multivariate_n> z_perm = { 0, 0, 0, 0, 0, 0, z_1, z_2 };
std::array<FF, multivariate_n> lookup_inverses = { 0, 0, 0, 0, 0, 0, r * r, r };

std::array<FF, multivariate_n> lookup_inverses = { 0, 0, 0, 0, 0, r, r * r, r * r * r };
// To avoid triggering the skipping mechanism in LogDerivativeRelation, we have to ensure
// that the condition (in.q_lookup.is_zero() && in.lookup_read_counts.is_zero()) is not satisfied in the
// blinded rows
std::array<FF, multivariate_n> skipping_disabler = { 0, 0, 0, 0, 0, 1, 1, 1 };
full_polynomials.z_perm = bb::Polynomial<FF>(z_perm);
full_polynomials.lookup_inverses = bb::Polynomial<FF>(lookup_inverses);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the current skipping condition in ecc_op_queue_relation conflicts with the masking mechanism. for now, I un-masked the ecc op wire, but we'll have to find a way to make it more robust (when merge protocol is completed)


full_polynomials.lookup_read_counts = bb::Polynomial<FF>(skipping_disabler);
if constexpr (std::is_same<Flavor, MegaZKFlavor>::value) {
std::array<FF, multivariate_n> ecc_op_wire = { 0, 0, 0, 0, 0, 0, r * r * r, w_4[6] };
std::array<FF, multivariate_n> return_data_inverses = { 0, 0, 0, 0, 0, 0, FF(7) * r * r, -r };

full_polynomials.ecc_op_wire_1 = bb::Polynomial<FF>(ecc_op_wire);
std::array<FF, multivariate_n> return_data_inverses = { 0, 0, 0, 0, 0, 0, r * r, -r };
full_polynomials.return_data_inverses = bb::Polynomial<FF>(return_data_inverses);

// To avoid triggering the skipping mechanism in DatabusLookupRelation, we have to ensure that the
// condition (in.calldata_read_counts.is_zero() && in.secondary_calldata_read_counts.is_zero() &&
// in.return_data_read_counts.is_zero()) is not satisfied in the blinded rows
full_polynomials.calldata_read_counts = bb::Polynomial<FF>(skipping_disabler);
}
}
full_polynomials.w_l = bb::Polynomial<FF>(w_l);
Expand Down