50 #define MATRIX_AROWS 10
51 #define MATRIX_ACOLUMNS 20
52 #define MATRIX_BCOLUMNS 10
61 int main(
int argc,
char *argv[]){
74 #ifdef OPTIMIZE_PRODUCT
75 int *datas[3] = { C.data, A.data, B.data };
76 int rowSizes[3] ={ C.origAcumCard[1],A.origAcumCard[1],B.origAcumCard[1] };
77 # ifdef OPTIMIZE_LOOPS
79 for (i=0; i<loopLimits[0]; i++) {
80 for (j=0; j<loopLimits[1]; j++) {
81 for (k=0; k<loopLimits[2]; k++) {
93 #ifdef OPTIMIZE_PRODUCT
94 datas[0][i*rowSizes[0]+j] =
95 datas[0][i*rowSizes[0]+j] + datas[1][i*rowSizes[1]+k] * datas[2][k*rowSizes[2]+j] ;
109 HitTile_int tileA, HitTile_int tileB, HitTile_int tileC,
118 #if defined(READ_AB) || defined(WRITE_AB)
119 HitTile_int realTileA, realTileB;
149 for (i=0; i<
m; i++) {
150 for (j=0; j<p; j++) {
164 #ifdef WRITE_TILE_FILES
195 #define LAYOUT_BALANCED
196 #ifdef LAYOUT_BALANCED
209 HitTile_int tileA, tileB, tileC, copyTileA, copyTileB;
220 HitCom commRow, commColumn;
238 for (loopIndex = 0; loopIndex < loopLimit-1; loopIndex++) {
void hit_patternEndAsync(HitPattern pattern)
#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_tileClone(newVar, oldVar)
#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_tileUpdateToAncestor(shadow)
#define hit_layDimBegin(lay, dim)
#define hit_comShiftDimAsync(lay, dim, shift, tileSend, tileRecv, baseType, tag)
#define hit_tileSelectNoBoundary(newVar, oldVar, shape)
void hit_patternStartAsync(HitPattern pattern)
#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_clockReduce(lay, c)
#define hit_clockStart(c)