1
/* $Id: matmul.h,v 1.15.4.1 2006-12-22 13:05:22 manoj Exp $ */
15
# define dgemm_ sgemm_
16
# define zgemm_ cgemm_
25
extern void FATR DGEMM(char*,int, char*,int, Integer*, Integer*, Integer*,
26
void*, void*, Integer*, void*, Integer*, void*,
28
extern void FATR ZGEMM(char*,int, char*,int, Integer*, Integer*, Integer*,
29
DoubleComplex*, DoubleComplex*, Integer*,DoubleComplex*,
30
Integer*, DoubleComplex*, DoubleComplex*, Integer*);
31
extern void FATR CGEMM(char*,int, char*,int, Integer*, Integer*, Integer*,
32
SingleComplex*, SingleComplex*, Integer*,SingleComplex*,
33
Integer*, SingleComplex*, SingleComplex*, Integer*);
35
# define DGEMM dgemm__
36
# define ZGEMM zgemm__
37
# define CGEMM cgemm__
38
#elif defined(HITACHI)
44
#if defined(CRAY) || defined(WIN32)
45
# define cptofcd(fcd) _cptofcd((fcd),1)
47
# define cptofcd(fcd) (fcd)
50
/* min acceptable amount of memory (in elements) and default chunk size */
52
# define CHUNK_SIZE 256
53
# define MAX_CHUNKS 1024
54
# define BLOCK_SIZE 1024 /* temp buf size for pinning */
55
# define GA_ASPECT_RATIO 3
57
# define MINTASKS 10 /* increase this if there is high load imbalance */
60
#define MIN_CHUNK_SIZE 256
65
static int _gai_matmul_patch_flag = 0;
66
Integer gNbhdlA[2], gNbhdlB[2], gNbhdlC[2];/* for A and B matrix */
68
int lo[2]; /* 2 elements: ilo and klo */
75
extern void FATR ga_nbget_(Integer *g_a, Integer *ilo, Integer *ihi,
76
Integer *jlo, Integer *jhi, Void *buf,
77
Integer *ld, Integer *nbhdl);
79
extern logical ngai_patch_intersect(Integer *lo, Integer *hi,
80
Integer *lop, Integer *hip, Integer ndim);
82
#define VECTORCHECK(rank,dims,dim1,dim2, ilo, ihi, jlo, jhi) \
83
if(rank>2) ga_error("rank is greater than 2",rank); \
84
else if(rank==2) {dim1=dims[0]; dim2=dims[1];} \
85
else if(rank==1) {if((ihi-ilo)>0) { dim1=dims[0]; dim2=1;} \
86
else { dim1=1; dim2=dims[0];}} \
87
else ga_error("rank must be atleast 1",rank);
89
#define WAIT_GET_BLOCK(nbhdl) ga_nbwait_(nbhdl)
91
#endif /* _MATMUL_H_ */