(git:34ef472)
dbm_multiply_comm.h
Go to the documentation of this file.
1 /*----------------------------------------------------------------------------*/
2 /* CP2K: A general program to perform molecular dynamics simulations */
3 /* Copyright 2000-2024 CP2K developers group <https://cp2k.org> */
4 /* */
5 /* SPDX-License-Identifier: BSD-3-Clause */
6 /*----------------------------------------------------------------------------*/
7 
8 #ifndef DBM_MULTIPLY_COMM_H
9 #define DBM_MULTIPLY_COMM_H
10 
11 #include "dbm_distribution.h"
12 #include "dbm_matrix.h"
13 #include "dbm_multiply_internal.h"
14 
15 #include <stdbool.h>
16 
17 /*******************************************************************************
18  * \brief Internal struct for storing a packed matrix.
19  * \author Ole Schuett
20  ******************************************************************************/
21 typedef struct {
27  int max_nblocks; // Max across all ranks in dist_ticks.
30 
31 /*******************************************************************************
32  * \brief Internal struct for storing a communication iterator.
33  * \author Ole Schuett
34  ******************************************************************************/
35 typedef struct {
36  int nticks;
37  int itick;
42 
43 /*******************************************************************************
44  * \brief Internal routine for creating a communication iterator.
45  * \author Ole Schuett
46  ******************************************************************************/
48  const bool transb,
49  const dbm_matrix_t *matrix_a,
50  const dbm_matrix_t *matrix_b,
51  const dbm_matrix_t *matrix_c);
52 
53 /*******************************************************************************
54  * \brief Internal routine for retriving next pair of packs from given iterator.
55  * \author Ole Schuett
56  ******************************************************************************/
58  dbm_pack_t **pack_b);
59 
60 /*******************************************************************************
61  * \brief Internal routine for releasing the given communication iterator.
62  * \author Ole Schuett
63  ******************************************************************************/
65 
66 #endif
67 
68 // EOF
dbm_comm_iterator_t * dbm_comm_iterator_start(const bool transa, const bool transb, const dbm_matrix_t *matrix_a, const dbm_matrix_t *matrix_b, const dbm_matrix_t *matrix_c)
Internal routine for creating a communication iterator.
void dbm_comm_iterator_stop(dbm_comm_iterator_t *iter)
Internal routine for releasing the given communication iterator.
bool dbm_comm_iterator_next(dbm_comm_iterator_t *iter, dbm_pack_t **pack_a, dbm_pack_t **pack_b)
Internal routine for retriving next pair of packs from given iterator.
Internal struct for storing a communication iterator.
dbm_packed_matrix_t packed_a
dbm_distribution_t * dist
dbm_packed_matrix_t packed_b
Internal struct for storing a one dimensional distribution.
Internal struct for storing a two dimensional distribution.
Internal struct for storing a matrix.
Definition: dbm_matrix.h:20
Internal struct for storing a pack - essentially a shard for MPI.
Internal struct for storing a packed matrix.
const dbm_dist_1d_t * dist_ticks
const dbm_dist_1d_t * dist_indices