Skip to content

Commit 44e5283

Browse files
author
akokoshn
committed
Static definition of constant/selector columns amount
1 parent 3d9cbe6 commit 44e5283

File tree

3 files changed

+27
-40
lines changed

3 files changed

+27
-40
lines changed

bin/assigner/src/main.cpp

Lines changed: 25 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,8 @@ 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+
const auto& lookup_selector_cols = table_proxy.get_lookup_selector_cols();
333+
for (std::uint32_t i = 0; i < ComponentSelectorColumns; i++) {
346334
const auto column_size = table_proxy.selector_column_size(i);
347335
for(const auto& j : rows) {
348336
if (j < column_size) {
@@ -382,10 +370,15 @@ int curve_dependent_main(std::string bytecode_file_name,
382370
std::uint32_t max_num_provers) {
383371
using BlueprintFieldType = typename CurveType::base_field_type;
384372

373+
constexpr std::size_t ComponentConstantColumns = 5;
374+
constexpr std::size_t LookupConstantColumns = 30;
375+
constexpr std::size_t ComponentSelectorColumns = 30;
376+
constexpr std::size_t LookupSelectorConstantColumns = 5;
377+
385378
constexpr std::size_t WitnessColumns = 15;
386379
constexpr std::size_t PublicInputColumns = 1;
387-
constexpr std::size_t ConstantColumns = 30;
388-
constexpr std::size_t SelectorColumns = 35;
380+
constexpr std::size_t ConstantColumns = ComponentConstantColumns + LookupConstantColumns;
381+
constexpr std::size_t SelectorColumns = ComponentSelectorColumns + LookupSelectorConstantColumns;
389382

390383
using ArithmetizationParams =
391384
zk::snark::plonk_arithmetization_params<WitnessColumns, PublicInputColumns, ConstantColumns, SelectorColumns>;
@@ -442,24 +435,18 @@ int curve_dependent_main(std::string bytecode_file_name,
442435
// pack lookup tables
443436
if (parser_instance.circuits[0].get_reserved_tables().size() > 0) {
444437
std::vector <std::size_t> lookup_columns_indices;
445-
const auto& lookup_tables = parser_instance.circuits[0].get_reserved_tables();
446438
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, ...
439+
lookup_columns_indices.resize(LookupConstantColumns);
440+
// fill ComponentConstantColumns, ComponentConstantColumns + 1, ...
441+
std::iota(lookup_columns_indices.begin(), lookup_columns_indices.end(), ComponentConstantColumns);
456442

457443
auto usable_rows_amount = zk::snark::pack_lookup_tables_horizontal(
458444
parser_instance.circuits[0].get_reserved_indices(),
459445
parser_instance.circuits[0].get_reserved_tables(),
460446
parser_instance.circuits[0].get(),
461447
parser_instance.assignments[0].get(),
462448
lookup_columns_indices,
449+
ComponentSelectorColumns,
463450
parser_instance.assignments[0].allocated_rows(),
464451
max_usable_rows
465452
);
@@ -479,7 +466,7 @@ int curve_dependent_main(std::string bytecode_file_name,
479466
print_assignment_table<
480467
nil::marshalling::option::big_endian,
481468
ArithmetizationType, BlueprintFieldType
482-
>(parser_instance.assignments[0], print_kind, shared_otable);
469+
>(parser_instance.assignments[0], print_kind, ComponentConstantColumns, ComponentSelectorColumns, shared_otable);
483470

484471
shared_otable.close();
485472

@@ -495,7 +482,7 @@ int curve_dependent_main(std::string bytecode_file_name,
495482
print_assignment_table<
496483
nil::marshalling::option::big_endian,
497484
ArithmetizationType, BlueprintFieldType
498-
>(it, print_table_kind::PRIVATE, otable);
485+
>(it, print_table_kind::PRIVATE, ComponentConstantColumns, ComponentSelectorColumns, otable);
499486

500487

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

libs/crypto3

Submodule crypto3 updated 1 file

0 commit comments

Comments
 (0)