barretenberg
Loading...
Searching...
No Matches
work_queue.hpp
1#pragma once
2
3#include "barretenberg/plonk/proof_system/proving_key/proving_key.hpp"
4#include "barretenberg/plonk/transcript/transcript_wrappers.hpp"
5
6namespace proof_system::plonk {
7
8using namespace barretenberg;
9
10// TODO(Cody): Template by flavor?
12
13 public:
14 enum WorkType { FFT, SMALL_FFT, IFFT, SCALAR_MULTIPLICATION };
15
17 uint32_t num_scalar_multiplications;
18 uint32_t num_ffts;
19 uint32_t num_iffts;
20 };
21
22 struct work_item {
23 WorkType work_type;
24 mutable std::shared_ptr<fr[]> mul_scalars;
25 std::string tag;
26 barretenberg::fr constant;
27 const size_t index;
28 };
29
31 std::shared_ptr<fr[]> data;
32 barretenberg::fr shift_factor;
33 };
34
35 work_queue(proving_key* prover_key = nullptr, transcript::StandardTranscript* prover_transcript = nullptr);
36
37 work_queue(const work_queue& other) = default;
38 work_queue(work_queue&& other) = default;
39 work_queue& operator=(const work_queue& other) = default;
40 work_queue& operator=(work_queue&& other) = default;
41
42 work_item_info get_queued_work_item_info() const;
43
44 std::shared_ptr<fr[]> get_scalar_multiplication_data(const size_t work_item_number) const;
45
46 size_t get_scalar_multiplication_size(const size_t work_item_number) const;
47
48 std::shared_ptr<fr[]> get_ifft_data(const size_t work_item_number) const;
49
50 void put_ifft_data(std::shared_ptr<fr[]> result, const size_t work_item_number);
51
52 queued_fft_inputs get_fft_data(const size_t work_item_number) const;
53
54 void put_fft_data(std::shared_ptr<fr[]> result, const size_t work_item_number);
55
56 void put_scalar_multiplication_data(const barretenberg::g1::affine_element result, const size_t work_item_number);
57
58 void flush_queue();
59
60 void add_to_queue(const work_item& item);
61
62 void process_queue();
63
64 std::vector<work_item> get_queue() const;
65
66 private:
67 proving_key* key;
69 std::vector<work_item> work_item_queue;
70};
71} // namespace proof_system::plonk
Definition: affine_element.hpp:11
Definition: work_queue.hpp:11
Definition: transcript_wrappers.hpp:13
constexpr_utils defines some helper methods that perform some stl-equivalent operations but in a cons...
Definition: constexpr_utils.hpp:16
Definition: widget.bench.cpp:13
Definition: proving_key.hpp:38
Definition: work_queue.hpp:22