14#ifndef dealii_matrix_free_task_info_h
15#define dealii_matrix_free_task_info_h
77 cell(
const std::pair<unsigned int, unsigned int> &cell_range) = 0;
82 cell(
const unsigned int range_index) = 0;
87 face(
const unsigned int range_index) = 0;
97 namespace MatrixFreeFunctions
187 const std::vector<unsigned int> &cells_with_comm,
188 const unsigned int dofs_per_cell,
189 const bool categories_are_hp,
190 const std::vector<unsigned int> &cell_vectorization_categories,
191 const bool cell_vectorization_categories_strict,
192 const std::vector<unsigned int> &parent_relation,
193 std::vector<unsigned int> &renumbering,
194 std::vector<unsigned char> &incompletely_filled_vectorization);
215 const std::vector<unsigned int> &boundary_cells,
216 std::vector<unsigned int> &renumbering,
217 std::vector<unsigned char> &incompletely_filled_vectorization);
257 std::vector<unsigned int> &renumbering,
258 std::vector<unsigned char> &irregular_cells,
295 const std::vector<unsigned int> &cell_active_fe_index,
297 std::vector<unsigned int> &renumbering,
298 std::vector<unsigned char> &irregular_cells,
327 std::vector<unsigned int> &renumbering,
328 std::vector<unsigned char> &irregular_cells,
337 const std::vector<unsigned char> &irregular_cells,
348 const unsigned int partition,
349 const std::vector<unsigned int> &cell_partition,
350 const std::vector<unsigned int> &partition_list,
351 const std::vector<unsigned int> &partition_size,
352 std::vector<unsigned int> &partition_color_list);
361 const std::vector<unsigned int> &cell_active_fe_index,
362 const unsigned int partition,
363 const unsigned int cluster_size,
365 const std::vector<unsigned int> &cell_partition,
366 const std::vector<unsigned int> &partition_list,
367 const std::vector<unsigned int> &partition_size,
368 std::vector<unsigned int> &partition_partition_list,
369 std::vector<unsigned char> &irregular_cells);
393 const unsigned int cluster_size,
394 std::vector<unsigned int> &cell_partition,
395 std::vector<unsigned int> &partition_list,
396 std::vector<unsigned int> &partition_size,
397 unsigned int &partition)
const;
422 template <
typename StreamType>
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
virtual void face(const unsigned int range_index)=0
virtual void zero_dst_vector_range(const unsigned int range_index)=0
virtual void cell(const std::pair< unsigned int, unsigned int > &cell_range)=0
virtual void boundary(const unsigned int range_index)=0
virtual void vector_compress_start()=0
Starts the communication for the vector compress operation.
virtual void cell(const unsigned int range_index)=0
virtual void cell_loop_post_range(const unsigned int range_index)=0
virtual void vector_update_ghosts_start()=0
Starts the communication for the update ghost values operation.
virtual ~MFWorkerInterface()=default
virtual void cell_loop_pre_range(const unsigned int range_index)=0
virtual void vector_update_ghosts_finish()=0
Finishes the communication for the update ghost values operation.
virtual void vector_compress_finish()=0
Finishes the communication for the vector compress operation.
std::vector< unsigned int > face_partition_data_hp_ptr
unsigned int n_ghost_cells
std::size_t memory_consumption() const
std::vector< unsigned int > boundary_partition_data_hp
std::vector< unsigned int > boundary_partition_data
void loop(MFWorkerInterface &worker) const
std::vector< unsigned char > task_at_mpi_boundary
std::vector< unsigned int > face_partition_data_hp
void make_thread_graph_partition_color(DynamicSparsityPattern &connectivity, std::vector< unsigned int > &renumbering, std::vector< unsigned char > &irregular_cells, const bool hp_bool)
std::vector< unsigned int > refinement_edge_face_partition_data
std::vector< unsigned int > partition_n_workers
unsigned int vectorization_length
void create_blocks_serial(const std::vector< unsigned int > &cells_with_comm, const unsigned int dofs_per_cell, const bool categories_are_hp, const std::vector< unsigned int > &cell_vectorization_categories, const bool cell_vectorization_categories_strict, const std::vector< unsigned int > &parent_relation, std::vector< unsigned int > &renumbering, std::vector< unsigned char > &incompletely_filled_vectorization)
void make_connectivity_cells_to_blocks(const std::vector< unsigned char > &irregular_cells, const DynamicSparsityPattern &connectivity_cells, DynamicSparsityPattern &connectivity_blocks) const
void make_partitioning_within_partitions_post_blocked(const DynamicSparsityPattern &connectivity, const std::vector< unsigned int > &cell_active_fe_index, const unsigned int partition, const unsigned int cluster_size, const bool hp_bool, const std::vector< unsigned int > &cell_partition, const std::vector< unsigned int > &partition_list, const std::vector< unsigned int > &partition_size, std::vector< unsigned int > &partition_partition_list, std::vector< unsigned char > &irregular_cells)
unsigned int n_active_cells
void initial_setup_blocks_tasks(const std::vector< unsigned int > &boundary_cells, std::vector< unsigned int > &renumbering, std::vector< unsigned char > &incompletely_filled_vectorization)
void print_memory_statistics(StreamType &out, std::size_t data_length) const
void make_coloring_within_partitions_pre_blocked(const DynamicSparsityPattern &connectivity, const unsigned int partition, const std::vector< unsigned int > &cell_partition, const std::vector< unsigned int > &partition_list, const std::vector< unsigned int > &partition_size, std::vector< unsigned int > &partition_color_list)
std::vector< unsigned int > partition_row_index
void make_thread_graph_partition_partition(const std::vector< unsigned int > &cell_active_fe_index, DynamicSparsityPattern &connectivity, std::vector< unsigned int > &renumbering, std::vector< unsigned char > &irregular_cells, const bool hp_bool)
std::vector< unsigned int > partition_evens
void make_thread_graph(const std::vector< unsigned int > &cell_active_fe_index, DynamicSparsityPattern &connectivity, std::vector< unsigned int > &renumbering, std::vector< unsigned char > &irregular_cells, const bool hp_bool)
unsigned int n_blocked_workers
bool allow_ghosted_vectors_in_loops
std::vector< unsigned int > partition_n_blocked_workers
std::vector< unsigned int > cell_partition_data_hp
std::vector< unsigned int > cell_partition_data_hp_ptr
std::vector< unsigned int > cell_partition_data
void make_partitioning(const DynamicSparsityPattern &connectivity, const unsigned int cluster_size, std::vector< unsigned int > &cell_partition, std::vector< unsigned int > &partition_list, std::vector< unsigned int > &partition_size, unsigned int &partition) const
void update_task_info(const unsigned int partition)
void make_boundary_cells_divisible(std::vector< unsigned int > &boundary_cells)
TasksParallelScheme scheme
std::vector< unsigned int > ghost_face_partition_data
void guess_block_size(const unsigned int dofs_per_cell)
std::vector< unsigned int > boundary_partition_data_hp_ptr
std::vector< unsigned int > partition_odds
std::vector< unsigned int > face_partition_data