boojum-cuda 0.151.0

Boojum-CUDA is a library implementing GPU-accelerated cryptographic functionality for the zkSync prover
use std::collections::HashMap;
use lazy_static::lazy_static;

lazy_static! {
    static ref HASH_MAP: HashMap<&'static str, u32> = [
        ("boolean_constrait_evaluator", 0),
        ("conditional_swap_gate_constraint_evaluator_1", 1),
        ("conditional_swap_gate_constraint_evaluator_4", 2),
        ("constant_allocator_constraint_evaluator", 3),
        ("dot_product_constraint_evaluator_4", 4),
        ("fma_gate_in_base_without_constant_constraint_evaluator", 5),
        ("fma_gate_in_extension_without_constant_constraint_evaluator_goldilocks_field_goldilocks_ext_2", 6),
        ("matrix_multiplication_evaluator_goldilocks_field_12_poseidon_2_goldilocks_external_matrix", 7),
        ("matrix_multiplication_evaluator_goldilocks_field_12_poseidon_2_goldilocks_inner_matrix", 8),
        ("parallel_selection_gate_constraint_evaluator_4", 9),
        ("poseidon_2_round_function_flattened_evaluator_goldilocks_field_8_12_4_poseidon_2_goldilocks_1451e131831047e6", 10),
        ("poseidon_2_round_function_flattened_evaluator_goldilocks_field_8_12_4_poseidon_2_goldilocks_0ebd1f683a24cfac", 11),
        ("quadratic_combination_constraint_evaluator_4", 12),
        ("reduction_by_powers_gate_constraint_evaluator_4", 13),
        ("reduction_gate_constraint_evaluator_4", 14),
        ("selection_gate_constraint_evaluator", 15),
        ("simple_nonlinearity_gate_constraint_evaluator_7", 16),
        ("u_32_add_constraint_evaluator", 17),
        ("u_8_x_4_constraint_evaluator", 18),
        ("u_32_sub_constraint_evaluator", 19),
        ("u_32_tri_add_carry_as_chunk_constraint_evaluator", 20),
        ("u_int_x_add_constraint_evaluator", 21),
        ("zero_check_evaluator_68a914128e01e473", 22),
        ("zero_check_evaluator_44bc103b1f8540ed", 23),
    ]
    .iter()
    .copied()
    .collect();
}

gate_eval_kernel!(evaluate_boolean_constrait_evaluator_kernel);
gate_eval_kernel!(evaluate_conditional_swap_gate_constraint_evaluator_1_kernel);
gate_eval_kernel!(evaluate_conditional_swap_gate_constraint_evaluator_4_kernel);
gate_eval_kernel!(evaluate_constant_allocator_constraint_evaluator_kernel);
gate_eval_kernel!(evaluate_dot_product_constraint_evaluator_4_kernel);
gate_eval_kernel!(evaluate_fma_gate_in_base_without_constant_constraint_evaluator_kernel);
gate_eval_kernel!(evaluate_fma_gate_in_extension_without_constant_constraint_evaluator_goldilocks_field_goldilocks_ext_2_kernel);
gate_eval_kernel!(evaluate_matrix_multiplication_evaluator_goldilocks_field_12_poseidon_2_goldilocks_external_matrix_kernel);
gate_eval_kernel!(evaluate_matrix_multiplication_evaluator_goldilocks_field_12_poseidon_2_goldilocks_inner_matrix_kernel);
gate_eval_kernel!(evaluate_parallel_selection_gate_constraint_evaluator_4_kernel);
gate_eval_kernel!(evaluate_poseidon_2_round_function_flattened_evaluator_goldilocks_field_8_12_4_poseidon_2_goldilocks_1451e131831047e6_kernel);
gate_eval_kernel!(evaluate_poseidon_2_round_function_flattened_evaluator_goldilocks_field_8_12_4_poseidon_2_goldilocks_0ebd1f683a24cfac_kernel);
gate_eval_kernel!(evaluate_quadratic_combination_constraint_evaluator_4_kernel);
gate_eval_kernel!(evaluate_reduction_by_powers_gate_constraint_evaluator_4_kernel);
gate_eval_kernel!(evaluate_reduction_gate_constraint_evaluator_4_kernel);
gate_eval_kernel!(evaluate_selection_gate_constraint_evaluator_kernel);
gate_eval_kernel!(evaluate_simple_nonlinearity_gate_constraint_evaluator_7_kernel);
gate_eval_kernel!(evaluate_u_32_add_constraint_evaluator_kernel);
gate_eval_kernel!(evaluate_u_8_x_4_constraint_evaluator_kernel);
gate_eval_kernel!(evaluate_u_32_sub_constraint_evaluator_kernel);
gate_eval_kernel!(evaluate_u_32_tri_add_carry_as_chunk_constraint_evaluator_kernel);
gate_eval_kernel!(evaluate_u_int_x_add_constraint_evaluator_kernel);
gate_eval_kernel!(evaluate_zero_check_evaluator_68a914128e01e473_kernel);
gate_eval_kernel!(evaluate_zero_check_evaluator_44bc103b1f8540ed_kernel);

fn get_gate_data(id: u32) -> GateData {
    match id {
        0 => GateData {
            name: "boolean_constrait_evaluator",
            contributions_count: 1,
            max_variable_index: Some(0),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_boolean_constrait_evaluator_kernel,
        },
        1 => GateData {
            name: "conditional_swap_gate_constraint_evaluator_1",
            contributions_count: 2,
            max_variable_index: Some(4),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_conditional_swap_gate_constraint_evaluator_1_kernel,
        },
        2 => GateData {
            name: "conditional_swap_gate_constraint_evaluator_4",
            contributions_count: 8,
            max_variable_index: Some(16),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_conditional_swap_gate_constraint_evaluator_4_kernel,
        },
        3 => GateData {
            name: "constant_allocator_constraint_evaluator",
            contributions_count: 1,
            max_variable_index: Some(0),
            max_witness_index: None,
            max_constant_index: Some(0),
            kernel: evaluate_constant_allocator_constraint_evaluator_kernel,
        },
        4 => GateData {
            name: "dot_product_constraint_evaluator_4",
            contributions_count: 1,
            max_variable_index: Some(8),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_dot_product_constraint_evaluator_4_kernel,
        },
        5 => GateData {
            name: "fma_gate_in_base_without_constant_constraint_evaluator",
            contributions_count: 1,
            max_variable_index: Some(3),
            max_witness_index: None,
            max_constant_index: Some(1),
            kernel: evaluate_fma_gate_in_base_without_constant_constraint_evaluator_kernel,
        },
        6 => GateData {
            name: "fma_gate_in_extension_without_constant_constraint_evaluator_goldilocks_field_goldilocks_ext_2",
            contributions_count: 2,
            max_variable_index: Some(7),
            max_witness_index: None,
            max_constant_index: Some(3),
            kernel: evaluate_fma_gate_in_extension_without_constant_constraint_evaluator_goldilocks_field_goldilocks_ext_2_kernel,
        },
        7 => GateData {
            name: "matrix_multiplication_evaluator_goldilocks_field_12_poseidon_2_goldilocks_external_matrix",
            contributions_count: 12,
            max_variable_index: Some(23),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_matrix_multiplication_evaluator_goldilocks_field_12_poseidon_2_goldilocks_external_matrix_kernel,
        },
        8 => GateData {
            name: "matrix_multiplication_evaluator_goldilocks_field_12_poseidon_2_goldilocks_inner_matrix",
            contributions_count: 12,
            max_variable_index: Some(23),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_matrix_multiplication_evaluator_goldilocks_field_12_poseidon_2_goldilocks_inner_matrix_kernel,
        },
        9 => GateData {
            name: "parallel_selection_gate_constraint_evaluator_4",
            contributions_count: 4,
            max_variable_index: Some(12),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_parallel_selection_gate_constraint_evaluator_4_kernel,
        },
        10 => GateData {
            name: "poseidon_2_round_function_flattened_evaluator_goldilocks_field_8_12_4_poseidon_2_goldilocks_1451e131831047e6",
            contributions_count: 118,
            max_variable_index: Some(129),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_poseidon_2_round_function_flattened_evaluator_goldilocks_field_8_12_4_poseidon_2_goldilocks_1451e131831047e6_kernel,
        },
        11 => GateData {
            name: "poseidon_2_round_function_flattened_evaluator_goldilocks_field_8_12_4_poseidon_2_goldilocks_0ebd1f683a24cfac",
            contributions_count: 118,
            max_variable_index: Some(99),
            max_witness_index: Some(29),
            max_constant_index: None,
            kernel: evaluate_poseidon_2_round_function_flattened_evaluator_goldilocks_field_8_12_4_poseidon_2_goldilocks_0ebd1f683a24cfac_kernel,
        },
        12 => GateData {
            name: "quadratic_combination_constraint_evaluator_4",
            contributions_count: 1,
            max_variable_index: Some(7),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_quadratic_combination_constraint_evaluator_4_kernel,
        },
        13 => GateData {
            name: "reduction_by_powers_gate_constraint_evaluator_4",
            contributions_count: 1,
            max_variable_index: Some(4),
            max_witness_index: None,
            max_constant_index: Some(0),
            kernel: evaluate_reduction_by_powers_gate_constraint_evaluator_4_kernel,
        },
        14 => GateData {
            name: "reduction_gate_constraint_evaluator_4",
            contributions_count: 1,
            max_variable_index: Some(4),
            max_witness_index: None,
            max_constant_index: Some(3),
            kernel: evaluate_reduction_gate_constraint_evaluator_4_kernel,
        },
        15 => GateData {
            name: "selection_gate_constraint_evaluator",
            contributions_count: 1,
            max_variable_index: Some(3),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_selection_gate_constraint_evaluator_kernel,
        },
        16 => GateData {
            name: "simple_nonlinearity_gate_constraint_evaluator_7",
            contributions_count: 1,
            max_variable_index: Some(1),
            max_witness_index: None,
            max_constant_index: Some(0),
            kernel: evaluate_simple_nonlinearity_gate_constraint_evaluator_7_kernel,
        },
        17 => GateData {
            name: "u_32_add_constraint_evaluator",
            contributions_count: 2,
            max_variable_index: Some(4),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_u_32_add_constraint_evaluator_kernel,
        },
        18 => GateData {
            name: "u_8_x_4_constraint_evaluator",
            contributions_count: 2,
            max_variable_index: Some(25),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_u_8_x_4_constraint_evaluator_kernel,
        },
        19 => GateData {
            name: "u_32_sub_constraint_evaluator",
            contributions_count: 2,
            max_variable_index: Some(4),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_u_32_sub_constraint_evaluator_kernel,
        },
        20 => GateData {
            name: "u_32_tri_add_carry_as_chunk_constraint_evaluator",
            contributions_count: 1,
            max_variable_index: Some(16),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_u_32_tri_add_carry_as_chunk_constraint_evaluator_kernel,
        },
        21 => GateData {
            name: "u_int_x_add_constraint_evaluator",
            contributions_count: 2,
            max_variable_index: Some(4),
            max_witness_index: None,
            max_constant_index: Some(0),
            kernel: evaluate_u_int_x_add_constraint_evaluator_kernel,
        },
        22 => GateData {
            name: "zero_check_evaluator_68a914128e01e473",
            contributions_count: 2,
            max_variable_index: Some(2),
            max_witness_index: None,
            max_constant_index: None,
            kernel: evaluate_zero_check_evaluator_68a914128e01e473_kernel,
        },
        23 => GateData {
            name: "zero_check_evaluator_44bc103b1f8540ed",
            contributions_count: 2,
            max_variable_index: Some(1),
            max_witness_index: Some(0),
            max_constant_index: None,
            kernel: evaluate_zero_check_evaluator_44bc103b1f8540ed_kernel,
        },
        _ => panic!("unknown gate id {id}"),
    }
}