# HG changeset patch # User Sean Halle # Date 1396098138 25200 # Node ID 96deb7b4502e7d85530bd3fb41bafcb659cd3d6d # Parent 1b61e0c0051280facec352b947aadd210144671d working, k=4 diff -r 1b61e0c00512 -r 96deb7b4502e PR_defs__turn_on_and_off.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PR_defs__turn_on_and_off.h Sat Mar 29 06:02:18 2014 -0700 @@ -0,0 +1,90 @@ +/* + * Copyright 2009 OpenSourceResearchInstitute.org + * Licensed under GNU General Public License version 2 + * + * Author: seanhalle@yahoo.com + * + */ + +#ifndef _PR_DEFS_TURN_ON_AND_OFF_H +#define _PR_DEFS_TURN_ON_AND_OFF_H +#define _GNU_SOURCE + + + + +//====================== Turn Debug things on and off ===================== +/*When DEBUG__TURN_ON_SEQUENTIAL_MODE is defined, PR does sequential exe in the main thread + * It still does co-routines and all the mechanisms are the same, it just + * has only a single thread and animates Slvs one at a time + */ +//#define DEBUG__TURN_ON_SEQUENTIAL_MODE + //check for sequential mode and redefine num cores to be 1 so that lang + // code doesn't have to do special #ifdef for sequential mode +#ifdef DEBUG__TURN_ON_SEQUENTIAL_MODE + #ifdef NUM_CORES + #undef NUM_CORES + #endif + #define NUM_CORES 1 +#endif + +/*turns on the probe-instrumentation in the application -- when not + * defined, the calls to the probe functions turn into comments + */ +//#define DEBUG__TURN_ON_DEBUG_PRINT + +/*These defines turn types of bug messages on and off + */ +#define dbgAppFlow TRUE /* Top level flow of application code -- general*/ +#define dbgProbes FALSE /* for issues inside probes themselves*/ +#define dbgMaster FALSE /* obsolete*/ +#define dbgRqstHdlr TRUE /* in request handler code*/ +#define dbgSS FALSE /* in request handler code*/ +#define dbgInfra FALSE /* in request handler code*/ + +//#define DEBUG__TURN_ON_ERROR_MSGS + +//================== Turn Probe Things on and off ==================== +/*Probes are used in the application as a cheap, convenient, and fast way + * to collect statistics. Define this to enable them, else the probe + * statements in the application code all turn into empty whitespace + * in the pre-processor + */ +//#define PROBES__TURN_ON_STATS_PROBES + +/*When PROBES__TURN_ON_STATS_PROBES is defined, turn on one of these to choose + * what kind of measurement the probes store + */ +//#define PROBES__USE_TSC_PROBES +#define PROBES__USE_TIME_OF_DAY_PROBES +//#define PROBES__USE_PERF_CTR_PROBES + + +//============== Turn Internal Measurement Things on and off =============== + +//#define MEAS__TURN_ON_SUSP_MEAS +//#define MEAS__TURN_ON_MASTER_MEAS +//#define MEAS__TURN_ON_MASTER_LOCK_MEAS +//#define MEAS__TURN_ON_MALLOC_MEAS +//#define MEAS__TURN_ON_PLUGIN_MEAS +//#define MEAS__TURN_ON_SYSTEM_MEAS + /*turn on/off subtraction of create measurements from plugin meas*/ +//#define MEAS__TURN_ON_EXCLUDE_CREATION_TIME + + +//#define HOLISTIC__TURN_ON_PERF_COUNTERS +//#define HOLISTIC__TURN_ON_OBSERVE_UCC +//#define HOLISTIC__TURN_ON_DETECT_CONSTRAINT_GRAPH + +//=================== Turn on or off system options ======================= +// +/*Defining SYS__TURN_ON_WORK_STEALING causes the core controller behavior + * to change. When it detects too many back-to-back masters, then it + * searches the other core controllers, looking for work it can steal from + * them. + */ +//#define SYS__TURN_ON_WORK_STEALING + +//=========================================================================== +#endif /* */ + diff -r 1b61e0c00512 -r 96deb7b4502e Reo__Matrix_Mult/Circuit.c --- a/Reo__Matrix_Mult/Circuit.c Wed Feb 19 09:27:10 2014 -0800 +++ b/Reo__Matrix_Mult/Circuit.c Sat Mar 29 06:02:18 2014 -0700 @@ -6,12 +6,12 @@ VReoCircuit *create_circuit(SlaveVP *animVP) { /* Declare variables. */ - VReoCircuit *circuit; - VReoBridge *bridge, *bridges, **boundaryBridges; - VReoIsland *islands, *island; + VReoCircuit *circuit; + VReoBridge *bridge, *bridges, **boundaryBridges; + VReoIsland *islands, *island; VReoO1island *o1islands, *o1island; VReoCheckerFn *bridgeReaderCheckerFns, *bridgeWriterCheckerFns; - VReoDoerFn *bridgeReaderDoerFns, *bridgeWriterDoerFns; + VReoDoerFn *bridgeReaderDoerFns, *bridgeWriterDoerFns; PrivQueueStruc *offerQ0, *offerQ1; VReoPartnerQStruct *partnerQStruct0, *partnerQStruct1; @@ -29,8 +29,6 @@ bridge = &(bridges[CKT_BRIDGE_Broad_0]); bridge->buffer = NULL; bridge->bridgeIsFull = FALSE; - bridge->writerType = None; - bridge->readerType = None; bridge->waitingReaderVP = NULL; bridge->waitingWriterVP = NULL; bridge->readerPartnerQStruct = NULL; @@ -54,6 +52,24 @@ bridge->readerPartnerQStruct = NULL; bridge->writerPartnerQStruct = NULL; + /* Initialize bridge In_2. */ + bridge = &(bridges[CKT_BRIDGE_In_2]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge In_3. */ + bridge = &(bridges[CKT_BRIDGE_In_3]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + /* Initialize bridge Out_0. */ bridge = &(bridges[CKT_BRIDGE_Out_0]); bridge->buffer = NULL; @@ -75,8 +91,7 @@ /* Initialize bridge FIFO0. */ bridge = &(bridges[CKT_BRIDGE_FIFO0]); bridge->buffer = NULL; - bridge->bridgeIsFull = FALSE; - bridge->waitingReaderVP = NULL; + bridge->bridgeIsFull = FALSE;bridge->waitingReaderVP = NULL; bridge->waitingWriterVP = NULL; bridge->readerPartnerQStruct = NULL; bridge->writerPartnerQStruct = NULL; @@ -93,8 +108,7 @@ /* Initialize bridge FIFO2. */ bridge = &(bridges[CKT_BRIDGE_FIFO2]); bridge->buffer = NULL; - bridge->bridgeIsFull = FALSE; - bridge->waitingReaderVP = NULL; + bridge->bridgeIsFull = FALSE;bridge->waitingReaderVP = NULL; bridge->waitingWriterVP = NULL; bridge->readerPartnerQStruct = NULL; bridge->writerPartnerQStruct = NULL; @@ -108,13 +122,49 @@ bridge->readerPartnerQStruct = NULL; bridge->writerPartnerQStruct = NULL; + /* Initialize bridge FIFO4. */ + bridge = &(bridges[CKT_BRIDGE_FIFO4]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE;bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO5. */ + bridge = &(bridges[CKT_BRIDGE_FIFO5]); + bridge->buffer = malloc(1); + bridge->bridgeIsFull = TRUE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO6. */ + bridge = &(bridges[CKT_BRIDGE_FIFO6]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE;bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO7. */ + bridge = &(bridges[CKT_BRIDGE_FIFO7]); + bridge->buffer = malloc(1); + bridge->bridgeIsFull = TRUE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + /* Initialize boundary bridges. */ boundaryBridges = PR_WL__malloc(NUM_BOUNDARY_BRIDGES * sizeof(VReoBridge*)); boundaryBridges[0] = &(bridges[CKT_BRIDGE_Broad_0]); boundaryBridges[1] = &(bridges[CKT_BRIDGE_In_0]); boundaryBridges[2] = &(bridges[CKT_BRIDGE_In_1]); - boundaryBridges[3] = &(bridges[CKT_BRIDGE_Out_0]); - boundaryBridges[4] = &(bridges[CKT_BRIDGE_Out_1]); + boundaryBridges[3] = &(bridges[CKT_BRIDGE_In_2]); + boundaryBridges[4] = &(bridges[CKT_BRIDGE_In_3]); + boundaryBridges[5] = &(bridges[CKT_BRIDGE_Out_0]); + boundaryBridges[6] = &(bridges[CKT_BRIDGE_Out_1]); // // INITIALIZE ISLANDS @@ -124,7 +174,7 @@ island = &(islands[CKT_I0]); island->numCheckerFns = 1; - island->numBridges = 4; + island->numBridges = 6; island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); island->checkerFns[0] = &Checker_0__I0; @@ -136,7 +186,9 @@ island->bridges[I0_BRIDGE_Broad_0] = &(bridges[CKT_BRIDGE_Broad_0]); island->bridges[I0_BRIDGE_Broad_0Output1] = &(bridges[CKT_BRIDGE_Broad_0Output1]); island->bridges[I0_BRIDGE_Broad_0Output2] = &(bridges[CKT_BRIDGE_Broad_0Output2]); + island->bridges[I0_BRIDGE_Broad_0Output3] = &(bridges[CKT_BRIDGE_Broad_0Output3]); island->bridges[I0_BRIDGE_Out_1] = &(bridges[CKT_BRIDGE_Out_1]); + island->bridges[I0_BRIDGE_Broad_0Output4] = &(bridges[CKT_BRIDGE_Broad_0Output4]); /* * Initialize Island 0: register Island 0 as a reader on @@ -144,8 +196,8 @@ */ bridgeReaderCheckerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0 * sizeof(VReoCheckerFn *) ); bridgeReaderDoerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0 * sizeof(VReoDoerFn *) ); - bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I0; - bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER3_I0; + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I0; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER2_I0; bridge = &(bridges[CKT_BRIDGE_Broad_0]); bridge->reader = &(islands[CKT_I0]); @@ -160,8 +212,8 @@ */ bridgeWriterCheckerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output1 * sizeof(VReoCheckerFn *) ); bridgeWriterDoerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output1 * sizeof(VReoDoerFn *) ); - bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I0; - bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER3_I0; + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I0; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I0; bridge = &(bridges[CKT_BRIDGE_Broad_0Output1]); bridge->writer = &(islands[CKT_I0]); @@ -176,8 +228,8 @@ */ bridgeWriterCheckerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output2 * sizeof(VReoCheckerFn *) ); bridgeWriterDoerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output2 * sizeof(VReoDoerFn *) ); - bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I0; - bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER3_I0; + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I0; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I0; bridge = &(bridges[CKT_BRIDGE_Broad_0Output2]); bridge->writer = &(islands[CKT_I0]); @@ -188,12 +240,28 @@ /* * Initialize Island 0: register Island 0 as a writer on + * bridge Broad_0Output3. + */ + bridgeWriterCheckerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output3 * sizeof(VReoCheckerFn *) ); + bridgeWriterDoerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output3 * sizeof(VReoDoerFn *) ); + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I0; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I0; + + bridge = &(bridges[CKT_BRIDGE_Broad_0Output3]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output3; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* + * Initialize Island 0: register Island 0 as a writer on * bridge Out_1. */ bridgeWriterCheckerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Out_1 * sizeof(VReoCheckerFn *) ); bridgeWriterDoerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Out_1 * sizeof(VReoDoerFn *) ); - bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I0; - bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER3_I0; + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I0; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I0; bridge = &(bridges[CKT_BRIDGE_Out_1]); bridge->writer = &(islands[CKT_I0]); @@ -202,6 +270,22 @@ bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + /* + * Initialize Island 0: register Island 0 as a writer on + * bridge Broad_0Output4. + */ + bridgeWriterCheckerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output4 * sizeof(VReoCheckerFn *) ); + bridgeWriterDoerFns = PR_WL__malloc( NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output4 * sizeof(VReoDoerFn *) ); + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I0; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I0; + + bridge = &(bridges[CKT_BRIDGE_Broad_0Output4]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output4; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + /* Initialize Island 1. */ island = &(islands[CKT_I1]); @@ -332,11 +416,143 @@ bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + /* Initialize Island 3. */ + island = &(islands[CKT_I3]); + + island->numCheckerFns = 1; + island->numBridges = 3; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I3; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I3; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + island->bridges[I3_BRIDGE_In_2] = &(bridges[CKT_BRIDGE_In_2]); + island->bridges[I3_BRIDGE_X_2Input0] = &(bridges[CKT_BRIDGE_X_2Input0]); + island->bridges[I3_BRIDGE_In_2Output0] = &(bridges[CKT_BRIDGE_In_2Output0]); + + /* + * Initialize Island 3: register Island 3 as a reader on + * bridge In_2. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I3_CHECKERS_INVOLVE_BRIDGE_In_2 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I3_CHECKERS_INVOLVE_BRIDGE_In_2 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I3; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER2_I3; + + bridge = &(bridges[CKT_BRIDGE_In_2]); + bridge->reader = &(islands[CKT_I3]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I3_CHECKERS_INVOLVE_BRIDGE_In_2; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 3: register Island 3 as a reader on + * bridge X_2Input0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I3_CHECKERS_INVOLVE_BRIDGE_X_2Input0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I3_CHECKERS_INVOLVE_BRIDGE_X_2Input0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I3; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER2_I3; + + bridge = &(bridges[CKT_BRIDGE_X_2Input0]); + bridge->reader = &(islands[CKT_I3]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I3_CHECKERS_INVOLVE_BRIDGE_X_2Input0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 3: register Island 3 as a writer on + * bridge In_2Output0. + */ + bridgeWriterCheckerFns = PR_WL__malloc( NUM_I3_CHECKERS_INVOLVE_BRIDGE_In_2Output0 * sizeof(VReoCheckerFn *) ); + bridgeWriterDoerFns = PR_WL__malloc( NUM_I3_CHECKERS_INVOLVE_BRIDGE_In_2Output0 * sizeof(VReoDoerFn *) ); + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I3; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I3; + + bridge = &(bridges[CKT_BRIDGE_In_2Output0]); + bridge->writer = &(islands[CKT_I3]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I3_CHECKERS_INVOLVE_BRIDGE_In_2Output0; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* Initialize Island 4. */ + island = &(islands[CKT_I4]); + + island->numCheckerFns = 1; + island->numBridges = 3; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I4; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I4; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + island->bridges[I4_BRIDGE_In_3] = &(bridges[CKT_BRIDGE_In_3]); + island->bridges[I4_BRIDGE_X_3Input0] = &(bridges[CKT_BRIDGE_X_3Input0]); + island->bridges[I4_BRIDGE_In_3Output0] = &(bridges[CKT_BRIDGE_In_3Output0]); + + /* + * Initialize Island 4: register Island 4 as a reader on + * bridge In_3. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I4_CHECKERS_INVOLVE_BRIDGE_In_3 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I4_CHECKERS_INVOLVE_BRIDGE_In_3 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I4; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER3_I4; + + bridge = &(bridges[CKT_BRIDGE_In_3]); + bridge->reader = &(islands[CKT_I4]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I4_CHECKERS_INVOLVE_BRIDGE_In_3; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 4: register Island 4 as a reader on + * bridge X_3Input0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I4_CHECKERS_INVOLVE_BRIDGE_X_3Input0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I4_CHECKERS_INVOLVE_BRIDGE_X_3Input0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I4; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER3_I4; + + bridge = &(bridges[CKT_BRIDGE_X_3Input0]); + bridge->reader = &(islands[CKT_I4]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I4_CHECKERS_INVOLVE_BRIDGE_X_3Input0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 4: register Island 4 as a writer on + * bridge In_3Output0. + */ + bridgeWriterCheckerFns = PR_WL__malloc( NUM_I4_CHECKERS_INVOLVE_BRIDGE_In_3Output0 * sizeof(VReoCheckerFn *) ); + bridgeWriterDoerFns = PR_WL__malloc( NUM_I4_CHECKERS_INVOLVE_BRIDGE_In_3Output0 * sizeof(VReoDoerFn *) ); + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I4; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER3_I4; + + bridge = &(bridges[CKT_BRIDGE_In_3Output0]); + bridge->writer = &(islands[CKT_I4]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I4_CHECKERS_INVOLVE_BRIDGE_In_3Output0; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + /* Initialize O1Island 0. */ o1island = &(o1islands[CKT_O1I0]); - o1island->numBridges = 3; + o1island->numBridges = 5; o1island->bridges = PR_WL__malloc(o1island->numBridges * sizeof(VReoBridge *)); + o1island->bridges[O1I0_BRIDGE_Out_0Input3] = &(bridges[CKT_BRIDGE_Out_0Input3]); + o1island->bridges[O1I0_BRIDGE_Out_0Input2] = &(bridges[CKT_BRIDGE_Out_0Input2]); o1island->bridges[O1I0_BRIDGE_Out_0Input1] = &(bridges[CKT_BRIDGE_Out_0Input1]); o1island->bridges[O1I0_BRIDGE_Out_0Input0] = &(bridges[CKT_BRIDGE_Out_0Input0]); o1island->bridges[O1I0_BRIDGE_Out_0] = &(bridges[CKT_BRIDGE_Out_0]); @@ -364,6 +580,26 @@ /* * Initialize O1Island 0: register O1Island 0 as a reader on + * bridge Out_0Input3. + */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input3]); + bridge->reader = &(o1island); + bridge->readerType = O1island; + bridge->readerPartnerQStruct = partnerQStruct0; + bridge->readerOfferQ = offerQ0; + + /* + * Initialize O1Island 0: register O1Island 0 as a reader on + * bridge Out_0Input2. + */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input2]); + bridge->reader = &(o1island); + bridge->readerType = O1island; + bridge->readerPartnerQStruct = partnerQStruct0; + bridge->readerOfferQ = offerQ0; + + /* + * Initialize O1Island 0: register O1Island 0 as a reader on * bridge Out_0Input1. */ bridge = &(bridges[CKT_BRIDGE_Out_0Input1]); @@ -397,6 +633,16 @@ // /* Assumption: (writerType != NULL) implies (writerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input3]); + if (bridge->writerType != None && bridge->bridgeIsFull) + writePrivQ( bridge, bridge->readerOfferQ ); + + /* Assumption: (writerType != NULL) implies (writerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input2]); + if (bridge->writerType != None && bridge->bridgeIsFull) + writePrivQ( bridge, bridge->readerOfferQ ); + + /* Assumption: (writerType != NULL) implies (writerType != VP) */ bridge = &(bridges[CKT_BRIDGE_Out_0Input1]); if (bridge->writerType != None && bridge->bridgeIsFull) writePrivQ( bridge, bridge->readerOfferQ ); @@ -432,6 +678,7 @@ void create_VPs_w_init_and_connect( VReoCircuit *circuit, void **initDatums, SlaveVP *animVP) { + /* Declare variables. */ VReoBridge **boundaryBridges, *bridges, **bridgesForVP; SlaveVP **VPs; @@ -446,16 +693,16 @@ /* Allocate memory for VPs. */ VPs = PR_WL__malloc(NUM_VPs * sizeof(SlaveVP *)); - /* Create Producer VP 0. */ + /* Create Producer VP 0 (Producer 0). */ bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); bridgesForVP[0] = boundaryBridges[CKT_VP_PROD0]; - prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit)); + prodParams = PR_WL__malloc(sizeof(VPParams)); prodParams->inBridges = NULL; prodParams->outBridges = bridgesForVP; - prodParams->initData = initDatums[CKT_VP_PROD0]; + prodParams->initData = NULL; //this is special broadcast producer - VPs[CKT_VP_PROD0] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); + VPs[CKT_VP_PROD0] = VReo__create_VP(&broadcast_producer_Fn, prodParams, circuit, animVP); boundaryBridges[CKT_VP_PROD0]->writer = VPs[CKT_VP_PROD0]; boundaryBridges[CKT_VP_PROD0]->writerType = VP; @@ -464,10 +711,10 @@ bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); bridgesForVP[0] = boundaryBridges[CKT_VP_PROD1]; - prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit)); + prodParams = PR_WL__malloc(sizeof(VPParams)); prodParams->inBridges = NULL; prodParams->outBridges = bridgesForVP; - prodParams->initData = initDatums[CKT_VP_PROD1]; + prodParams->initData = initDatums[0]; //gets first work unit VPs[CKT_VP_PROD1] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); @@ -478,49 +725,44 @@ bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); bridgesForVP[0] = boundaryBridges[CKT_VP_PROD2]; - prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit)); + prodParams = PR_WL__malloc(sizeof(VPParams)); prodParams->inBridges = NULL; prodParams->outBridges = bridgesForVP; - prodParams->initData = initDatums[CKT_VP_PROD2]; + prodParams->initData = initDatums[1]; //second work-unit VPs[CKT_VP_PROD2] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); boundaryBridges[CKT_VP_PROD2]->writer = VPs[CKT_VP_PROD2]; boundaryBridges[CKT_VP_PROD2]->writerType = VP; -// /* Create Consumer VP 0. */ -// consParams = PR_WL__malloc(sizeof(TestAppConsumerParams)); -// -// //bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); -// //bridgesForVP[0] = boundaryBridges[CKT_VP_CONS0]; -// -// bridgesForVP = PR_WL__malloc(2 * sizeof(VReoBridge *)); -// bridgesForVP[0] = bridges[CKT_BRIDGE_Out_0]; -// bridgesForVP[0] = bridges[CKT_BRIDGE_Out_1]; -// -// consParams->inBridges = bridgesForVP; -// consParams->outBridges = NULL; -// -// VPs[CKT_VP_CONS0] = VReo__create_VP(&consumer_Fn, consParams, circuit, animVP); -// boundaryBridges[CKT_VP_CONS0]->reader = VPs[CKT_VP_CONS0]; -// boundaryBridges[CKT_VP_CONS0]->readerType = VP; + /* Create Producer VP 3. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD3]; -// /* Create Consumer VP 1. */ -// consParams = PR_WL__malloc(sizeof(TestAppConsumerParams)); -// -// //bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); -// //bridgesForVP[0] = boundaryBridges[CKT_VP_CONS1]; -// -// bridgesForVP = PR_WL__malloc(2 * sizeof(VReoBridge *)); -// bridgesForVP[0] = bridges[CKT_BRIDGE_Out_0]; -// bridgesForVP[0] = bridges[CKT_BRIDGE_Out_1]; -// -// consParams->inBridges = bridgesForVP; -// consParams->outBridges = NULL; -// -// VPs[CKT_VP_CONS1] = VReo__create_VP(&consumer_Fn, consParams, circuit, animVP); -// boundaryBridges[CKT_VP_CONS1]->reader = VPs[CKT_VP_CONS1]; -// boundaryBridges[CKT_VP_CONS1]->readerType = VP; + prodParams = PR_WL__malloc(sizeof(VPParams)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + prodParams->initData = initDatums[2]; //third work unit + + VPs[CKT_VP_PROD3] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); + + boundaryBridges[CKT_VP_PROD3]->writer = VPs[CKT_VP_PROD3]; + boundaryBridges[CKT_VP_PROD3]->writerType = VP; + + /* Create Producer VP 4. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD4]; + + prodParams = PR_WL__malloc(sizeof(VPParams)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + prodParams->initData = initDatums[3]; //fourth work-unit + + VPs[CKT_VP_PROD4] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); + + boundaryBridges[CKT_VP_PROD4]->writer = VPs[CKT_VP_PROD4]; + boundaryBridges[CKT_VP_PROD4]->writerType = VP; + /* Create Consumer VP. */ consParams = PR_WL__malloc(sizeof(VPParams)); @@ -529,9 +771,8 @@ bridgesForVP[0] = &(bridges[CKT_BRIDGE_Out_0]); bridgesForVP[1] = &(bridges[CKT_BRIDGE_Out_1]); - consParams->inBridges = bridgesForVP; + consParams->inBridges = bridgesForVP; consParams->outBridges = NULL; - consParams->initData = initDatums[CKT_VP_CONS0]; VPs[CKT_VP_CONS0] = VReo__create_VP(&consumer_Fn, consParams, circuit, animVP); @@ -549,14 +790,16 @@ /* Checkers for Island 0. */ bool32 Checker_0__I0( VReoIsland *island ) { - VReoBridge *bridgeBroad_0Output1, *bridgeBroad_0Output2, *bridgeOut_1, *bridgeBroad_0; + VReoBridge *bridgeBroad_0Output1, *bridgeBroad_0Output2, *bridgeBroad_0Output3, *bridgeOut_1, *bridgeBroad_0, *bridgeBroad_0Output4; bool32 satisfied; bridgeBroad_0Output1 = (island->bridges)[I0_BRIDGE_Broad_0Output1]; bridgeBroad_0Output2 = (island->bridges)[I0_BRIDGE_Broad_0Output2]; + bridgeBroad_0Output3 = (island->bridges)[I0_BRIDGE_Broad_0Output3]; bridgeOut_1 = (island->bridges)[I0_BRIDGE_Out_1]; bridgeBroad_0 = (island->bridges)[I0_BRIDGE_Broad_0]; - satisfied = READY_FOR_READ_BRIDGE_Broad_0 && READY_FOR_WRITE_BRIDGE_Broad_0Output1 && READY_FOR_WRITE_BRIDGE_Broad_0Output2 && READY_FOR_WRITE_BRIDGE_Out_1; + bridgeBroad_0Output4 = (island->bridges)[I0_BRIDGE_Broad_0Output4]; + satisfied = READY_FOR_READ_BRIDGE_Broad_0 && READY_FOR_WRITE_BRIDGE_Broad_0Output1 && READY_FOR_WRITE_BRIDGE_Broad_0Output2 && READY_FOR_WRITE_BRIDGE_Broad_0Output3 && READY_FOR_WRITE_BRIDGE_Out_1 && READY_FOR_WRITE_BRIDGE_Broad_0Output4; return satisfied; } @@ -586,6 +829,32 @@ return satisfied; } +/* Checkers for Island 3. */ + +bool32 Checker_0__I3( VReoIsland *island ) { + VReoBridge *bridgeIn_2, *bridgeX_2Input0, *bridgeIn_2Output0; + bool32 satisfied; + + bridgeIn_2 = (island->bridges)[I3_BRIDGE_In_2]; + bridgeX_2Input0 = (island->bridges)[I3_BRIDGE_X_2Input0]; + bridgeIn_2Output0 = (island->bridges)[I3_BRIDGE_In_2Output0]; + satisfied = READY_FOR_READ_BRIDGE_In_2 && READY_FOR_READ_BRIDGE_X_2Input0 && READY_FOR_WRITE_BRIDGE_In_2Output0; + return satisfied; +} + +/* Checkers for Island 4. */ + +bool32 Checker_0__I4( VReoIsland *island ) { + VReoBridge *bridgeIn_3, *bridgeX_3Input0, *bridgeIn_3Output0; + bool32 satisfied; + + bridgeIn_3 = (island->bridges)[I4_BRIDGE_In_3]; + bridgeX_3Input0 = (island->bridges)[I4_BRIDGE_X_3Input0]; + bridgeIn_3Output0 = (island->bridges)[I4_BRIDGE_In_3Output0]; + satisfied = READY_FOR_READ_BRIDGE_In_3 && READY_FOR_READ_BRIDGE_X_3Input0 && READY_FOR_WRITE_BRIDGE_In_3Output0; + return satisfied; +} + //============================================================================== /* Declaration of auxiliary doers. */ @@ -593,41 +862,61 @@ void Auxdoer_for_bridge_Broad_0( VReoBridge *bridge ); void Auxdoer_for_bridge_In_0( VReoBridge *bridge ); void Auxdoer_for_bridge_In_1( VReoBridge *bridge ); +void Auxdoer_for_bridge_In_2( VReoBridge *bridge ); +void Auxdoer_for_bridge_In_3( VReoBridge *bridge ); void Auxdoer_for_bridge_Out_0( VReoBridge *bridge ); void Auxdoer_for_bridge_Out_1( VReoBridge *bridge ); void Auxdoer_for_bridge_In_0Output1( VReoBridge *bridge ); -void Auxdoer_for_bridge_Out_0Input1( VReoBridge *bridge ); +void Auxdoer_for_bridge_Out_0Input3( VReoBridge *bridge ); void Auxdoer_for_bridge_Broad_0Output1( VReoBridge *bridge ); void Auxdoer_for_bridge_X_0Input0( VReoBridge *bridge ); void Auxdoer_for_bridge_In_1Output0( VReoBridge *bridge ); -void Auxdoer_for_bridge_Out_0Input0( VReoBridge *bridge ); +void Auxdoer_for_bridge_Out_0Input2( VReoBridge *bridge ); void Auxdoer_for_bridge_Broad_0Output2( VReoBridge *bridge ); void Auxdoer_for_bridge_X_1Input0( VReoBridge *bridge ); +void Auxdoer_for_bridge_In_2Output0( VReoBridge *bridge ); +void Auxdoer_for_bridge_Out_0Input1( VReoBridge *bridge ); + +void Auxdoer_for_bridge_Broad_0Output3( VReoBridge *bridge ); +void Auxdoer_for_bridge_X_2Input0( VReoBridge *bridge ); + +void Auxdoer_for_bridge_In_3Output0( VReoBridge *bridge ); +void Auxdoer_for_bridge_Out_0Input0( VReoBridge *bridge ); + +void Auxdoer_for_bridge_Broad_0Output4( VReoBridge *bridge ); +void Auxdoer_for_bridge_X_3Input0( VReoBridge *bridge ); + /* Doers for Island 0. */ void Doer_0__I0( VReoIsland *island ) { - VReoBridge *bridgeBroad_0Output1, *bridgeBroad_0Output2, *bridgeOut_1, *bridgeBroad_0; + VReoBridge *bridgeBroad_0Output1, *bridgeBroad_0Output2, *bridgeBroad_0Output3, *bridgeOut_1, *bridgeBroad_0, *bridgeBroad_0Output4; /* Initialize bridges. */ bridgeBroad_0Output1 = (island->bridges)[I0_BRIDGE_Broad_0Output1]; bridgeBroad_0Output2 = (island->bridges)[I0_BRIDGE_Broad_0Output2]; + bridgeBroad_0Output3 = (island->bridges)[I0_BRIDGE_Broad_0Output3]; bridgeOut_1 = (island->bridges)[I0_BRIDGE_Out_1]; bridgeBroad_0 = (island->bridges)[I0_BRIDGE_Broad_0]; + bridgeBroad_0Output4 = (island->bridges)[I0_BRIDGE_Broad_0Output4]; /* Distribute data. */ bridgeBroad_0Output1->buffer = bridgeBroad_0->buffer; bridgeBroad_0Output2->buffer = bridgeBroad_0->buffer; + bridgeBroad_0Output3->buffer = bridgeBroad_0->buffer; bridgeOut_1->buffer = bridgeBroad_0->buffer; + bridgeBroad_0Output4->buffer = bridgeBroad_0->buffer; /* Update bridge status. */ bridgeBroad_0->bridgeIsFull = FALSE; bridgeBroad_0Output1->bridgeIsFull = TRUE; bridgeBroad_0Output2->bridgeIsFull = TRUE; + bridgeBroad_0Output3->bridgeIsFull = TRUE; bridgeOut_1->bridgeIsFull = TRUE; + bridgeBroad_0Output4->bridgeIsFull = TRUE; /* Prepare reader VPs. */ PR_PI__make_slave_ready_for_lang(bridgeOut_1->waitingReaderVP, VReo_MAGIC_NUMBER); @@ -642,8 +931,10 @@ /* Call auxiliary doers to complete this transition. */ Auxdoer_for_bridge_Broad_0Output1(bridgeBroad_0Output1); Auxdoer_for_bridge_Broad_0Output2(bridgeBroad_0Output2); + Auxdoer_for_bridge_Broad_0Output3(bridgeBroad_0Output3); Auxdoer_for_bridge_Out_1(bridgeOut_1); Auxdoer_for_bridge_Broad_0(bridgeBroad_0); + Auxdoer_for_bridge_Broad_0Output4(bridgeBroad_0Output4); } /* Doers for Island 1. */ @@ -706,6 +997,66 @@ Auxdoer_for_bridge_X_1Input0(bridgeX_1Input0); } +/* Doers for Island 3. */ + +void Doer_0__I3( VReoIsland *island ) { + VReoBridge *bridgeIn_2, *bridgeX_2Input0, *bridgeIn_2Output0; + + /* Initialize bridges. */ + bridgeIn_2 = (island->bridges)[I3_BRIDGE_In_2]; + bridgeX_2Input0 = (island->bridges)[I3_BRIDGE_X_2Input0]; + bridgeIn_2Output0 = (island->bridges)[I3_BRIDGE_In_2Output0]; + + /* Distribute data. */ + bridgeIn_2Output0->buffer = bridgeIn_2->buffer; + + /* Update bridge status. */ + bridgeIn_2->bridgeIsFull = FALSE; + bridgeX_2Input0->bridgeIsFull = FALSE; + bridgeIn_2Output0->bridgeIsFull = TRUE; + + /* Prepare reader VPs. */ + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeIn_2->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeIn_2->waitingWriterVP = NULL; + + /* Call auxiliary doers to complete this transition. */ + Auxdoer_for_bridge_In_2(bridgeIn_2); + Auxdoer_for_bridge_X_2Input0(bridgeX_2Input0); + Auxdoer_for_bridge_In_2Output0(bridgeIn_2Output0); +} + +/* Doers for Island 4. */ + +void Doer_0__I4( VReoIsland *island ) { + VReoBridge *bridgeIn_3, *bridgeX_3Input0, *bridgeIn_3Output0; + + /* Initialize bridges. */ + bridgeIn_3 = (island->bridges)[I4_BRIDGE_In_3]; + bridgeX_3Input0 = (island->bridges)[I4_BRIDGE_X_3Input0]; + bridgeIn_3Output0 = (island->bridges)[I4_BRIDGE_In_3Output0]; + + /* Distribute data. */ + bridgeIn_3Output0->buffer = bridgeIn_3->buffer; + + /* Update bridge status. */ + bridgeIn_3->bridgeIsFull = FALSE; + bridgeX_3Input0->bridgeIsFull = FALSE; + bridgeIn_3Output0->bridgeIsFull = TRUE; + + /* Prepare reader VPs. */ + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeIn_3->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeIn_3->waitingWriterVP = NULL; + + /* Call auxiliary doers to complete this transition. */ + Auxdoer_for_bridge_In_3(bridgeIn_3); + Auxdoer_for_bridge_X_3Input0(bridgeX_3Input0); + Auxdoer_for_bridge_In_3Output0(bridgeIn_3Output0); +} + //============================================================================== /* Auxiliary doers for input bridges. */ @@ -722,6 +1073,14 @@ ; } +void Auxdoer_for_bridge_In_2( VReoBridge *bridge ) { + ; +} + +void Auxdoer_for_bridge_In_3( VReoBridge *bridge ) { + ; +} + /* Auxiliary doers for output bridges. */ void Auxdoer_for_bridge_Out_0( VReoBridge *bridge ) { @@ -759,7 +1118,7 @@ VReo__check_an_o1island_that_reads_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); } } -void Auxdoer_for_bridge_Out_0Input1( VReoBridge *bridge ) { +void Auxdoer_for_bridge_Out_0Input3( VReoBridge *bridge ) { int32 numCheckerFns; VReoIsland *islandOnOtherSide; VReoCheckerFn *checkerFns; @@ -861,7 +1220,7 @@ VReo__check_an_o1island_that_reads_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); } } -void Auxdoer_for_bridge_Out_0Input0( VReoBridge *bridge ) { +void Auxdoer_for_bridge_Out_0Input2( VReoBridge *bridge ) { int32 numCheckerFns; VReoIsland *islandOnOtherSide; VReoCheckerFn *checkerFns; @@ -936,4 +1295,208 @@ VReo__check_an_o1island_that_writes_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); } +} + +void Auxdoer_for_bridge_In_2Output0( VReoBridge *bridge ) { + int32 numCheckerFns; + VReoIsland *islandOnOtherSide; + VReoCheckerFn *checkerFns; + VReoDoerFn *doerFns; + + VReoO1island *o1islandOnOtherSide; + VReoPartnerQStruct *partnerQstruct; + + if (bridge->readerType == Island) { + islandOnOtherSide = (VReoIsland*) bridge->reader; + numCheckerFns = bridge->numReaderCheckerFns; + checkerFns = bridge->readerCheckerFns; + doerFns = bridge->readerDoerFns; + + VReo__check_an_island( islandOnOtherSide, numCheckerFns, checkerFns, doerFns ); + } + + else if (bridge->readerType == O1island) { + o1islandOnOtherSide = (VReoO1island *)bridge->reader; + partnerQstruct = bridge->readerPartnerQStruct; + + VReo__check_an_o1island_that_reads_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); + } +} +void Auxdoer_for_bridge_Out_0Input1( VReoBridge *bridge ) { + int32 numCheckerFns; + VReoIsland *islandOnOtherSide; + VReoCheckerFn *checkerFns; + VReoDoerFn *doerFns; + + VReoO1island *o1islandOnOtherSide; + VReoPartnerQStruct *partnerQstruct; + + if (bridge->writerType == Island) { + islandOnOtherSide = (VReoIsland*) bridge->writer; + numCheckerFns = bridge->numWriterCheckerFns; + checkerFns = bridge->writerCheckerFns; + doerFns = bridge->writerDoerFns; + + VReo__check_an_island( islandOnOtherSide, numCheckerFns, checkerFns, doerFns ); + } + + else if (bridge->writerType == O1island) { + o1islandOnOtherSide = (VReoO1island *)bridge->writer; + partnerQstruct = bridge->writerPartnerQStruct; + + VReo__check_an_o1island_that_writes_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); + } +} + +void Auxdoer_for_bridge_Broad_0Output3( VReoBridge *bridge ) { + int32 numCheckerFns; + VReoIsland *islandOnOtherSide; + VReoCheckerFn *checkerFns; + VReoDoerFn *doerFns; + + VReoO1island *o1islandOnOtherSide; + VReoPartnerQStruct *partnerQstruct; + + if (bridge->readerType == Island) { + islandOnOtherSide = (VReoIsland*) bridge->reader; + numCheckerFns = bridge->numReaderCheckerFns; + checkerFns = bridge->readerCheckerFns; + doerFns = bridge->readerDoerFns; + + VReo__check_an_island( islandOnOtherSide, numCheckerFns, checkerFns, doerFns ); + } + + else if (bridge->readerType == O1island) { + o1islandOnOtherSide = (VReoO1island *)bridge->reader; + partnerQstruct = bridge->readerPartnerQStruct; + + VReo__check_an_o1island_that_reads_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); + } +} +void Auxdoer_for_bridge_X_2Input0( VReoBridge *bridge ) { + int32 numCheckerFns; + VReoIsland *islandOnOtherSide; + VReoCheckerFn *checkerFns; + VReoDoerFn *doerFns; + + VReoO1island *o1islandOnOtherSide; + VReoPartnerQStruct *partnerQstruct; + + if (bridge->writerType == Island) { + islandOnOtherSide = (VReoIsland*) bridge->writer; + numCheckerFns = bridge->numWriterCheckerFns; + checkerFns = bridge->writerCheckerFns; + doerFns = bridge->writerDoerFns; + + VReo__check_an_island( islandOnOtherSide, numCheckerFns, checkerFns, doerFns ); + } + + else if (bridge->writerType == O1island) { + o1islandOnOtherSide = (VReoO1island *)bridge->writer; + partnerQstruct = bridge->writerPartnerQStruct; + + VReo__check_an_o1island_that_writes_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); + } +} + +void Auxdoer_for_bridge_In_3Output0( VReoBridge *bridge ) { + int32 numCheckerFns; + VReoIsland *islandOnOtherSide; + VReoCheckerFn *checkerFns; + VReoDoerFn *doerFns; + + VReoO1island *o1islandOnOtherSide; + VReoPartnerQStruct *partnerQstruct; + + if (bridge->readerType == Island) { + islandOnOtherSide = (VReoIsland*) bridge->reader; + numCheckerFns = bridge->numReaderCheckerFns; + checkerFns = bridge->readerCheckerFns; + doerFns = bridge->readerDoerFns; + + VReo__check_an_island( islandOnOtherSide, numCheckerFns, checkerFns, doerFns ); + } + + else if (bridge->readerType == O1island) { + o1islandOnOtherSide = (VReoO1island *)bridge->reader; + partnerQstruct = bridge->readerPartnerQStruct; + + VReo__check_an_o1island_that_reads_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); + } +} +void Auxdoer_for_bridge_Out_0Input0( VReoBridge *bridge ) { + int32 numCheckerFns; + VReoIsland *islandOnOtherSide; + VReoCheckerFn *checkerFns; + VReoDoerFn *doerFns; + + VReoO1island *o1islandOnOtherSide; + VReoPartnerQStruct *partnerQstruct; + + if (bridge->writerType == Island) { + islandOnOtherSide = (VReoIsland*) bridge->writer; + numCheckerFns = bridge->numWriterCheckerFns; + checkerFns = bridge->writerCheckerFns; + doerFns = bridge->writerDoerFns; + + VReo__check_an_island( islandOnOtherSide, numCheckerFns, checkerFns, doerFns ); + } + + else if (bridge->writerType == O1island) { + o1islandOnOtherSide = (VReoO1island *)bridge->writer; + partnerQstruct = bridge->writerPartnerQStruct; + + VReo__check_an_o1island_that_writes_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); + } +} + +void Auxdoer_for_bridge_Broad_0Output4( VReoBridge *bridge ) { + int32 numCheckerFns; + VReoIsland *islandOnOtherSide; + VReoCheckerFn *checkerFns; + VReoDoerFn *doerFns; + + VReoO1island *o1islandOnOtherSide; + VReoPartnerQStruct *partnerQstruct; + + if (bridge->readerType == Island) { + islandOnOtherSide = (VReoIsland*) bridge->reader; + numCheckerFns = bridge->numReaderCheckerFns; + checkerFns = bridge->readerCheckerFns; + doerFns = bridge->readerDoerFns; + + VReo__check_an_island( islandOnOtherSide, numCheckerFns, checkerFns, doerFns ); + } + + else if (bridge->readerType == O1island) { + o1islandOnOtherSide = (VReoO1island *)bridge->reader; + partnerQstruct = bridge->readerPartnerQStruct; + + VReo__check_an_o1island_that_reads_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); + } +} +void Auxdoer_for_bridge_X_3Input0( VReoBridge *bridge ) { + int32 numCheckerFns; + VReoIsland *islandOnOtherSide; + VReoCheckerFn *checkerFns; + VReoDoerFn *doerFns; + + VReoO1island *o1islandOnOtherSide; + VReoPartnerQStruct *partnerQstruct; + + if (bridge->writerType == Island) { + islandOnOtherSide = (VReoIsland*) bridge->writer; + numCheckerFns = bridge->numWriterCheckerFns; + checkerFns = bridge->writerCheckerFns; + doerFns = bridge->writerDoerFns; + + VReo__check_an_island( islandOnOtherSide, numCheckerFns, checkerFns, doerFns ); + } + + else if (bridge->writerType == O1island) { + o1islandOnOtherSide = (VReoO1island *)bridge->writer; + partnerQstruct = bridge->writerPartnerQStruct; + + VReo__check_an_o1island_that_writes_bridge( o1islandOnOtherSide, bridge, partnerQstruct ); + } } \ No newline at end of file diff -r 1b61e0c00512 -r 96deb7b4502e Reo__Matrix_Mult/Circuit.h --- a/Reo__Matrix_Mult/Circuit.h Wed Feb 19 09:27:10 2014 -0800 +++ b/Reo__Matrix_Mult/Circuit.h Sat Mar 29 06:02:18 2014 -0700 @@ -5,33 +5,35 @@ //#include "VReo_impl/VReo.h" #include #include -#include -#include //============================================================================== /* Counts. */ -#define NUM_VPs 5 -#define NUM_PROD 3 -#define NUM_ISLANDS 3 +#define NUM_VPs 7 +#define NUM_PROD 5 +#define NUM_ISLANDS 5 #define NUM_O1ISLANDS 1 -#define NUM_BRIDGES 9 -#define NUM_BOUNDARY_BRIDGES 5 +#define NUM_BRIDGES 15 +#define NUM_BOUNDARY_BRIDGES 7 /* Producer VPs attached to circuit. */ #define CKT_VP_PROD0 0 #define CKT_VP_PROD1 1 #define CKT_VP_PROD2 2 +#define CKT_VP_PROD3 3 +#define CKT_VP_PROD4 4 /* Consumer VPs attached to circuit. */ -// #define CKT_VP_CONS0 (3+0) -// #define CKT_VP_CONS1 (3+1) -#define CKT_VP_CONS0 3 +// #define CKT_VP_CONS0 (5+0) +// #define CKT_VP_CONS1 (5+1) +#define CKT_VP_CONS0 5 /* Islands in circuit. */ #define CKT_I0 0 #define CKT_I1 1 #define CKT_I2 2 +#define CKT_I3 3 +#define CKT_I4 4 /* O1Islands in circuit. */ #define CKT_O1I0 0 @@ -40,30 +42,50 @@ #define CKT_BRIDGE_Broad_0 0 #define CKT_BRIDGE_In_0 1 #define CKT_BRIDGE_In_1 2 -#define CKT_BRIDGE_Out_0 3 -#define CKT_BRIDGE_Out_1 4 +#define CKT_BRIDGE_In_2 3 +#define CKT_BRIDGE_In_3 4 +#define CKT_BRIDGE_Out_0 5 +#define CKT_BRIDGE_Out_1 6 -#define CKT_BRIDGE_FIFO0 (5+0) -#define CKT_BRIDGE_In_0Output1 (5+0) -#define CKT_BRIDGE_Out_0Input1 (5+0) +#define CKT_BRIDGE_FIFO0 (7+0) +#define CKT_BRIDGE_In_0Output1 (7+0) +#define CKT_BRIDGE_Out_0Input3 (7+0) -#define CKT_BRIDGE_FIFO1 (5+1) -#define CKT_BRIDGE_Broad_0Output1 (5+1) -#define CKT_BRIDGE_X_0Input0 (5+1) +#define CKT_BRIDGE_FIFO1 (7+1) +#define CKT_BRIDGE_Broad_0Output1 (7+1) +#define CKT_BRIDGE_X_0Input0 (7+1) -#define CKT_BRIDGE_FIFO2 (5+2) -#define CKT_BRIDGE_In_1Output0 (5+2) -#define CKT_BRIDGE_Out_0Input0 (5+2) +#define CKT_BRIDGE_FIFO2 (7+2) +#define CKT_BRIDGE_In_1Output0 (7+2) +#define CKT_BRIDGE_Out_0Input2 (7+2) -#define CKT_BRIDGE_FIFO3 (5+3) -#define CKT_BRIDGE_Broad_0Output2 (5+3) -#define CKT_BRIDGE_X_1Input0 (5+3) +#define CKT_BRIDGE_FIFO3 (7+3) +#define CKT_BRIDGE_Broad_0Output2 (7+3) +#define CKT_BRIDGE_X_1Input0 (7+3) + +#define CKT_BRIDGE_FIFO4 (7+4) +#define CKT_BRIDGE_In_2Output0 (7+4) +#define CKT_BRIDGE_Out_0Input1 (7+4) + +#define CKT_BRIDGE_FIFO5 (7+5) +#define CKT_BRIDGE_Broad_0Output3 (7+5) +#define CKT_BRIDGE_X_2Input0 (7+5) + +#define CKT_BRIDGE_FIFO6 (7+6) +#define CKT_BRIDGE_In_3Output0 (7+6) +#define CKT_BRIDGE_Out_0Input0 (7+6) + +#define CKT_BRIDGE_FIFO7 (7+7) +#define CKT_BRIDGE_Broad_0Output4 (7+7) +#define CKT_BRIDGE_X_3Input0 (7+7) /* Bridges in Island 0. */ #define I0_BRIDGE_Broad_0Output1 0 #define I0_BRIDGE_Broad_0Output2 1 -#define I0_BRIDGE_Out_1 2 -#define I0_BRIDGE_Broad_0 3 +#define I0_BRIDGE_Broad_0Output3 2 +#define I0_BRIDGE_Out_1 3 +#define I0_BRIDGE_Broad_0 4 +#define I0_BRIDGE_Broad_0Output4 5 /* Bridges in Island 1. */ #define I1_BRIDGE_X_0Input0 0 @@ -75,21 +97,35 @@ #define I2_BRIDGE_In_1 1 #define I2_BRIDGE_X_1Input0 2 +/* Bridges in Island 3. */ +#define I3_BRIDGE_In_2 0 +#define I3_BRIDGE_X_2Input0 1 +#define I3_BRIDGE_In_2Output0 2 + +/* Bridges in Island 4. */ +#define I4_BRIDGE_In_3 0 +#define I4_BRIDGE_X_3Input0 1 +#define I4_BRIDGE_In_3Output0 2 + /* Bridges in O1Island 0. */ -#define O1I0_BRIDGE_Out_0 0 -#define O1I0_BRIDGE_Out_0Input1 1 -#define O1I0_BRIDGE_Out_0Input0 2 +#define O1I0_BRIDGE_Out_0Input3 0 +#define O1I0_BRIDGE_Out_0 1 +#define O1I0_BRIDGE_Out_0Input2 2 +#define O1I0_BRIDGE_Out_0Input1 3 +#define O1I0_BRIDGE_Out_0Input0 4 /* Readiness of boundary bridges. */ #define READY_FOR_READ_BRIDGE_Broad_0 bridgeBroad_0->bridgeIsFull #define READY_FOR_READ_BRIDGE_In_0 bridgeIn_0->bridgeIsFull #define READY_FOR_READ_BRIDGE_In_1 bridgeIn_1->bridgeIsFull +#define READY_FOR_READ_BRIDGE_In_2 bridgeIn_2->bridgeIsFull +#define READY_FOR_READ_BRIDGE_In_3 bridgeIn_3->bridgeIsFull #define READY_FOR_WRITE_BRIDGE_Out_0 bridgeOut_0->waitingReaderVP #define READY_FOR_WRITE_BRIDGE_Out_1 bridgeOut_1->waitingReaderVP /* Readiness of bridges of FIFO 0. */ #define READY_FOR_WRITE_BRIDGE_In_0Output1 !bridgeIn_0Output1->bridgeIsFull -#define READY_FOR_READ_BRIDGE_Out_0Input1 bridgeOut_0Input1->bridgeIsFull +#define READY_FOR_READ_BRIDGE_Out_0Input3 bridgeOut_0Input3->bridgeIsFull /* Readiness of bridges of FIFO 1. */ #define READY_FOR_WRITE_BRIDGE_Broad_0Output1 !bridgeBroad_0Output1->bridgeIsFull @@ -97,17 +133,35 @@ /* Readiness of bridges of FIFO 2. */ #define READY_FOR_WRITE_BRIDGE_In_1Output0 !bridgeIn_1Output0->bridgeIsFull -#define READY_FOR_READ_BRIDGE_Out_0Input0 bridgeOut_0Input0->bridgeIsFull +#define READY_FOR_READ_BRIDGE_Out_0Input2 bridgeOut_0Input2->bridgeIsFull /* Readiness of bridges of FIFO 3. */ #define READY_FOR_WRITE_BRIDGE_Broad_0Output2 !bridgeBroad_0Output2->bridgeIsFull #define READY_FOR_READ_BRIDGE_X_1Input0 bridgeX_1Input0->bridgeIsFull +/* Readiness of bridges of FIFO 4. */ +#define READY_FOR_WRITE_BRIDGE_In_2Output0 !bridgeIn_2Output0->bridgeIsFull +#define READY_FOR_READ_BRIDGE_Out_0Input1 bridgeOut_0Input1->bridgeIsFull + +/* Readiness of bridges of FIFO 5. */ +#define READY_FOR_WRITE_BRIDGE_Broad_0Output3 !bridgeBroad_0Output3->bridgeIsFull +#define READY_FOR_READ_BRIDGE_X_2Input0 bridgeX_2Input0->bridgeIsFull + +/* Readiness of bridges of FIFO 6. */ +#define READY_FOR_WRITE_BRIDGE_In_3Output0 !bridgeIn_3Output0->bridgeIsFull +#define READY_FOR_READ_BRIDGE_Out_0Input0 bridgeOut_0Input0->bridgeIsFull + +/* Readiness of bridges of FIFO 7. */ +#define READY_FOR_WRITE_BRIDGE_Broad_0Output4 !bridgeBroad_0Output4->bridgeIsFull +#define READY_FOR_READ_BRIDGE_X_3Input0 bridgeX_3Input0->bridgeIsFull + /* Number of checkers per bridge in Island 0. */ #define NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output1 1 #define NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output2 1 +#define NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output3 1 #define NUM_I0_CHECKERS_INVOLVE_BRIDGE_Out_1 1 #define NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0 1 +#define NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output4 1 /* Number of checkers per bridge in Island 1. */ #define NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0 1 @@ -119,9 +173,19 @@ #define NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1 1 #define NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0 1 +/* Number of checkers per bridge in Island 3. */ +#define NUM_I3_CHECKERS_INVOLVE_BRIDGE_In_2 1 +#define NUM_I3_CHECKERS_INVOLVE_BRIDGE_X_2Input0 1 +#define NUM_I3_CHECKERS_INVOLVE_BRIDGE_In_2Output0 1 + +/* Number of checkers per bridge in Island 4. */ +#define NUM_I4_CHECKERS_INVOLVE_BRIDGE_In_3 1 +#define NUM_I4_CHECKERS_INVOLVE_BRIDGE_X_3Input0 1 +#define NUM_I4_CHECKERS_INVOLVE_BRIDGE_In_3Output0 1 + /* Checkers and doers for Island 0. */ -#define CHECKER3_I0 Checker_0__I0 -#define DOER3_I0 Doer_0__I0 +#define CHECKER2_I0 Checker_0__I0 +#define DOER2_I0 Doer_0__I0 /* Checkers and doers for Island 1. */ #define CHECKER2_I1 Checker_0__I1 @@ -131,6 +195,14 @@ #define CHECKER3_I2 Checker_0__I2 #define DOER3_I2 Doer_0__I2 +/* Checkers and doers for Island 3. */ +#define CHECKER2_I3 Checker_0__I3 +#define DOER2_I3 Doer_0__I3 + +/* Checkers and doers for Island 4. */ +#define CHECKER3_I4 Checker_0__I4 +#define DOER3_I4 Doer_0__I4 + //============================================================================== /* Create VPs and connect. */ @@ -148,6 +220,12 @@ /* Checkers of Island 2. */ bool32 Checker_0__I2( VReoIsland *island ); +/* Checkers of Island 3. */ +bool32 Checker_0__I3( VReoIsland *island ); + +/* Checkers of Island 4. */ +bool32 Checker_0__I4( VReoIsland *island ); + /* Doers of Island 0. */ void Doer_0__I0( VReoIsland *island ); @@ -157,4 +235,10 @@ /* Doers of Island 2. */ void Doer_0__I2( VReoIsland *island ); +/* Doers of Island 3. */ +void Doer_0__I3( VReoIsland *island ); + +/* Doers of Island 4. */ +void Doer_0__I4( VReoIsland *island ); + #endif /* _Circuit_App1_H */ \ No newline at end of file diff -r 1b61e0c00512 -r 96deb7b4502e Reo__Matrix_Mult/DivideWork.c --- a/Reo__Matrix_Mult/DivideWork.c Wed Feb 19 09:27:10 2014 -0800 +++ b/Reo__Matrix_Mult/DivideWork.c Sat Mar 29 06:02:18 2014 -0700 @@ -31,16 +31,15 @@ if( leftMatrix->numRows != rightMatrix->numCols ) { printf("error: left num rows must == right num cols\n"); exit(0);} - if( leftMatrix->numRows % 4 != 0 ) - { printf("error: left num rows must be divisible by 4\n"); exit(0);} targetDivisor = (int)sqrt( targetNumUnits ); targetIncrement = (int)(leftMatrix->numRows / targetDivisor); - if( targetDivisor * targetDivisor != targetNumUnits || - targetIncrement * targetDivisor != leftMatrix->numRows ) - { printf("error: the target number of units to be made must be a perfect square and it must evenly divide the left number of rows (vector length)\n"); + if( targetDivisor * targetDivisor != targetNumUnits ) + { printf("error: the target number of units to be made must be a perfect square: %d)\n", targetNumUnits); fflush(stdout); exit(0); } + if( targetIncrement * targetDivisor != leftMatrix->numRows ) + { printf("error: left num rows [%d] must be divisible by sqrt(num work-units to make) [%d]\n", leftMatrix->numRows, targetDivisor); exit(0);} //make a data struct for each work unit, and fill it with params of work diff -r 1b61e0c00512 -r 96deb7b4502e Reo__Matrix_Mult/Producer_and_Consumer.c --- a/Reo__Matrix_Mult/Producer_and_Consumer.c Wed Feb 19 09:27:10 2014 -0800 +++ b/Reo__Matrix_Mult/Producer_and_Consumer.c Sat Mar 29 06:02:18 2014 -0700 @@ -10,6 +10,41 @@ #include "Reo__Matrix_Mult.h" #include "../Matrix_Mult.h" +#define NEVER_ENDS 1 + +/*The input to a VP's birth function is a struct that holds two arrays of + * pointers to bridges -- one for input bridges, one for output bridges + */ +void +broadcast_producer_Fn(void *_birthParams, SlaveVP *animVP) + { + VPParams *birthParams = (VPParams *) _birthParams; + + //Tell the Reo tool that generates circuit about the bridges of this VP + //#Reo numInBridges 0 | numOutbridges 1 + VReoBridge **outBridges = birthParams->outBridges; + VReoBridge *bridge; + TestAppProdConsMsg *msg; + int32 i = 0; + + DEBUG__printf(dbgAppFlow, "Broadcast Producer on core: %d", animVP->coreAnimatedBy); + + bridge = outBridges[0]; + + //broadcast producer continually puts things onto its output port + msg = PR__malloc(sizeof(TestAppProdConsMsg)); + msg->producerID = animVP->slaveNum; + for( i = 0; i < numIterations; i++ ) + { + msg->producedCnt = i; + VReo__put_into_bridge(msg, bridge, animVP); + DEBUG__printf(dbgAppFlow, "Broadcast Producer %d, put in %d", msg->producerID, + msg->producedCnt); + } + DEBUG__printf(dbgAppFlow, "Broadcast producer ending"); + VReo__end_VP(animVP); + } + /*The input to a VP's birth function is a struct that holds two arrays of * pointers to bridges -- one for input bridges, one for output bridges * and, optionally, an array of workUnit params. @@ -23,23 +58,23 @@ //#Reo numInBridges 0 | numOutbridges 1 VReoBridge **outBridges = birthParams->outBridges; VReoBridge *bridge; - TestAppProdConsMsg *msg; MatrixMultWorkUnit *matrixMultWorkUnit; int32 i; - DEBUG__printf( dbgAppFlow, "Producer on core: %d", animVP->coreAnimatedBy ); + DEBUG__printf( dbgAppFlow, "Started Multiply Producer: %d on core: %d", animVP->slaveNum, animVP->coreAnimatedBy ); bridge = outBridges[0]; //Do the multiplies matrixMultWorkUnit = (MatrixMultWorkUnit *)birthParams->initData; - for (i = 0; i < NUM_ITER; i++) + for (i = 0; i < numIterations; i++) { calcProduct( matrixMultWorkUnit ); //result appears by side effect VReo__put_into_bridge( matrixMultWorkUnit, bridge, animVP ); DEBUG__printf( dbgAppFlow, "Producer %d, put in %d", - msg->producerID, msg->producedCnt ); + animVP->slaveNum, i ); } + DEBUG__printf(dbgAppFlow, "Producer %d done, ending", animVP->slaveNum); VReo__end_VP( animVP ); } @@ -75,13 +110,13 @@ float *finalArray, *partArray; Matrix *leftMatrix, *rightMatrix, *resultMatrix; - for (i = 0; i < NUM_ITER; i++) + for (i = 0; i < numIterations; i++) { - for (j = 0; j < NUM_PROD; j++) + for (j = 0; j < NUM_PROD -1; j++) { //get next result from a producer resWorkUnit = (MatrixMultWorkUnit *) VReo__get_from_bridge(inBridge0, animVP); - DEBUG__printf( dbgAppFlow, "Consumer got \n" ); + DEBUG__printf( dbgAppFlow, "Consumer got something" ); //now set up variables will use to copy partial result to final matrix array partArray = resWorkUnit->prodArray; resultMatrix = resWorkUnit->resultMatrix; //matrix for full orig piece @@ -115,10 +150,11 @@ // PR__free(resWorkUnit->partResArray); // PR__free(resWorkUnit); } - + DEBUG__printf(dbgAppFlow, "Completed Iteration: %d", i+1); //tell producers they can go on to next matrix VReo__get_from_bridge(inBridge1, animVP); //doing a get triggers broadcast } + DEBUG__printf(dbgAppFlow, "Consumer done, ending"); VReo__end_VP(animVP); } diff -r 1b61e0c00512 -r 96deb7b4502e Reo__Matrix_Mult/Reo__Matrix_Mult.h --- a/Reo__Matrix_Mult/Reo__Matrix_Mult.h Wed Feb 19 09:27:10 2014 -0800 +++ b/Reo__Matrix_Mult/Reo__Matrix_Mult.h Sat Mar 29 06:02:18 2014 -0700 @@ -4,10 +4,11 @@ #include #include +#include "../PR_defs__turn_on_and_off.h" #include "Circuit.h" #include "../Matrix_Mult.h" -extern int NUM_ITER; +extern int numIterations; //=============================== Defines ============================== /* The parameter values in here represent one unit of work @@ -80,6 +81,7 @@ //============================= Processor Functions ========================= void matrix_mult__seed_Fn(void *data, SlaveVP *animatingVP); //seed VP function +void broadcast_producer_Fn(void *_birthParams, SlaveVP *animVP); void producer_Fn(void *data, SlaveVP *animatingVP); void consumer_Fn(void *data, SlaveVP *animatingVP); diff -r 1b61e0c00512 -r 96deb7b4502e Reo__Matrix_Mult/SeedVP.c --- a/Reo__Matrix_Mult/SeedVP.c Wed Feb 19 09:27:10 2014 -0800 +++ b/Reo__Matrix_Mult/SeedVP.c Sat Mar 29 06:02:18 2014 -0700 @@ -79,7 +79,7 @@ #endif fflush(stdout); - exit(0); +// exit(0); /* Stop Reo plug-in. */ VReo__shutdown(seedVP); diff -r 1b61e0c00512 -r 96deb7b4502e main.c --- a/main.c Wed Feb 19 09:27:10 2014 -0800 +++ b/main.c Sat Mar 29 06:02:18 2014 -0700 @@ -9,7 +9,7 @@ // ============================================================================= -int NUM_ITER; +int numIterations; int main(int argc, char **argv) @@ -24,10 +24,10 @@ DEBUG__printf(TRUE, "arguments -- numIter: %s | path: %s", argv[1], argv[2] ); if(argc < 3) {printf("give: num iter and path to param file on cmd line\n"); exit(1);} - NUM_ITER = atoi(argv[1]); - numUnitsToMake = NUM_PROD; //defined by Reo circuit generator + numIterations = atoi(argv[1]); + numUnitsToMake = NUM_PROD-1; //defined by Reo circuit generator - printf("[reo] Settings: %i workers, %i iterations | file: %s \n", NUM_PROD, NUM_ITER, argv[2]); + printf("[reo] Settings: %i workers, %i iterations | file: %s \n", NUM_PROD, numIterations, argv[2]); set_up_performance_counters(); @@ -80,6 +80,7 @@ PR__wait_for_process_to_end(matrixMultProcess); PR__wait_for_all_activity_to_end(); + DEBUG__printf(dbgAppFlow, "activity ended, about to call PR__shutdown"); fflush(stdout); PR__shutdown(); diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/Makefile-Debug.mk --- a/nb__Reo_matrix_mult/nbproject/Makefile-Debug.mk Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-Debug.mk Sat Mar 29 06:02:18 2014 -0700 @@ -38,11 +38,11 @@ ${OBJECTDIR}/_ext/1472/Matrix_Mult.o \ ${OBJECTDIR}/_ext/1539317932/ParamBag.o \ ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o \ - ${OBJECTDIR}/_ext/1702716545/Circuit.o \ ${OBJECTDIR}/_ext/1702716545/DivideWork.o \ ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o \ ${OBJECTDIR}/_ext/1702716545/SeedVP.o \ - ${OBJECTDIR}/_ext/1472/main.o + ${OBJECTDIR}/_ext/1472/main.o \ + ${OBJECTDIR}/_ext/1435311123/Circuit.o # C Compiler Flags @@ -84,11 +84,6 @@ ${RM} "$@.d" $(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c -${OBJECTDIR}/_ext/1702716545/Circuit.o: ../Reo__Matrix_Mult/Circuit.c - ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 - ${RM} "$@.d" - $(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c - ${OBJECTDIR}/_ext/1702716545/DivideWork.o: ../Reo__Matrix_Mult/DivideWork.c ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 ${RM} "$@.d" @@ -109,6 +104,11 @@ ${RM} "$@.d" $(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c +${OBJECTDIR}/_ext/1435311123/Circuit.o: /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1435311123 + ${RM} "$@.d" + $(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1435311123/Circuit.o /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.c + # Subprojects .build-subprojects: diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/Makefile-Debug_Sequential.mk --- a/nb__Reo_matrix_mult/nbproject/Makefile-Debug_Sequential.mk Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-Debug_Sequential.mk Sat Mar 29 06:02:18 2014 -0700 @@ -38,11 +38,11 @@ ${OBJECTDIR}/_ext/1472/Matrix_Mult.o \ ${OBJECTDIR}/_ext/1539317932/ParamBag.o \ ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o \ - ${OBJECTDIR}/_ext/1702716545/Circuit.o \ ${OBJECTDIR}/_ext/1702716545/DivideWork.o \ ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o \ ${OBJECTDIR}/_ext/1702716545/SeedVP.o \ - ${OBJECTDIR}/_ext/1472/main.o + ${OBJECTDIR}/_ext/1472/main.o \ + ${OBJECTDIR}/_ext/1435311123/Circuit.o # C Compiler Flags @@ -59,66 +59,78 @@ ASFLAGS= # Link Libraries and Options -LDLIBSOPTIONS=-L../../PR__lib -lpr__ml__sharedmem__dku_debug -lprmalloc -lprparam -lprqueue -lreo_wrapper_lib_opt1 +LDLIBSOPTIONS=-L../../PR__lib -Wl,-rpath,../../PR__lib -lprmalloc -lprparam -lprqueue -lm -Wl,-rpath,/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/../../PR__lib -L/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/../../PR__lib -lreo_opt1_ml_lib -Wl,-rpath,/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__proto-runtime/nb__PR__ML__wDKU__lib/../../PR__lib -L/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__proto-runtime/nb__PR__ML__wDKU__lib/../../PR__lib -lpr__ml__sharedmem_debug_seq # Build Targets .build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ../../dist/bin/reo_matrix_mult__debug_seq -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${LINK.c} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult ${OBJECTFILES} ${LDLIBSOPTIONS} +../../dist/bin/reo_matrix_mult__debug_seq: /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/../../PR__lib/libreo_opt1_ml_lib.so + +../../dist/bin/reo_matrix_mult__debug_seq: /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__proto-runtime/nb__PR__ML__wDKU__lib/../../PR__lib/libpr__ml__sharedmem_debug_seq.so + +../../dist/bin/reo_matrix_mult__debug_seq: ${OBJECTFILES} + ${MKDIR} -p ../../dist/bin + ${LINK.c} -o ../../dist/bin/reo_matrix_mult__debug_seq ${OBJECTFILES} ${LDLIBSOPTIONS} ${OBJECTDIR}/_ext/1472/Matrix_Mult.o: ../Matrix_Mult.c ${MKDIR} -p ${OBJECTDIR}/_ext/1472 ${RM} "$@.d" - $(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -DDEBUG__TURN_ON_DEBUG_PRINT -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c + $(COMPILE.c) -g -DDEBUG__TURN_ON_DEBUG_PRINT -DDEBUG__TURN_ON_SEQUENTIAL_MODE -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c ${OBJECTDIR}/_ext/1539317932/ParamBag.o: ../ParamHelper/ParamBag.c ${MKDIR} -p ${OBJECTDIR}/_ext/1539317932 ${RM} "$@.d" - $(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -DDEBUG__TURN_ON_DEBUG_PRINT -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c + $(COMPILE.c) -g -DDEBUG__TURN_ON_DEBUG_PRINT -DDEBUG__TURN_ON_SEQUENTIAL_MODE -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: ../ParamHelper/ReadParamsFromFile.c ${MKDIR} -p ${OBJECTDIR}/_ext/1539317932 ${RM} "$@.d" - $(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -DDEBUG__TURN_ON_DEBUG_PRINT -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c - -${OBJECTDIR}/_ext/1702716545/Circuit.o: ../Reo__Matrix_Mult/Circuit.c - ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 - ${RM} "$@.d" - $(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -DDEBUG__TURN_ON_DEBUG_PRINT -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c + $(COMPILE.c) -g -DDEBUG__TURN_ON_DEBUG_PRINT -DDEBUG__TURN_ON_SEQUENTIAL_MODE -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c ${OBJECTDIR}/_ext/1702716545/DivideWork.o: ../Reo__Matrix_Mult/DivideWork.c ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 ${RM} "$@.d" - $(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -DDEBUG__TURN_ON_DEBUG_PRINT -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/DivideWork.o ../Reo__Matrix_Mult/DivideWork.c + $(COMPILE.c) -g -DDEBUG__TURN_ON_DEBUG_PRINT -DDEBUG__TURN_ON_SEQUENTIAL_MODE -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/DivideWork.o ../Reo__Matrix_Mult/DivideWork.c ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o: ../Reo__Matrix_Mult/Producer_and_Consumer.c ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 ${RM} "$@.d" - $(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -DDEBUG__TURN_ON_DEBUG_PRINT -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o ../Reo__Matrix_Mult/Producer_and_Consumer.c + $(COMPILE.c) -g -DDEBUG__TURN_ON_DEBUG_PRINT -DDEBUG__TURN_ON_SEQUENTIAL_MODE -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o ../Reo__Matrix_Mult/Producer_and_Consumer.c ${OBJECTDIR}/_ext/1702716545/SeedVP.o: ../Reo__Matrix_Mult/SeedVP.c ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 ${RM} "$@.d" - $(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -DDEBUG__TURN_ON_DEBUG_PRINT -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c + $(COMPILE.c) -g -DDEBUG__TURN_ON_DEBUG_PRINT -DDEBUG__TURN_ON_SEQUENTIAL_MODE -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c ${OBJECTDIR}/_ext/1472/main.o: ../main.c ${MKDIR} -p ${OBJECTDIR}/_ext/1472 ${RM} "$@.d" - $(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -DDEBUG__TURN_ON_DEBUG_PRINT -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c + $(COMPILE.c) -g -DDEBUG__TURN_ON_DEBUG_PRINT -DDEBUG__TURN_ON_SEQUENTIAL_MODE -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c + +${OBJECTDIR}/_ext/1435311123/Circuit.o: /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1435311123 + ${RM} "$@.d" + $(COMPILE.c) -g -DDEBUG__TURN_ON_DEBUG_PRINT -DDEBUG__TURN_ON_SEQUENTIAL_MODE -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1435311123/Circuit.o /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.c # Subprojects .build-subprojects: + cd /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=Debug + cd /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=MEAS_ON + cd /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=Debug + cd /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=MEAS_ON # Clean Targets .clean-conf: ${CLEAN_SUBPROJECTS} ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult + ${RM} ../../dist/bin/reo_matrix_mult__debug_seq # Subprojects .clean-subprojects: + cd /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=Debug clean + cd /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=MEAS_ON clean + cd /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=Debug clean + cd /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=MEAS_ON clean # Enable dependency checking .dep.inc: .depcheck-impl diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/Makefile-Release.mk --- a/nb__Reo_matrix_mult/nbproject/Makefile-Release.mk Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-Release.mk Sat Mar 29 06:02:18 2014 -0700 @@ -38,11 +38,11 @@ ${OBJECTDIR}/_ext/1472/Matrix_Mult.o \ ${OBJECTDIR}/_ext/1539317932/ParamBag.o \ ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o \ - ${OBJECTDIR}/_ext/1702716545/Circuit.o \ ${OBJECTDIR}/_ext/1702716545/DivideWork.o \ ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o \ ${OBJECTDIR}/_ext/1702716545/SeedVP.o \ - ${OBJECTDIR}/_ext/1472/main.o + ${OBJECTDIR}/_ext/1472/main.o \ + ${OBJECTDIR}/_ext/1435311123/Circuit.o # C Compiler Flags @@ -84,11 +84,6 @@ ${RM} "$@.d" $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c -${OBJECTDIR}/_ext/1702716545/Circuit.o: ../Reo__Matrix_Mult/Circuit.c - ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c - ${OBJECTDIR}/_ext/1702716545/DivideWork.o: ../Reo__Matrix_Mult/DivideWork.c ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 ${RM} "$@.d" @@ -109,6 +104,11 @@ ${RM} "$@.d" $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c +${OBJECTDIR}/_ext/1435311123/Circuit.o: /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1435311123 + ${RM} "$@.d" + $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1435311123/Circuit.o /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.c + # Subprojects .build-subprojects: diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/Makefile-impl.mk --- a/nb__Reo_matrix_mult/nbproject/Makefile-impl.mk Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-impl.mk Sat Mar 29 06:02:18 2014 -0700 @@ -31,7 +31,7 @@ CONF=${DEFAULTCONF} # All Configurations -ALLCONFS=Debug Release Debug_Sequential +ALLCONFS=Debug Release Debug_Sequential MEAS_ON # build diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/Makefile-variables.mk --- a/nb__Reo_matrix_mult/nbproject/Makefile-variables.mk Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-variables.mk Sat Mar 29 06:02:18 2014 -0700 @@ -24,12 +24,20 @@ CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux-x86/package/nbreomatrixmult.tar # Debug_Sequential configuration CND_PLATFORM_Debug_Sequential=GNU-Linux-x86 -CND_ARTIFACT_DIR_Debug_Sequential=dist/Debug_Sequential/GNU-Linux-x86 -CND_ARTIFACT_NAME_Debug_Sequential=nb__reo_matrix_mult -CND_ARTIFACT_PATH_Debug_Sequential=dist/Debug_Sequential/GNU-Linux-x86/nb__reo_matrix_mult +CND_ARTIFACT_DIR_Debug_Sequential=../../dist/bin +CND_ARTIFACT_NAME_Debug_Sequential=reo_matrix_mult__debug_seq +CND_ARTIFACT_PATH_Debug_Sequential=../../dist/bin/reo_matrix_mult__debug_seq CND_PACKAGE_DIR_Debug_Sequential=dist/Debug_Sequential/GNU-Linux-x86/package CND_PACKAGE_NAME_Debug_Sequential=nbreomatrixmult.tar CND_PACKAGE_PATH_Debug_Sequential=dist/Debug_Sequential/GNU-Linux-x86/package/nbreomatrixmult.tar +# MEAS_ON configuration +CND_PLATFORM_MEAS_ON=GNU-Linux-x86 +CND_ARTIFACT_DIR_MEAS_ON=../../dist/bin +CND_ARTIFACT_NAME_MEAS_ON=reo_matrix_mult__meas_on +CND_ARTIFACT_PATH_MEAS_ON=../../dist/bin/reo_matrix_mult__meas_on +CND_PACKAGE_DIR_MEAS_ON=dist/MEAS_ON/GNU-Linux-x86/package +CND_PACKAGE_NAME_MEAS_ON=nbreomatrixmult.tar +CND_PACKAGE_PATH_MEAS_ON=dist/MEAS_ON/GNU-Linux-x86/package/nbreomatrixmult.tar # # include compiler specific variables # diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/Package-Debug_Sequential.bash --- a/nb__Reo_matrix_mult/nbproject/Package-Debug_Sequential.bash Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/Package-Debug_Sequential.bash Sat Mar 29 06:02:18 2014 -0700 @@ -13,8 +13,8 @@ CND_DLIB_EXT=so NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult -OUTPUT_BASENAME=nb__reo_matrix_mult +OUTPUT_PATH=../../dist/bin/reo_matrix_mult__debug_seq +OUTPUT_BASENAME=reo_matrix_mult__debug_seq PACKAGE_TOP_DIR=nbreomatrixmult/ # Functions diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/configurations.xml --- a/nb__Reo_matrix_mult/nbproject/configurations.xml Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/configurations.xml Sat Mar 29 06:02:18 2014 -0700 @@ -4,6 +4,35 @@ + + + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/langlets/PRServ__wrapper_library.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/langlets/prdsl_wrapper_library.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/langlets/vreo_wrapper_library.h + + + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/Services_offered_by_PR/DEBUG__macros.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/Services_offered_by_PR/MEAS__Counter_Recording.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/Services_offered_by_PR/MEAS__macros.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/Services_offered_by_PR/prdependency.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/Services_offered_by_PR/probes__wrapper_library.h + + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/PR__PI.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/PR__SS.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/PR__WL.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/PR__int.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/PR__primitive_data_types.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/PR__structs__common.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/prdynarray.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/prhash.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/prhistogram.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/prlistofarrays.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/prmalloc.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/prparam.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/prqueue.h + - ../Reo__Matrix_Mult/Circuit.c - ../Reo__Matrix_Mult/Circuit.h + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.c + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.h ../Reo__Matrix_Mult/DivideWork.c ../Reo__Matrix_Mult/Producer_and_Consumer.c ../Reo__Matrix_Mult/Reo__Matrix_Mult.h @@ -46,6 +75,7 @@ ../ParamHelper ../Reo__Matrix_Mult + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include Makefile @@ -70,10 +100,6 @@ tool="0" flavor2="0"> - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -124,9 +265,228 @@ tool="0" flavor2="0"> - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + true + false + + + + + ../.. + + + DEBUG__TURN_ON_DEBUG_PRINT + DEBUG__TURN_ON_SEQUENTIAL_MODE + + + + ../../dist/bin/reo_matrix_mult__debug_seq + + ../../PR__lib + + + ../../PR__lib + + + prmalloc + prparam + prqueue + Mathematics + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -144,8 +504,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + default true @@ -156,21 +631,22 @@ ../.. - - DEBUG__SEQUENTIAL_MODE - DEBUG__TURN_ON_DEBUG_PRINT - + ../../dist/bin/reo_matrix_mult__meas_on ../../PR__lib + + ../../PR__lib + - pr__ml__sharedmem__dku_debug prmalloc prparam prqueue - reo_wrapper_lib_opt1 + Mathematics + pr__ml__sharedmem__meas_on + reo_opt1_ml_lib__meas_on @@ -187,10 +663,6 @@ tool="0" flavor2="0"> - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/private/Makefile-variables.mk --- a/nb__Reo_matrix_mult/nbproject/private/Makefile-variables.mk Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/private/Makefile-variables.mk Sat Mar 29 06:02:18 2014 -0700 @@ -6,3 +6,4 @@ # Debug configuration # Release configuration # Debug_Sequential configuration +# MEAS_ON configuration diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/private/configurations.xml --- a/nb__Reo_matrix_mult/nbproject/private/configurations.xml Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/private/configurations.xml Sat Mar 29 06:02:18 2014 -0700 @@ -95,12 +95,54 @@ "${OUTPUT_PATH}" 10 config_files/9x9.txt "${OUTPUT_PATH}" 10 config_files/Matrix_Mult_config_files/ matrix_mult_config_size_9.txt "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/ matrix_mult_config_size_9.txt + "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_8.txt "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_9.txt - "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_8.txt "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_16.txt "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_16.txt - /mnt/hgfs/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/dist + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/dist + true + 0 + 0 + + + + + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + "${OUTPUT_PATH}" 10 9x9.txt + "${OUTPUT_PATH}" 10 config_files/9x9.txt + "${OUTPUT_PATH}" 10 config_files/Matrix_Mult_config_files/ matrix_mult_config_size_9.txt + "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/ matrix_mult_config_size_9.txt + "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_8.txt + "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_9.txt + "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_16.txt + "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_2048.txt + + "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_2048.txt + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/dist true 0 0 diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/private/private.xml --- a/nb__Reo_matrix_mult/nbproject/private/private.xml Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/private/private.xml Sat Mar 29 06:02:18 2014 -0700 @@ -2,9 +2,32 @@ 1 - 2 + 3 + - + + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/main.c + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/SeedVP.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/Services_offered_by_PR/DEBUG__macros.h + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include/PR__WL.h + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.h + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/PR_defs__turn_on_and_off.h + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Matrix_Mult.h + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/DivideWork.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.c + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Reo__Matrix_Mult.h + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Producer_and_Consumer.c + + + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/DivideWork.c + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/main.c + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Matrix_Mult.h + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Reo__Matrix_Mult.h + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.c + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Producer_and_Consumer.c + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/Circuit.h + file:/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/Application/Reo__Matrix_Mult/SeedVP.c + diff -r 1b61e0c00512 -r 96deb7b4502e nb__Reo_matrix_mult/nbproject/project.xml --- a/nb__Reo_matrix_mult/nbproject/project.xml Wed Feb 19 09:27:10 2014 -0800 +++ b/nb__Reo_matrix_mult/nbproject/project.xml Sat Mar 29 06:02:18 2014 -0700 @@ -8,10 +8,14 @@ h UTF-8 - + + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__proto-runtime/nb__PR__ML__wDKU__lib + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib + ../ParamHelper ../Reo__Matrix_Mult + /win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/PR__include @@ -26,6 +30,10 @@ Debug_Sequential 1 + + MEAS_ON + 1 + false