(git:0de0cc2)
dbm_distribution.c File Reference
#include <assert.h>
#include <math.h>
#include <omp.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include "dbm_distribution.h"
#include "dbm_hyperparams.h"

Go to the source code of this file.

Functions

static void dbm_dist_1d_new (dbm_dist_1d_t *dist, const int length, const int coords[length], const dbm_mpi_comm_t comm, const int nshards)
 Private routine for creating a new one dimensional distribution. More...
 
static void dbm_dist_1d_free (dbm_dist_1d_t *dist)
 Private routine for releasing a one dimensional distribution. More...
 
static int imax (int x, int y)
 Returns the larger of two given integer (missing from the C standard) More...
 
static int find_best_nrow_shards (const int nshards, const int nrows, const int ncols)
 Private routine for finding the optimal number of shard rows. More...
 
void dbm_distribution_new (dbm_distribution_t **dist_out, const int fortran_comm, const int nrows, const int ncols, const int row_dist[nrows], const int col_dist[ncols])
 Creates a new two dimensional distribution. More...
 
void dbm_distribution_hold (dbm_distribution_t *dist)
 Increases the reference counter of the given distribution. More...
 
void dbm_distribution_release (dbm_distribution_t *dist)
 Decreases the reference counter of the given distribution. More...
 
void dbm_distribution_row_dist (const dbm_distribution_t *dist, int *nrows, const int **row_dist)
 Returns the rows of the given distribution. More...
 
void dbm_distribution_col_dist (const dbm_distribution_t *dist, int *ncols, const int **col_dist)
 Returns the columns of the given distribution. More...
 
int dbm_distribution_stored_coords (const dbm_distribution_t *dist, const int row, const int col)
 Returns the MPI rank on which the given block should be stored. More...
 

Function Documentation

◆ dbm_dist_1d_new()

static void dbm_dist_1d_new ( dbm_dist_1d_t dist,
const int  length,
const int  coords[length],
const dbm_mpi_comm_t  comm,
const int  nshards 
)
static

Private routine for creating a new one dimensional distribution.

Author
Ole Schuett

Definition at line 23 of file dbm_distribution.c.

◆ dbm_dist_1d_free()

static void dbm_dist_1d_free ( dbm_dist_1d_t dist)
static

Private routine for releasing a one dimensional distribution.

Author
Ole Schuett

Definition at line 63 of file dbm_distribution.c.

◆ imax()

static int imax ( int  x,
int  y 
)
inlinestatic

Returns the larger of two given integer (missing from the C standard)

Author
Ole Schuett

Definition at line 73 of file dbm_distribution.c.

Here is the caller graph for this function:

◆ find_best_nrow_shards()

static int find_best_nrow_shards ( const int  nshards,
const int  nrows,
const int  ncols 
)
static

Private routine for finding the optimal number of shard rows.

Author
Ole Schuett

Definition at line 79 of file dbm_distribution.c.

Here is the call graph for this function:

◆ dbm_distribution_new()

void dbm_distribution_new ( dbm_distribution_t **  dist_out,
const int  fortran_comm,
const int  nrows,
const int  ncols,
const int  row_dist[nrows],
const int  col_dist[ncols] 
)

Creates a new two dimensional distribution.

Author
Ole Schuett

Definition at line 103 of file dbm_distribution.c.

Here is the caller graph for this function:

◆ dbm_distribution_hold()

void dbm_distribution_hold ( dbm_distribution_t dist)

Increases the reference counter of the given distribution.

Author
Ole Schuett

Definition at line 136 of file dbm_distribution.c.

Here is the caller graph for this function:

◆ dbm_distribution_release()

void dbm_distribution_release ( dbm_distribution_t dist)

Decreases the reference counter of the given distribution.

Author
Ole Schuett

Definition at line 145 of file dbm_distribution.c.

Here is the caller graph for this function:

◆ dbm_distribution_row_dist()

void dbm_distribution_row_dist ( const dbm_distribution_t dist,
int *  nrows,
const int **  row_dist 
)

Returns the rows of the given distribution.

Author
Ole Schuett

Definition at line 159 of file dbm_distribution.c.

Here is the caller graph for this function:

◆ dbm_distribution_col_dist()

void dbm_distribution_col_dist ( const dbm_distribution_t dist,
int *  ncols,
const int **  col_dist 
)

Returns the columns of the given distribution.

Author
Ole Schuett

Definition at line 170 of file dbm_distribution.c.

Here is the caller graph for this function:

◆ dbm_distribution_stored_coords()

int dbm_distribution_stored_coords ( const dbm_distribution_t dist,
const int  row,
const int  col 
)

Returns the MPI rank on which the given block should be stored.

Author
Ole Schuett

Definition at line 181 of file dbm_distribution.c.

Here is the caller graph for this function: