|
ScaLAPACK 2.1
2.1
ScaLAPACK: Scalable Linear Algebra PACKage
|
Go to the documentation of this file.
5 #if (INTFACE == C_CALL)
6 void Cdgamx2d(
int ConTxt,
char *scope,
char *top,
int m,
int n,
double *A,
7 int lda,
int *rA,
int *cA,
int ldia,
int rdest,
int cdest)
10 double *A,
int *lda,
int *rA,
int *cA,
int *ldia,
11 int *rdest,
int *cdest)
83 void BI_ArgCheck(
int,
int,
char *,
char,
char,
char,
int,
int,
int,
int,
101 void BI_dMPI_amx(
void *,
void *,
int *, MPI_Datatype *);
102 void BI_dMPI_amx2(
void *,
void *,
int *, MPI_Datatype *);
110 int i, j, N, dest, idist, length, tlda, tldia, trdest, ierr;
113 MPI_Datatype dtypes[2];
130 if (ttop ==
' ') ttop = DefCombTop;
132 if (
Mpval(cdest) == -1) trdest = -1;
133 else trdest =
Mpval(rdest);
134 #if (BlacsDebugLvl > 0)
139 if (
Mpval(ldia) != -1)
141 "LDIA too small (LDIA=%d, but M=%d)",
Mpval(ldia),
146 else tlda =
Mpval(m);
148 else tldia =
Mpval(ldia);
153 if (trdest == -1) dest = -1;
154 else dest =
Mpval(cdest);
162 if (trdest == -1) dest = -1;
182 if (
Mpval(ldia) != -1)
185 length = N *
sizeof(double);
194 if (
sizeof(
double) > j) j =
sizeof(
double);
196 if (i) length += j - i;
206 if (dest == -1) mydist = ctxt->
scp->
Iam;
209 for (i=0; i < N; i++) dist[i] = mydist;
217 dtypes[0] = MPI_DOUBLE;
219 #ifdef ZeroByteTypeBug
224 ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
225 ierr=MPI_Type_commit(&MyType);
228 #ifdef ZeroByteTypeBug
240 length = N *
sizeof(double);
247 bp->
Buff = (
char *) A;
265 if (
Mpval(ldia) == -1)
277 ierr=MPI_Reduce(bp->
Buff, bp2->
Buff, bp->
N, bp->
dtype, BlacComb, dest,
279 if (ctxt->
scp->
Iam == dest)
282 if (
Mpval(ldia) != -1)
285 trdest,
Mpval(cdest));
290 ierr=MPI_Allreduce(bp->
Buff, bp2->
Buff, bp->
N, bp->
dtype, BlacComb,
293 if (
Mpval(ldia) != -1)
296 trdest,
Mpval(cdest));
298 ierr=MPI_Op_free(&BlacComb);
299 if (
Mpval(ldia) != -1)
300 #ifdef ZeroByteTypeBug
328 BI_TreeComb(ctxt, bp, bp2, N, vvop, dest, ttop-47);
350 if (
Mpval(ldia) != -1)
351 #ifdef ZeroByteTypeBug
358 if ( (ctxt->
scp->
Iam == dest) || (dest == -1) )
365 if (
Mpval(ldia) != -1)
367 dist, trdest,
Mpval(cdest));
void BI_TransDist(BLACSCONTEXT *ctxt, char scope, int m, int n, int *rA, int *cA, int ldrc, BI_DistType *dist, int rdest, int cdest)
BLACBUFF * BI_Pack(BLACSCONTEXT *ctxt, BVOID *A, BLACBUFF *bp, MPI_Datatype Dtype)
void BI_BeComb(BLACSCONTEXT *ctxt, BLACBUFF *bp, BLACBUFF *bp2, int N, VVFUNPTR Xvvop)
BLACBUFF * BI_GetBuff(int length)
void BI_dvvamx(int N, char *vec1, char *vec2)
void BI_dMPI_amx2(void *in, void *inout, int *N, MPI_Datatype *dtype)
void BI_Unpack(BLACSCONTEXT *ctxt, BVOID *A, BLACBUFF *bp, MPI_Datatype Dtype)
F_VOID_FUNC dgamx2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n, double *A, int *lda, int *rA, int *cA, int *ldia, int *rdest, int *cdest)
#define MGetConTxt(Context, ctxtptr)
void(* VVFUNPTR)(int, char *, char *)
void BI_MringComb(BLACSCONTEXT *ctxt, BLACBUFF *bp, BLACBUFF *bp2, int N, VVFUNPTR Xvvop, int dest, int nrings)
void BI_dvmcopy(int m, int n, double *A, int lda, double *buff)
void BI_TreeComb(BLACSCONTEXT *ctxt, BLACBUFF *bp, BLACBUFF *bp2, int N, VVFUNPTR Xvvop, int dest, int nbranches)
MPI_Datatype BI_GetMpiGeType(BLACSCONTEXT *ctxt, int m, int n, int lda, MPI_Datatype Dtype, int *N)
void BI_dMPI_amx(void *in, void *inout, int *N, MPI_Datatype *dtype)
void BI_dvvamx2(int N, char *vec1, char *vec2)
void BI_BlacsErr(int ConTxt, int line, char *file, char *form,...)
void BI_BlacsWarn(int ConTxt, int line, char *file, char *form,...)
void BI_ArgCheck(int ConTxt, int RoutType, char *routine, char scope, char uplo, char diag, int m, int n, int lda, int nprocs, int *prows, int *pcols)
#define BI_MPI_TYPE_FREE(t)
#define Mvkpnum(ctxt, prow, pcol)
void BI_UpdateBuffs(BLACBUFF *Newbp)
int BI_BuffIsFree(BLACBUFF *bp, int Wait)
void BI_dmvcopy(int m, int n, double *A, int lda, double *buff)