47 #define max(a,b) ((a)>(b)) ? (b):(a)
51 #define MATRIX_AROWS 10
52 #define MATRIX_ACOLUMNS 20
53 #define MATRIX_BCOLUMNS 10
62 int main(
int argc,
char *argv[]){
75 #ifdef OPTIMIZE_PRODUCT
76 double *datas[3] = { C.data, A.data, B.data };
77 int rowSizes[3] ={ C.origAcumCard[1],A.origAcumCard[1],B.origAcumCard[1] };
78 # ifdef OPTIMIZE_LOOPS
80 for (i=0; i<loopLimits[0]; i++) {
81 for (j=0; j<loopLimits[1]; j++) {
82 for (k=0; k<loopLimits[2]; k++) {
94 #ifdef OPTIMIZE_PRODUCT
95 datas[0][i*rowSizes[0]+j] =
96 datas[0][i*rowSizes[0]+j] + datas[1][i*rowSizes[1]+k] * datas[2][k*rowSizes[2]+j] ;
110 HitTile_double tileA, HitTile_double tileB, HitTile_double tileC,
118 #if defined(READ_AB) || defined(WRITE_AB)
119 HitTile_double realTileA, realTileB;
149 for (i=0; i<
m; i++) {
150 for (j=0; j<p; j++) {
164 #ifdef WRITE_TILE_FILES
189 HitTile_double
A,
B,
C;
195 #define LAYOUT_BALANCED
196 #ifdef LAYOUT_BALANCED
209 HitTile_double 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)