2#include "barretenberg/common/mem.hpp"
3#include "barretenberg/common/thread.hpp"
4#include "barretenberg/ecc/curves/bn254/g1.hpp"
7namespace barretenberg::scalar_multiplication {
9inline size_t point_table_size(
size_t num_points)
11 const size_t num_threads = get_num_cpus_pow2();
12 const size_t prefetch_overflow = 16 * num_threads;
14 return 2 * num_points + prefetch_overflow;
17inline size_t point_table_buf_size(
size_t num_points)
20 return sizeof(g1::affine_element) * point_table_size(num_points);
23template <
typename T>
inline std::shared_ptr<T[]> point_table_alloc(
size_t num_points)
25 return std::static_pointer_cast<T[]>(
get_mem_slab(point_table_buf_size(num_points)));
std::shared_ptr< void > get_mem_slab(size_t size)
Definition: slab_allocator.cpp:214