#include "redist.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <ctype.h>
Go to the source code of this file.
Data Types |
| struct | dcomplex |
| struct | MDESC |
| struct | IDESC |
Defines |
| #define | static2 static |
| #define | fortran_mr2d pzgemr2do |
| #define | fortran_mr2dnew pzgemr2d |
| #define | zcopy_ zcopy |
| #define | zlacpy_ zlacpy |
| #define | Clacpy Czgelacpy |
| #define | BLOCK_CYCLIC_2D 1 |
| #define | SHIFT(row, sprow, nbrow) ((row)-(sprow)+ ((row) >= (sprow) ? 0 : (nbrow))) |
| #define | max(A, B) ((A)>(B)?(A):(B)) |
| #define | min(A, B) ((A)>(B)?(B):(A)) |
| #define | DIVUP(a, b) ( ((a)-1) /(b)+1) |
| #define | ROUNDUP(a, b) (DIVUP(a,b)*(b)) |
| #define | scanD0 zgescanD0 |
| #define | dispmat zgedispmat |
| #define | setmemory zgesetmemory |
| #define | freememory zgefreememory |
| #define | scan_intervals zgescan_intervals |
| #define | SENDBUFF 0 |
| #define | RECVBUFF 1 |
| #define | SIZEBUFF 2 |
| #define | NDEBUG |
Functions/Subroutines |
| void | Clacpy () |
| void | Cblacs_pcoord () |
| int | Cblacs_pnum () |
| void | Csetpvmtids () |
| void | Cblacs_get () |
| void | Cblacs_pinfo () |
| void | Cblacs_gridinfo () |
| void | Cblacs_gridinit () |
| void | Cblacs_exit () |
| void | Cblacs_gridexit () |
| void | Cblacs_setup () |
| void | Cigebs2d () |
| void | Cigebr2d () |
| void | Cigesd2d () |
| void | Cigerv2d () |
| void | Cigsum2d () |
| void | Cigamn2d () |
| void | Cigamx2d () |
| void | Czgesd2d () |
| void | Czgerv2d () |
| void | zlacpy_ () |
| int | localindice () |
| void * | mr2d_malloc () |
| int | ppcm () |
| int | localsize () |
| int | memoryblocksize () |
| int | changeorigin () |
| void | paramcheck () |
| void | scanD0 () |
| void | dispmat () |
| void | setmemory () |
| void | freememory () |
| int | scan_intervals () |
| void | Cpzgemr2do () |
| void | Cpzgemr2d () |
| void | setmemory (dcomplex **adpointer, int blocksize) |
| void | freememory (dcomplex *ptrtobefreed) |
| int | scan_intervals (char type, int ja, int jb, int n, MDESC *ma, MDESC *mb, int q0, int q1, int col0, int col1, IDESC *result) |
Define Documentation
| #define BLOCK_CYCLIC_2D 1 |
| #define dispmat zgedispmat |
| #define DIVUP |
( |
|
a, |
|
|
|
b |
|
) |
| ( ((a)-1) /(b)+1) |
| #define fortran_mr2d pzgemr2do |
| #define fortran_mr2dnew pzgemr2d |
| #define freememory zgefreememory |
| #define max |
( |
|
A, |
|
|
|
B |
|
) |
| ((A)>(B)?(A):(B)) |
| #define min |
( |
|
A, |
|
|
|
B |
|
) |
| ((A)>(B)?(B):(A)) |
| #define ROUNDUP |
( |
|
a, |
|
|
|
b |
|
) |
| (DIVUP(a,b)*(b)) |
| #define scan_intervals zgescan_intervals |
| #define setmemory zgesetmemory |
| #define SHIFT |
( |
|
row, |
|
|
|
sprow, |
|
|
|
nbrow |
|
) |
| ((row)-(sprow)+ ((row) >= (sprow) ? 0 : (nbrow))) |
Function/Subroutine Documentation
| void freememory |
( |
dcomplex * |
ptrtobefreed | ) |
|
Definition at line 131 of file pzgemr2.c.
{
if (ptrtobefreed == NULL)
return;
free((char *) ptrtobefreed);
}
| int scan_intervals |
( |
char |
type, |
|
|
int |
ja, |
|
|
int |
jb, |
|
|
int |
n, |
|
|
MDESC * |
ma, |
|
|
MDESC * |
mb, |
|
|
int |
q0, |
|
|
int |
q1, |
|
|
int |
col0, |
|
|
int |
col1, |
|
|
IDESC * |
result |
|
) |
| |
Definition at line 144 of file pzgemr2.c.
{
int offset, j0, j1, templatewidth0, templatewidth1, nbcol0, nbcol1;
int l;
assert(type == 'c' || type == 'r');
nbcol0 = (type == 'c' ? ma->nbcol : ma->nbrow);
nbcol1 = (type == 'c' ? mb->nbcol : mb->nbrow);
templatewidth0 = q0 * nbcol0;
templatewidth1 = q1 * nbcol1;
{
int sp0 = (type == 'c' ? ma->spcol : ma->sprow);
int sp1 = (type == 'c' ? mb->spcol : mb->sprow);
j0 = SHIFT(col0, sp0, q0) * nbcol0 - ja;
j1 = SHIFT(col1, sp1, q1) * nbcol1 - jb;
}
offset = 0;
l = 0;
assert(j0 + nbcol0 > 0);
assert(j1 + nbcol1 > 0);
while ((j0 < n) && (j1 < n)) {
int end0, end1;
int start, end;
end0 = j0 + nbcol0;
end1 = j1 + nbcol1;
if (end0 <= j1) {
j0 += templatewidth0;
l += nbcol0;
continue;
}
if (end1 <= j0) {
j1 += templatewidth1;
continue;
}
start = max(j0, j1);
start = max(start, 0);
result[offset].lstart = l + start - j0;
end = min(end0, end1);
if (end0 == end) {
j0 += templatewidth0;
l += nbcol0;
}
if (end1 == end)
j1 += templatewidth1;
end = min(end, n);
assert(end > start);
result[offset].len = end - start;
offset += 1;
}
return offset;
}
| void setmemory |
( |
dcomplex ** |
adpointer, |
|
|
int |
blocksize |
|
) |
| |