Skip to content

Commit 3aaa83a

Browse files
ludamadjohnathan79717AztecBotledwards2225
authored
feat: barretenberg merge-train (#15292)
fix: merge train shorter body (#15331) fix: merge recreate automation (#15332) fix: pr-body for merge-train fix: merge-train pr body workflow fix: ci3.yml merge-train concurrency Update merge-train-update-pr-body.yml chore: make bb tests have BB_VERBOSE=1 (#15328) chore: simplify trace poly population methods (#15298) chore: remove deprecated create_circuit method (#15296) chore: construct thread ranges as list of active ranges (#15285) --------- Co-authored-by: Jonathan Hao <jonathan@aztec-labs.com> Co-authored-by: AztecBot <tech@aztecprotocol.com> Co-authored-by: ledwards2225 <98505400+ledwards2225@users.noreply.github.com>
1 parent 629a86e commit 3aaa83a

30 files changed

+243
-287
lines changed

.github/workflows/ci3.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ jobs:
7575
# Allow full concurrency for merge-train PRs, one-run-per-branch for everything else.
7676
- name: Set Instance Postfix for merge-train
7777
if: startsWith(github.event.pull_request.head.ref, 'merge-train/')
78-
run: echo "INSTANCE_POSTFIX=merge-train-${{ github.sha }}" >> $GITHUB_ENV
78+
run: echo "INSTANCE_POSTFIX=${{ github.event.pull_request.commits }}" >> $GITHUB_ENV
7979

8080
- name: Setup
8181
run: |

.github/workflows/merge-train-recreate-queue.yml renamed to .github/workflows/merge-train-recreate.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ jobs:
4040
NEW_BRANCH="merge-queue/${MERGE_TRAIN_BRANCH}/${TIMESTAMP}"
4141
git checkout -b "$NEW_BRANCH"
4242
43+
# Merge the base branch (typically 'next') with theirs strategy
44+
BASE_BRANCH="${MERGE_TRAIN_BRANCH#merge-train/}"
45+
git merge -X theirs "origin/$BASE_BRANCH"
46+
4347
# Seed it with an empty commit
4448
git commit --allow-empty -m "[empty] Start merge-train. Choo choo."
4549

.github/workflows/merge-train-update-pr-body.yml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Merge-Train PR Body
33
on:
44
push:
55
branches:
6-
- 'merge-train/**' # this time it *is* the branch that was pushed
6+
- 'merge-train/**'
77

88
jobs:
99
update-pr-body:
@@ -37,13 +37,16 @@ jobs:
3737
id: commits
3838
run: |
3939
PR_NUMBER=${{ steps.pr.outputs.number }}
40-
BASE_SHA=$(gh pr view $PR_NUMBER --json baseRef --jq .baseRef.target.oid)
41-
HEAD_SHA=$GITHUB_SHA
40+
export GH_TOKEN="${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}"
41+
# Obtain the base-branch and head-branch tip commits
42+
read BASE_SHA HEAD_SHA < <(
43+
gh pr view "$PR_NUMBER" \
44+
--json baseRefOid,headRefOid \
45+
--jq '.baseRefOid + " " + .headRefOid'
46+
)
4247
echo "commit_list<<EOF" >> "$GITHUB_OUTPUT"
4348
git log --oneline --no-merges "$BASE_SHA..$HEAD_SHA" --pretty=format:"%s" |
44-
grep -v "^\[empty\]" |
45-
grep -v "^Start merge-train" |
46-
sed 's/^/- /' >> "$GITHUB_OUTPUT"
49+
grep -v "^\[empty\]" >> "$GITHUB_OUTPUT"
4750
echo "" >> "$GITHUB_OUTPUT"
4851
echo "EOF" >> "$GITHUB_OUTPUT"
4952
@@ -54,7 +57,7 @@ jobs:
5457
script: |
5558
const number = ${{ steps.pr.outputs.number }};
5659
const commits = `${{ steps.commits.outputs.commit_list }}`.trim();
57-
const newBody = `Merge train with:\n${commits || '*No commits yet*'}`;
60+
const newBody = `${commits || '*No commits yet*'}`;
5861
await github.rest.pulls.update({
5962
owner: context.repo.owner,
6063
repo: context.repo.repo,

barretenberg/cpp/scripts/run_test.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ cd $(scripts/native-preset-build-dir)
1212

1313
export GTEST_COLOR=1
1414
export HARDWARE_CONCURRENCY=${CPUS:-8}
15+
export BB_VERBOSE=1
1516

1617
exec ./bin/$1 --gtest_filter=$2

barretenberg/cpp/src/barretenberg/circuit_checker/ultra_circuit_checker.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -279,10 +279,11 @@ void UltraCircuitChecker::populate_values(
279279
values.w_o = builder.get_variable(block.w_o()[idx]);
280280
// Note: memory_data contains indices into the block to which RAM/ROM gates were added so we need to check that
281281
// we are indexing into the correct block before updating the w_4 value.
282-
if (block.has_ram_rom && memory_data.read_record_gates.contains(idx)) {
282+
const bool is_ram_rom_block = (&block == &builder.blocks.aux);
283+
if (is_ram_rom_block && memory_data.read_record_gates.contains(idx)) {
283284
values.w_4 = compute_memory_record_term(
284285
values.w_l, values.w_r, values.w_o, memory_data.eta, memory_data.eta_two, memory_data.eta_three);
285-
} else if (block.has_ram_rom && memory_data.write_record_gates.contains(idx)) {
286+
} else if (is_ram_rom_block && memory_data.write_record_gates.contains(idx)) {
286287
values.w_4 =
287288
compute_memory_record_term(
288289
values.w_l, values.w_r, values.w_o, memory_data.eta, memory_data.eta_two, memory_data.eta_three) +
@@ -296,14 +297,14 @@ void UltraCircuitChecker::populate_values(
296297
values.w_l_shift = builder.get_variable(block.w_l()[idx + 1]);
297298
values.w_r_shift = builder.get_variable(block.w_r()[idx + 1]);
298299
values.w_o_shift = builder.get_variable(block.w_o()[idx + 1]);
299-
if (block.has_ram_rom && memory_data.read_record_gates.contains(idx + 1)) {
300+
if (is_ram_rom_block && memory_data.read_record_gates.contains(idx + 1)) {
300301
values.w_4_shift = compute_memory_record_term(values.w_l_shift,
301302
values.w_r_shift,
302303
values.w_o_shift,
303304
memory_data.eta,
304305
memory_data.eta_two,
305306
memory_data.eta_three);
306-
} else if (block.has_ram_rom && memory_data.write_record_gates.contains(idx + 1)) {
307+
} else if (is_ram_rom_block && memory_data.write_record_gates.contains(idx + 1)) {
307308
values.w_4_shift = compute_memory_record_term(values.w_l_shift,
308309
values.w_r_shift,
309310
values.w_o_shift,

barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -602,40 +602,6 @@ template <> MegaCircuitBuilder create_circuit(AcirProgram& program, const Progra
602602
return builder;
603603
};
604604

605-
/**
606-
* @brief Specialization for creating Ultra circuit from acir constraints and optionally a witness
607-
*
608-
* @tparam Builder
609-
* @param constraint_system
610-
* @param size_hint
611-
* @param witness
612-
* @return Builder
613-
*/
614-
// TODO(https://github.com/AztecProtocol/barretenberg/issues/1161): Delete this or refactor it.
615-
template <>
616-
UltraCircuitBuilder create_circuit(AcirFormat& constraint_system,
617-
bool recursive,
618-
const size_t size_hint,
619-
const WitnessVector& witness,
620-
uint32_t honk_recursion,
621-
[[maybe_unused]] std::shared_ptr<ECCOpQueue>,
622-
bool collect_gates_per_opcode)
623-
{
624-
PROFILE_THIS();
625-
Builder builder{ size_hint, witness, constraint_system.public_inputs, constraint_system.varnum, recursive };
626-
627-
AcirProgram program{ constraint_system, witness };
628-
const ProgramMetadata metadata{ .recursive = recursive,
629-
.honk_recursion = honk_recursion,
630-
.collect_gates_per_opcode = collect_gates_per_opcode,
631-
.size_hint = size_hint };
632-
build_constraints(builder, program, metadata);
633-
634-
vinfo("created circuit");
635-
636-
return builder;
637-
};
638-
639605
template void build_constraints<MegaCircuitBuilder>(MegaCircuitBuilder&, AcirProgram&, const ProgramMetadata&);
640606

641607
} // namespace acir_format

barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -223,21 +223,6 @@ struct ProgramMetadata {
223223
template <typename Builder = bb::UltraCircuitBuilder>
224224
Builder create_circuit(AcirProgram& program, const ProgramMetadata& metadata = ProgramMetadata{});
225225

226-
// TODO(https://github.com/AztecProtocol/barretenberg/issues/1161) Refactor this function
227-
template <typename Builder = bb::UltraCircuitBuilder>
228-
Builder create_circuit(AcirFormat& constraint_system,
229-
// Specifies whether a prover that produces SNARK recursion friendly proofs should be used.
230-
// The proof produced when this flag is true should be friendly for recursive verification inside
231-
// of another SNARK. For example, a recursive friendly proof may use Blake3Pedersen for
232-
// hashing in its transcript, while we still want a prove that uses Keccak for its transcript in
233-
// order to be able to verify SNARKs on Ethereum.
234-
bool recursive,
235-
const size_t size_hint = 0,
236-
const WitnessVector& witness = {},
237-
uint32_t honk_recursion = 0,
238-
std::shared_ptr<bb::ECCOpQueue> op_queue = std::make_shared<bb::ECCOpQueue>(),
239-
bool collect_gates_per_opcode = false);
240-
241226
template <typename Builder>
242227
void build_constraints(Builder& builder, AcirProgram& program, const ProgramMetadata& metadata);
243228

barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.test.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ TEST_F(AcirFormatTests, TestASingleConstraintNoPubInputs)
6464
};
6565
mock_opcode_indices(constraint_system);
6666
WitnessVector witness{ 5, 7, 12 };
67-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint*/ 0, witness);
67+
AcirProgram program{ constraint_system, witness };
68+
auto builder = create_circuit(program);
6869

6970
EXPECT_TRUE(CircuitChecker::check(builder));
7071
}
@@ -181,7 +182,8 @@ TEST_F(AcirFormatTests, TestLogicGateFromNoirCircuit)
181182
WitnessVector witness{
182183
5, 10, 15, 5, inverse_of_five, 1,
183184
};
184-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint*/ 0, witness);
185+
AcirProgram program{ constraint_system, witness };
186+
auto builder = create_circuit(program);
185187

186188
EXPECT_TRUE(CircuitChecker::check(builder));
187189
}
@@ -257,7 +259,8 @@ TEST_F(AcirFormatTests, TestKeccakPermutation)
257259
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
258260
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 };
259261

260-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint=*/0, witness);
262+
AcirProgram program{ constraint_system, witness };
263+
auto builder = create_circuit(program);
261264

262265
EXPECT_TRUE(CircuitChecker::check(builder));
263266
}
@@ -446,7 +449,8 @@ TEST_F(AcirFormatTests, TestBigAdd)
446449
};
447450
mock_opcode_indices(constraint_system);
448451

449-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint*/ 0, witness_values);
452+
AcirProgram program{ constraint_system, witness_values };
453+
auto builder = create_circuit(program);
450454

451455
EXPECT_TRUE(CircuitChecker::check(builder));
452456
}

barretenberg/cpp/src/barretenberg/dsl/acir_format/bigint_constraint.test.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ TEST_F(BigIntTests, TestBigIntConstraintMultiple)
203203
mock_opcode_indices(constraint_system);
204204
constraint_system.varnum = static_cast<uint32_t>(witness.size() + 1);
205205

206-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint*/ 0, witness);
206+
AcirProgram program{ constraint_system, witness };
207+
auto builder = create_circuit(program);
207208

208209
EXPECT_TRUE(CircuitChecker::check(builder));
209210
}
@@ -266,7 +267,8 @@ TEST_F(BigIntTests, TestBigIntConstraintSimple)
266267
WitnessVector witness{
267268
0, 3, 6, 3, 0,
268269
};
269-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint*/ 0, witness);
270+
AcirProgram program{ constraint_system, witness };
271+
auto builder = create_circuit(program);
270272

271273
EXPECT_TRUE(CircuitChecker::check(builder));
272274
}
@@ -323,7 +325,8 @@ TEST_F(BigIntTests, TestBigIntConstraintReuse)
323325
constraint_system.varnum = static_cast<uint32_t>(witness.size() + 1);
324326
mock_opcode_indices(constraint_system);
325327

326-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint*/ 0, witness);
328+
AcirProgram program{ constraint_system, witness };
329+
auto builder = create_circuit(program);
327330

328331
EXPECT_TRUE(CircuitChecker::check(builder));
329332
}
@@ -378,7 +381,8 @@ TEST_F(BigIntTests, TestBigIntConstraintReuse2)
378381
constraint_system.varnum = static_cast<uint32_t>(witness.size() + 1);
379382
mock_opcode_indices(constraint_system);
380383

381-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint*/ 0, witness);
384+
AcirProgram program{ constraint_system, witness };
385+
auto builder = create_circuit(program);
382386

383387
EXPECT_TRUE(CircuitChecker::check(builder));
384388
}
@@ -448,7 +452,8 @@ TEST_F(BigIntTests, TestBigIntDIV)
448452
WitnessVector witness{
449453
0, 6, 3, 2, 0,
450454
};
451-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint*/ 0, witness);
455+
AcirProgram program{ constraint_system, witness };
456+
auto builder = create_circuit(program);
452457

453458
EXPECT_TRUE(CircuitChecker::check(builder));
454459
}

barretenberg/cpp/src/barretenberg/dsl/acir_format/ec_operations.test.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ TEST_F(EcOperations, TestECOperations)
8989
};
9090
mock_opcode_indices(constraint_system);
9191

92-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint*/ 0, witness_values);
92+
AcirProgram program{ constraint_system, witness_values };
93+
auto builder = create_circuit(program);
9394

9495
EXPECT_TRUE(CircuitChecker::check(builder));
9596
}
@@ -217,7 +218,8 @@ TEST_F(EcOperations, TestECMultiScalarMul)
217218
};
218219
mock_opcode_indices(constraint_system);
219220

220-
auto builder = create_circuit(constraint_system, /*recursive*/ false, /*size_hint*/ 0, witness_values);
221+
AcirProgram program{ constraint_system, witness_values };
222+
auto builder = create_circuit(program);
221223

222224
EXPECT_TRUE(CircuitChecker::check(builder));
223225
}

0 commit comments

Comments
 (0)