Skip to content

Commit 9ea5f45

Browse files
akokoshnnkaskov
authored andcommitted
Static definition of constant/selector columns amount
1 parent 604da5e commit 9ea5f45

File tree

4 files changed

+28
-42
lines changed

4 files changed

+28
-42
lines changed

bin/assigner/src/main.cpp

Lines changed: 24 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ void fill_vector_value(std::vector<ValueType> &table_values, const ContainerType
181181
template<typename Endianness, typename ArithmetizationType, typename BlueprintFieldType>
182182
void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_proxy,
183183
print_table_kind print_kind,
184+
std::uint32_t ComponentConstantColumns, std::uint32_t ComponentSelectorColumns,
184185
std::ostream &out = std::cout) {
185186
using AssignmentTableType = assignment_proxy<ArithmetizationType>;
186187
std::uint32_t usable_rows_amount;
@@ -193,13 +194,13 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
193194
const auto lookup_constant_cols = table_proxy.get_lookup_constant_cols();
194195
const auto lookup_selector_cols = table_proxy.get_lookup_selector_cols();
195196
if (print_kind == print_table_kind::PRIVATE) {
196-
constant_size = constant_size - table_proxy.get_lookup_constant_amount();
197-
selector_size = selector_size - table_proxy.get_lookup_selector_amount();
197+
constant_size = ComponentConstantColumns;
198+
selector_size = ComponentSelectorColumns;
198199
total_columns = witness_size + constant_size + selector_size;
199200
usable_rows_amount = table_proxy.get_used_rows().size();
200201
} else if (print_kind == print_table_kind::SHARED) {
201-
constant_size = table_proxy.get_lookup_constant_amount();
202-
selector_size = table_proxy.get_lookup_selector_amount();
202+
constant_size = constant_size - ComponentConstantColumns;
203+
selector_size = selector_size - ComponentSelectorColumns;
203204
total_columns = shared_size + public_input_size + constant_size + selector_size;
204205
std::uint32_t max_shared_size = 0;
205206
std::uint32_t max_public_inputs_size = 0;
@@ -290,32 +291,18 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
290291
fill_vector_value<typename AssignmentTableType::field_type::value_type, column_type>
291292
(table_values, table_proxy.shared(i), padded_rows_amount);
292293
}
293-
for (const auto &i : table_proxy.get_lookup_constant_cols()) {
294+
for (std::uint32_t i = 0; i < constant_size; i++) {
294295
fill_vector_value<typename AssignmentTableType::field_type::value_type, column_type>
295-
(table_values, table_proxy.constant(i), padded_rows_amount);
296+
(table_values, table_proxy.constant(i + ComponentConstantColumns), padded_rows_amount);
296297
}
297-
for (const auto &i : table_proxy.get_lookup_selector_cols()) {
298+
for (std::uint32_t i = 0; i < selector_size; i++) {
298299
fill_vector_value<typename AssignmentTableType::field_type::value_type, column_type>
299-
(table_values, table_proxy.selector(i), padded_rows_amount);
300+
(table_values, table_proxy.selector(i + ComponentSelectorColumns), padded_rows_amount);
300301
}
301302
} else {
302303
const std::uint32_t padding = padded_rows_amount - usable_rows_amount;
303304
const auto& rows = table_proxy.get_used_rows();
304305

305-
std::vector<std::uint32_t> constant_cols;
306-
const auto& lookup_constant_cols = table_proxy.get_lookup_constant_cols();
307-
for (std::uint32_t i = 0; i < table_proxy.constants_amount(); i++) {
308-
if (lookup_constant_cols.find(i) == lookup_constant_cols.end()) {
309-
constant_cols.push_back(i);
310-
}
311-
}
312-
std::vector<std::uint32_t> selector_cols;
313-
const auto& lookup_selector_cols = table_proxy.get_lookup_selector_cols();
314-
for (std::uint32_t i = 0; i < table_proxy.selectors_amount(); i++) {
315-
if (lookup_selector_cols.find(i) == lookup_selector_cols.end()) {
316-
selector_cols.push_back(i);
317-
}
318-
}
319306
for( std::size_t i = 0; i < AssignmentTableType::arithmetization_params::witness_columns; i++ ){
320307
const auto column_size = table_proxy.witness_column_size(i);
321308
for(const auto& j : rows){
@@ -329,7 +316,7 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
329316
table_values.push_back(0);
330317
}
331318
}
332-
for(const auto& i : constant_cols) {
319+
for (std::uint32_t i = 0; i < ComponentConstantColumns; i++) {
333320
const auto column_size = table_proxy.constant_column_size(i);
334321
for(const auto& j : rows){
335322
if (j < column_size) {
@@ -342,7 +329,7 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
342329
table_values.push_back(0);
343330
}
344331
}
345-
for(const auto& i : selector_cols) {
332+
for (std::uint32_t i = 0; i < ComponentSelectorColumns; i++) {
346333
const auto column_size = table_proxy.selector_column_size(i);
347334
for(const auto& j : rows) {
348335
if (j < column_size) {
@@ -382,10 +369,15 @@ int curve_dependent_main(std::string bytecode_file_name,
382369
std::uint32_t max_num_provers) {
383370
using BlueprintFieldType = typename CurveType::base_field_type;
384371

372+
constexpr std::size_t ComponentConstantColumns = 5;
373+
constexpr std::size_t LookupConstantColumns = 30;
374+
constexpr std::size_t ComponentSelectorColumns = 30;
375+
constexpr std::size_t LookupSelectorConstantColumns = 6;
376+
385377
constexpr std::size_t WitnessColumns = 15;
386378
constexpr std::size_t PublicInputColumns = 1;
387-
constexpr std::size_t ConstantColumns = 30;
388-
constexpr std::size_t SelectorColumns = 35;
379+
constexpr std::size_t ConstantColumns = ComponentConstantColumns + LookupConstantColumns;
380+
constexpr std::size_t SelectorColumns = ComponentSelectorColumns + LookupSelectorConstantColumns;
389381

390382
using ArithmetizationParams =
391383
zk::snark::plonk_arithmetization_params<WitnessColumns, PublicInputColumns, ConstantColumns, SelectorColumns>;
@@ -442,24 +434,18 @@ int curve_dependent_main(std::string bytecode_file_name,
442434
// pack lookup tables
443435
if (parser_instance.circuits[0].get_reserved_tables().size() > 0) {
444436
std::vector <std::size_t> lookup_columns_indices;
445-
const auto& lookup_tables = parser_instance.circuits[0].get_reserved_tables();
446437
const std::uint32_t max_usable_rows = 500000;
447-
// looking for free constant columns
448-
std::uint32_t max_used_col = 0;
449-
for(std::size_t i = 0; i < ConstantColumns; i++) {
450-
if(parser_instance.assignments[0].constant_column_size(i) != 0) {
451-
max_used_col = i;
452-
}
453-
}
454-
lookup_columns_indices.resize(ConstantColumns - max_used_col - 1);
455-
std::iota(lookup_columns_indices.begin(), lookup_columns_indices.end(), max_used_col + 1); // fill max_used_col + 1, max_used_col + 2, ...
438+
lookup_columns_indices.resize(LookupConstantColumns);
439+
// fill ComponentConstantColumns, ComponentConstantColumns + 1, ...
440+
std::iota(lookup_columns_indices.begin(), lookup_columns_indices.end(), ComponentConstantColumns);
456441

457442
auto usable_rows_amount = zk::snark::pack_lookup_tables_horizontal(
458443
parser_instance.circuits[0].get_reserved_indices(),
459444
parser_instance.circuits[0].get_reserved_tables(),
460445
parser_instance.circuits[0].get(),
461446
parser_instance.assignments[0].get(),
462447
lookup_columns_indices,
448+
ComponentSelectorColumns,
463449
parser_instance.assignments[0].allocated_rows(),
464450
max_usable_rows
465451
);
@@ -479,7 +465,7 @@ int curve_dependent_main(std::string bytecode_file_name,
479465
print_assignment_table<
480466
nil::marshalling::option::big_endian,
481467
ArithmetizationType, BlueprintFieldType
482-
>(parser_instance.assignments[0], print_kind, shared_otable);
468+
>(parser_instance.assignments[0], print_kind, ComponentConstantColumns, ComponentSelectorColumns, shared_otable);
483469

484470
shared_otable.close();
485471

@@ -495,7 +481,7 @@ int curve_dependent_main(std::string bytecode_file_name,
495481
print_assignment_table<
496482
nil::marshalling::option::big_endian,
497483
ArithmetizationType, BlueprintFieldType
498-
>(it, print_table_kind::PRIVATE, otable);
484+
>(it, print_table_kind::PRIVATE, ComponentConstantColumns, ComponentSelectorColumns, otable);
499485

500486

501487
// nil::blueprint::profiling_assignment_table(parser_instance.assignmnt, desc.usable_rows_amount, otable);

bin/transpiler/src/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,8 @@ int main(int argc, char *argv[]) {
253253
using BlueprintFieldType = typename curve_type::base_field_type;
254254
constexpr std::size_t WitnessColumns = 15;
255255
constexpr std::size_t PublicInputColumns = 1;
256-
constexpr std::size_t ConstantColumns = 30;
257-
constexpr std::size_t SelectorColumns = 35;
256+
constexpr std::size_t ConstantColumns = 35;
257+
constexpr std::size_t SelectorColumns = 36;
258258

259259
using ArithmetizationParams =
260260
nil::crypto3::zk::snark::plonk_arithmetization_params<WitnessColumns, PublicInputColumns, ConstantColumns,

libs/crypto3

Submodule crypto3 updated 1 file

0 commit comments

Comments
 (0)