Skip to content

Commit d6f3862

Browse files
committed
add column-sizes command line option #542
1 parent b7a07fd commit d6f3862

File tree

1 file changed

+41
-13
lines changed

1 file changed

+41
-13
lines changed

bin/assigner/src/main.cpp

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -471,20 +471,24 @@ int curve_dependent_main(std::string bytecode_file_name,
471471
std::uint32_t max_num_provers,
472472
std::uint32_t max_lookup_rows,
473473
std::uint32_t target_prover,
474-
nil::blueprint::print_format circuit_output_print_format) {
474+
nil::blueprint::print_format circuit_output_print_format,
475+
std::array<std::size_t, 6> column_sizes
476+
) {
475477

476-
constexpr std::size_t ComponentConstantColumns = ParametersPolicy::ComponentConstantColumns;
477-
constexpr std::size_t LookupConstantColumns = ParametersPolicy::LookupConstantColumns;
478-
constexpr std::size_t ComponentSelectorColumns = ParametersPolicy::ComponentSelectorColumns;
479-
constexpr std::size_t LookupSelectorColumns = ParametersPolicy::LookupSelectorColumns;
478+
const std::size_t ComponentConstantColumns = column_sizes[2];
479+
const std::size_t LookupConstantColumns = column_sizes[3];
480+
const std::size_t ComponentSelectorColumns = column_sizes[4];
481+
const std::size_t LookupSelectorColumns = column_sizes[5];
480482

481-
constexpr std::size_t WitnessColumns = ParametersPolicy::WitnessColumns;
482-
constexpr std::size_t PublicInputColumns = ParametersPolicy::PublicInputColumns;
483-
constexpr std::size_t ConstantColumns = ComponentConstantColumns + LookupConstantColumns;
484-
constexpr std::size_t SelectorColumns = ComponentSelectorColumns + LookupSelectorColumns;
483+
const std::size_t WitnessColumns = column_sizes[0];
484+
const std::size_t PublicInputColumns = column_sizes[1];
485+
486+
const std::size_t ConstantColumns = ComponentConstantColumns + LookupConstantColumns;
487+
const std::size_t SelectorColumns = ComponentSelectorColumns + LookupSelectorColumns;
485488

486489
zk::snark::plonk_table_description<BlueprintFieldType> desc(
487490
WitnessColumns, PublicInputColumns, ConstantColumns, SelectorColumns);
491+
488492
using ConstraintSystemType = zk::snark::plonk_constraint_system<BlueprintFieldType>;
489493
using ConstraintSystemProxyType = zk::snark::plonk_table<BlueprintFieldType, zk::snark::plonk_column<BlueprintFieldType>>;
490494
using ArithmetizationType =
@@ -683,8 +687,10 @@ int main(int argc, char *argv[]) {
683687
("policy", boost::program_options::value<std::string>(), "Policy for creating circuits. Possible values: default")
684688
("generate-type", boost::program_options::value<std::string>(), "Define generated output. Possible values: circuit, assignment, circuit-assignment, public-input-column, size_estimation(does not generate anything, just evaluates circuit size). Default value is circuit-assignment")
685689
("max-num-provers", boost::program_options::value<int>(), "Maximum number of provers. Possible values >= 1")
686-
("max-lookup-rows", boost::program_options::value<int>(), "Maximum number of provers. Possible values >= 1")
687-
("target-prover", boost::program_options::value<int>(), "Assignment table and circuit will be generated only for defined prover. Possible values [0, max-num-provers)");
690+
("max-lookup-rows", boost::program_options::value<int>(), "Maximum number of lookup rows")
691+
("target-prover", boost::program_options::value<int>(), "Assignment table and circuit will be generated only for defined prover. Possible values [0, max-num-provers)")
692+
("column-sizes", boost::program_options::value<std::vector<std::size_t>>()->multitoken(), "Column sizes, 6 values: WitnessColumns, PublicInputColumns, ComponentConstantColumns, LookupConstantColumns, ComponentSelectorColumns, LookupSelectorColumns")
693+
;
688694
// clang-format on
689695

690696

@@ -911,6 +917,24 @@ int main(int argc, char *argv[]) {
911917
"Or use \"-f hex\", hex output format is also supported now\n"
912918
);
913919

920+
const std::size_t column_sizes_size = 6;
921+
std::array<std::size_t, column_sizes_size> column_sizes = {
922+
ParametersPolicy::WitnessColumns,
923+
ParametersPolicy::PublicInputColumns,
924+
ParametersPolicy::ComponentConstantColumns,
925+
ParametersPolicy::LookupConstantColumns,
926+
ParametersPolicy::ComponentSelectorColumns,
927+
ParametersPolicy::LookupSelectorColumns
928+
};
929+
930+
if (vm.count("column-sizes")) {
931+
std::vector<std::size_t> column_sizes_vector = vm["column-sizes"].as<std::vector<std::size_t>>();
932+
ASSERT_MSG(column_sizes_vector.size() == column_sizes_size, ("Column sizes amount must be exactly " + std::to_string(column_sizes_size) + ", but it is " + std::to_string(column_sizes_vector.size())).c_str());
933+
for (std::size_t i = 0; i < column_sizes_size; i++) {
934+
column_sizes[i] = column_sizes_vector[i];
935+
}
936+
}
937+
914938
switch (curve_options[elliptic_curve]) {
915939
case 0: {
916940
return curve_dependent_main<typename algebra::curves::pallas::base_field_type>(
@@ -928,7 +952,9 @@ int main(int argc, char *argv[]) {
928952
max_num_provers,
929953
max_lookup_rows,
930954
target_prover,
931-
circuit_output_print_format);
955+
circuit_output_print_format,
956+
column_sizes
957+
);
932958
break;
933959
}
934960
case 1: {
@@ -955,7 +981,9 @@ int main(int argc, char *argv[]) {
955981
max_num_provers,
956982
max_lookup_rows,
957983
target_prover,
958-
circuit_output_print_format);
984+
circuit_output_print_format,
985+
column_sizes
986+
);
959987
break;
960988
}
961989
};

0 commit comments

Comments
 (0)