49 #define MATRIX_AROWS 10
50 #define MATRIX_ACOLUMNS 20
51 #define MATRIX_BCOLUMNS 10
60 int main(
int argc,
char *argv[]){
73 #ifdef OPTIMIZE_PRODUCT
74 double *datas[3] = { C.data, A.data, B.data };
75 int rowSizes[3] ={ C.origAcumCard[1],A.origAcumCard[1],B.origAcumCard[1] };
76 # ifdef OPTIMIZE_LOOPS
78 for (i=0; i<loopLimits[0]; i++) {
79 for (j=0; j<loopLimits[1]; j++) {
80 for (k=0; k<loopLimits[2]; k++) {
92 #ifdef OPTIMIZE_PRODUCT
93 datas[0][i*rowSizes[0]+j] =
94 datas[0][i*rowSizes[0]+j] + datas[1][i*rowSizes[1]+k] * datas[2][k*rowSizes[2]+j] ;
108 HitTile_double tileA, HitTile_double tileB, HitTile_double tileC,
116 #if defined(READ_AB) || defined(WRITE_AB)
117 HitTile_double realTileA, realTileB;
147 for (i=0; i<
m; i++) {
148 for (j=0; j<p; j++) {
162 #ifdef WRITE_TILE_FILES
187 HitTile_double
A,
B,
C;
193 #define LAYOUT_BALANCED
194 #ifdef LAYOUT_BALANCED
207 HitTile_double tileA, tileB, tileC;
217 HitCom commRow, commColumn;
235 for (loopIndex = 0; loopIndex < loopLimit-1; loopIndex++) {
#define hit_layShape(lay)
#define hit_comTagSet(...)
#define hit_tileNewType(baseType)
#define hit_tileFileWrite(var, file, coord)
#define hit_clockSynchronizeAll()
#define hit_tileFill(var, value)
void initMatrices(int m, int p, HitTile_double tileA, HitTile_double tileB, HitTile_double tileC, HitLayout layA, HitLayout layB)
void hit_comFree(HitCom issue)
void hit_comDo(HitCom *issue)
HitShape hit_layMaxShape(HitLayout lay)
#define hit_clockContinue(c)
#define hit_tileAlloc(var)
#define hit_topology(name,...)
#define hit_laySelfRanksDim(lay, dim)
#define hit_tileSelect(newVar, oldVar, shape)
#define HIT_PAT_UNORDERED
void hit_patternAdd(HitPattern *pattern, HitCom comm)
#define hit_clockPrintMax(c)
#define hit_tileDimCard(var, dim)
#define hit_tileFileRead(var, file, coord)
#define hit_clockReset(c)
#define hit_tileTextFileWrite(var, file, coord, datatype, s1, s2)
void hit_topFree(HitTopology topo)
void hit_layWrapNeighbors(HitLayout *lay)
void hit_patternFree(HitPattern *pattern)
void hit_comInit(int *pargc, char **pargv[])
#define hit_tileTextFileRead(var, file, coord, datatype, s1, s2)
void cannonsMM(int n, int m, int p)
#define hit_comShiftDim(lay, dim, shift, tileP, baseType)
#define hit_tileDomain(newVarP, baseType, numDims,...)
#define hit_tileElemAtNoStride(var, ndims,...)
void hit_layFree(HitLayout lay)
int main(int argc, char *argv[])
#define hit_layDimEnd(lay, dim)
#define hit_tileSelectArrayCoords(newVar, oldVar, shape)
void matrixBlockProduct(HitTile_double A, HitTile_double B, HitTile_double C)
#define hit_tileElemAtArrayCoords(var, ndims,...)
#define hit_layDimBegin(lay, dim)
#define hit_tileSelectNoBoundary(newVar, oldVar, shape)
#define hit_layout(name, topo,...)
#define hit_layForDimDomain(lay, dim, index)
int numActives[HIT_MAXDIMS]
#define hit_tileFree(var)
#define hit_tileShape(var)
#define hit_patternDo(pattern)
#define hit_clockReduce(lay, c)
#define hit_clockStart(c)