StarNEig Library  version v0.1-beta.4
A task-based library for solving nonsymmetric eigenvalue problems
distr_matrix.h File Reference

This file contains data types and functions for distributed matrices. More...

#include <starneig/configuration.h>
#include <stddef.h>

Go to the source code of this file.

Data Structures

struct  starneig_distr_block
 Distributed block. More...
 

Functions

Query functions
void starneig_distr_matrix_get_blocks (starneig_distr_matrix_t matrix, struct starneig_distr_block **blocks, int *num_blocks)
 Returns the locally owned distributed blocks. More...
 
starneig_distr_t starneig_distr_matrix_get_distr (starneig_distr_matrix_t matrix)
 Returns the distribution that is associated with a distributed matrix. More...
 
starneig_datatype_t starneig_distr_matrix_get_datatype (starneig_distr_matrix_t matrix)
 Returns the matrix element data type. More...
 
size_t starneig_distr_matrix_get_elemsize (starneig_distr_matrix_t matrix)
 Returns the matrix element size. More...
 
int starneig_distr_matrix_get_rows (starneig_distr_matrix_t matrix)
 Returns the number of (global) rows. More...
 
int starneig_distr_matrix_get_cols (starneig_distr_matrix_t matrix)
 Returns the number of (global) columns. More...
 
int starneig_distr_matrix_get_row_blksz (starneig_distr_matrix_t matrix)
 Returns the number of rows in a distribution block. More...
 
int starneig_distr_matrix_get_col_blksz (starneig_distr_matrix_t matrix)
 Returns the number of columns in a distribution block. More...
 
Helpers
void starneig_broadcast (int root, size_t size, void *buffer)
 Broadcast a buffer. More...
 

Data distributions

enum  starneig_distr_order_t { STARNEIG_ORDER_DEFAULT, STARNEIG_ORDER_ROW_MAJOR, STARNEIG_ORDER_COL_MAJOR }
 Process mapping order. More...
 
typedef struct starneig_distr * starneig_distr_t
 Data distribution.
 
starneig_distr_t starneig_distr_init ()
 Creates a default data distribution. More...
 
starneig_distr_t starneig_distr_init_mesh (int rows, int cols, starneig_distr_order_t order)
 Creates a two-dimensional block cyclic data distribution. More...
 
starneig_distr_t starneig_distr_init_func (int(*func)(int row, int col, void *arg), void *arg, size_t arg_size)
 Creates a distribution using a data distribution function. More...
 
starneig_distr_t starneig_distr_duplicate (starneig_distr_t distr)
 Duplicates a data distribution. More...
 
void starneig_distr_destroy (starneig_distr_t distr)
 Destroys a data distribution. More...
 

Distributed matrices

enum  starneig_datatype_t { STARNEIG_REAL_DOUBLE }
 Distributed matrix element data type. More...
 
typedef struct starneig_distr_matrix * starneig_distr_matrix_t
 Distributed matrix.
 
starneig_distr_matrix_t starneig_distr_matrix_create (int rows, int cols, int row_blksz, int col_blksz, starneig_datatype_t type, starneig_distr_t distr)
 Creates a distributed matrix with uninitialized matrix elements. More...
 
starneig_distr_matrix_t starneig_distr_matrix_create_local (int rows, int cols, starneig_datatype_t type, int owner, double *A, int ldA)
 Creates a single-owner distributed matrix from a local matrix. More...
 
void starneig_distr_matrix_destroy (starneig_distr_matrix_t matrix)
 Destroys a distributed matrix. More...
 
void starneig_distr_matrix_copy (starneig_distr_matrix_t source, starneig_distr_matrix_t dest)
 Copies the contents of a distributed matrix to a second distributed matrix. More...
 
void starneig_distr_matrix_copy_region (int sr, int sc, int dr, int dc, int rows, int cols, starneig_distr_matrix_t source, starneig_distr_matrix_t dest)
 Copies region of a distributed matrix to a second distributed matrix. More...
 

Detailed Description

This file contains data types and functions for distributed matrices.

Author
Mirko Myllykoski (mirko.nosp@m.m@cs.nosp@m..umu..nosp@m.se), Umeå University
Lars Karlsson (larsk.nosp@m.@cs..nosp@m.umu.s.nosp@m.e), Umeå University

LICENSE

Copyright (c) 2019, Umeå Universitet

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.