# HG changeset patch # User Philipe Louchtch - de Raadt # Date 1405189307 -7200 # Node ID a6b3cab179b10ec3527abb3a3e31be0c087a3cd9 # Parent 1b61e0c0051280facec352b947aadd210144671d Added no-measurments option for platforms without support. Added static X86, ARM and basic Kalray build support. This branch requires the longjmp versions of libprt and libvreo diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -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 a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -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 a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -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 a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -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 a6b3cab179b1 Reo__Matrix_Mult/MeasurementStuff.c --- a/Reo__Matrix_Mult/MeasurementStuff.c Wed Feb 19 09:27:10 2014 -0800 +++ b/Reo__Matrix_Mult/MeasurementStuff.c Sat Jul 12 20:21:47 2014 +0200 @@ -13,62 +13,70 @@ //SELECT how the measurement is done //only one must be enabled -#define MEASURE_TSC +//#define MEASURE_TSC //#define MEASURE_PERF +#define MEASURE_SKIP -#define saveTimeStampCountInto(low, high) \ - asm volatile("RDTSC; \ - movl %%eax, %0; \ - movl %%edx, %1;" \ - /* outputs */ : "=m" (low), "=m" (high)\ - /* inputs */ : \ - /* clobber */ : "%eax", "%edx" \ - ); +#ifdef MEASURE_SKIP + #define saveTimeStampCountInto(low, high) + #define saveLowTimeStampCountInto(low) +#else + #define saveTimeStampCountInto(low, high) \ + asm volatile("RDTSC; \ + movl %%eax, %0; \ + movl %%edx, %1;" \ + /* outputs */ : "=m" (low), "=m" (high)\ + /* inputs */ : \ + /* clobber */ : "%eax", "%edx" \ + ); -#define saveLowTimeStampCountInto(low) \ - asm volatile("RDTSC; \ - movl %%eax, %0;" \ - /* outputs */ : "=m" (low) \ - /* inputs */ : \ - /* clobber */ : "%eax", "%edx" \ - ); + #define saveLowTimeStampCountInto(low) \ + asm volatile("RDTSC; \ + movl %%eax, %0;" \ + /* outputs */ : "=m" (low) \ + /* inputs */ : \ + /* clobber */ : "%eax", "%edx" \ + ); -union timeStamp { - uint32_t lowHigh[2]; //lowHigh[0] is low, lowHigh[1] is high - uint64_t total; -}; + union timeStamp { + uint32_t lowHigh[2]; //lowHigh[0] is low, lowHigh[1] is high + uint64_t total; + }; -struct perfData { - uint64_t cycles; - uint64_t instructions; -}; + struct perfData { + uint64_t cycles; + uint64_t instructions; + }; +#endif //MEASURE_TSC should be mutually exclusive with MEASURE_PERF #ifdef MEASURE_TSC typedef union timeStamp MeasStruct; -#else -#ifdef MEASURE_PERF +#elif defined MEASURE_PERF typedef struct perfData MeasStruct; -#endif +#elif defined MEASURE_SKIP +typedef void* MeasStruct; #endif //read and save current perf-counter readings for cycles and instrs #ifdef MEASURE_PERF -#define takeAMeas(core, perfDataStruct) do{ \ - int cycles_fd = cycles_counter_fd[core]; \ - int nread; \ - \ - nread = read(cycles_fd,&(perfDataStruct.cycles),sizeof(perfDataStruct.cycles)); \ - if(nread<0){ \ - perror("Error reading cycles counter"); \ - cycles = 0; \ - } \ +#define takeAMeas(core, perfDataStruct) do{ \ + int cycles_fd = cycles_counter_fd[core]; \ + int nread; \ + \ + nread = read(cycles_fd,&(perfDataStruct.cycles),sizeof(perfDataStruct.cycles)); \ + if(nread<0){ \ + perror("Error reading cycles counter"); \ + cycles = 0; \ + } \ } while (0) //macro magic for scoping -#else -#define takeAMeas(core, timeStampStruct) do{ \ - saveTimeStampCountInto(timeStampStruct.lowHigh[0], timeStampStruct.lowHigh[1]);\ +#elif defined MEASURE_TSC +#define takeAMeas(core, timeStampStruct) do{ \ + saveTimeStampCountInto(timeStampStruct.lowHigh[0], timeStampStruct.lowHigh[1]); \ } while (0) //macro magic for scoping +#elif defined MEASURE_SKIP +#define takeAMeas(core, timeStampStruct) #endif #ifdef MEASURE_PERF @@ -98,7 +106,9 @@ return GetTickCount(); } #else -#error "I don't know how to measure time on your platform" + #ifndef MEASURE_SKIP + #error "I don't know how to measure time on your platform" + #endif #endif #endif //H_MEASUREMENTSTUFF_ diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -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 a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -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 a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -46,7 +46,7 @@ /* Log. */ DEBUG__printf(dbgAppFlow, "start app"); - + /* Start Reo plug-in. */ VReo__start(seedVP); @@ -70,16 +70,18 @@ //work is all done, so take a measurement snapshot at end takeAMeas(0, benchEndMeas); - #ifdef MEASURE_PERF + #if defined MEASURE_PERF uint64_t totalExeCycles = ( benchEndMeas.cycles - benchStartMeas.cycles); - printf("Total Execution: %lu\n", totalExeCycles); - #else + printf("Total Execution: %lu\n\n\n", totalExeCycles); + #elif defined MEASURE_TSC uint64_t totalExeCycles = (benchEndMeas.total - benchStartMeas.total); - printf("Total Cycles of Execution: %lu\n", totalExeCycles); + printf("Total Cycles of Execution: %lu\n\n\n", totalExeCycles); + #elif defined MEASURE_SKIP + printf("Execution completed, measurements have been skipped \n\n\n"); #endif fflush(stdout); - exit(0); + /* Stop Reo plug-in. */ VReo__shutdown(seedVP); diff -r 1b61e0c00512 -r a6b3cab179b1 Reo__Matrix_Mult/k_3/Circuit.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Reo__Matrix_Mult/k_3/Circuit.c Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,939 @@ +#include +#include +#include "Reo__Matrix_Mult.h" +#include "Circuit.h" + +VReoCircuit *create_circuit(SlaveVP *animVP) { + + /* Declare variables. */ + VReoCircuit *circuit; + VReoBridge *bridge, *bridges, **boundaryBridges; + VReoIsland *islands, *island; + VReoO1island *o1islands, *o1island; + VReoCheckerFn *bridgeReaderCheckerFns, *bridgeWriterCheckerFns; + VReoDoerFn *bridgeReaderDoerFns, *bridgeWriterDoerFns; + PrivQueueStruc *offerQ0, *offerQ1; + VReoPartnerQStruct *partnerQStruct0, *partnerQStruct1; + + /* Allocate memory for bridges, islands, and the circuit. */ + bridges = PR_WL__malloc(NUM_BRIDGES * sizeof(VReoBridge)); + islands = PR_WL__malloc((NUM_ISLANDS == 0 ? 1 : NUM_ISLANDS) * sizeof(VReoIsland)); + o1islands = PR_WL__malloc((NUM_O1ISLANDS == 0 ? 1 : NUM_O1ISLANDS) * sizeof(VReoO1island)); + circuit = (VReoCircuit *) PR_WL__malloc(sizeof(VReoCircuit)); + + // + // INITIALIZE BRIDGES + // + + /* Initialize bridge Broad_0. */ + 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; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge In_0. */ + bridge = &(bridges[CKT_BRIDGE_In_0]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge In_1. */ + bridge = &(bridges[CKT_BRIDGE_In_1]); + 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; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge Out_1. */ + bridge = &(bridges[CKT_BRIDGE_Out_1]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO0. */ + bridge = &(bridges[CKT_BRIDGE_FIFO0]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO1. */ + bridge = &(bridges[CKT_BRIDGE_FIFO1]); + bridge->buffer = malloc(1); + bridge->bridgeIsFull = TRUE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO2. */ + bridge = &(bridges[CKT_BRIDGE_FIFO2]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO3. */ + bridge = &(bridges[CKT_BRIDGE_FIFO3]); + 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]); + + // + // INITIALIZE ISLANDS + // + + /* Initialize Island 0. */ + island = &(islands[CKT_I0]); + + island->numCheckerFns = 1; + island->numBridges = 4; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I0; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I0; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + 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_Out_1] = &(bridges[CKT_BRIDGE_Out_1]); + + /* + * Initialize Island 0: register Island 0 as a reader on + * bridge Broad_0. + */ + 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; + + bridge = &(bridges[CKT_BRIDGE_Broad_0]); + bridge->reader = &(islands[CKT_I0]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 0: register Island 0 as a writer on + * bridge Broad_0Output1. + */ + 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; + + bridge = &(bridges[CKT_BRIDGE_Broad_0Output1]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output1; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* + * Initialize Island 0: register Island 0 as a writer on + * bridge Broad_0Output2. + */ + 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; + + bridge = &(bridges[CKT_BRIDGE_Broad_0Output2]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output2; + 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; + + bridge = &(bridges[CKT_BRIDGE_Out_1]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Out_1; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* Initialize Island 1. */ + island = &(islands[CKT_I1]); + + island->numCheckerFns = 1; + island->numBridges = 3; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I1; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I1; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + island->bridges[I1_BRIDGE_X_0Input0] = &(bridges[CKT_BRIDGE_X_0Input0]); + island->bridges[I1_BRIDGE_In_0] = &(bridges[CKT_BRIDGE_In_0]); + island->bridges[I1_BRIDGE_In_0Output1] = &(bridges[CKT_BRIDGE_In_0Output1]); + + /* + * Initialize Island 1: register Island 1 as a reader on + * bridge X_0Input0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I1; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER2_I1; + + bridge = &(bridges[CKT_BRIDGE_X_0Input0]); + bridge->reader = &(islands[CKT_I1]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 1: register Island 1 as a reader on + * bridge In_0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I1; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER2_I1; + + bridge = &(bridges[CKT_BRIDGE_In_0]); + bridge->reader = &(islands[CKT_I1]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 1: register Island 1 as a writer on + * bridge In_0Output1. + */ + bridgeWriterCheckerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1 * sizeof(VReoCheckerFn *) ); + bridgeWriterDoerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1 * sizeof(VReoDoerFn *) ); + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I1; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I1; + + bridge = &(bridges[CKT_BRIDGE_In_0Output1]); + bridge->writer = &(islands[CKT_I1]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* Initialize Island 2. */ + island = &(islands[CKT_I2]); + + island->numCheckerFns = 1; + island->numBridges = 3; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I2; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I2; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + island->bridges[I2_BRIDGE_In_1] = &(bridges[CKT_BRIDGE_In_1]); + island->bridges[I2_BRIDGE_X_1Input0] = &(bridges[CKT_BRIDGE_X_1Input0]); + island->bridges[I2_BRIDGE_In_1Output0] = &(bridges[CKT_BRIDGE_In_1Output0]); + + /* + * Initialize Island 2: register Island 2 as a reader on + * bridge In_1. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I2; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER3_I2; + + bridge = &(bridges[CKT_BRIDGE_In_1]); + bridge->reader = &(islands[CKT_I2]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 2: register Island 2 as a reader on + * bridge X_1Input0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I2; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER3_I2; + + bridge = &(bridges[CKT_BRIDGE_X_1Input0]); + bridge->reader = &(islands[CKT_I2]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 2: register Island 2 as a writer on + * bridge In_1Output0. + */ + bridgeWriterCheckerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0 * sizeof(VReoCheckerFn *) ); + bridgeWriterDoerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0 * sizeof(VReoDoerFn *) ); + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I2; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER3_I2; + + bridge = &(bridges[CKT_BRIDGE_In_1Output0]); + bridge->writer = &(islands[CKT_I2]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* Initialize O1Island 0. */ + o1island = &(o1islands[CKT_O1I0]); + + o1island->numBridges = 3; + o1island->bridges = PR_WL__malloc(o1island->numBridges * sizeof(VReoBridge *)); + 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]); + + /* + * Initialize O1Island 0: create queues (queue 0 holds puts of input + * bridges; queue 1 holds gets of the output bridge). + */ + offerQ0 = makePrivQ(); + offerQ1 = makePrivQ(); + + partnerQStruct0 = PR_WL__malloc( sizeof(VReoPartnerQStruct) ); + partnerQStruct0->numQs = 1; + partnerQStruct0->partnerQs = PR_WL__malloc( partnerQStruct0->numQs * sizeof(PrivQueueStruc *) ); + partnerQStruct0->doerFns = PR_WL__malloc( partnerQStruct0->numQs * sizeof(VReoO1islandDoerFn) ); + partnerQStruct0->doerFns[0] = &o1islandReadBridgeToWrittenBridgeDoer; + partnerQStruct0->partnerQs[0] = offerQ1; + + partnerQStruct1 = PR_WL__malloc( sizeof(VReoPartnerQStruct) ); + partnerQStruct1->numQs = 1; + partnerQStruct1->partnerQs = PR_WL__malloc( partnerQStruct1->numQs * sizeof(PrivQueueStruc *) ); + partnerQStruct1->doerFns = PR_WL__malloc( partnerQStruct1->numQs * sizeof(VReoO1islandDoerFn) ); + partnerQStruct1->doerFns[0] = &o1islandReadBridgeToWrittenBridgeDoer; + partnerQStruct1->partnerQs[0] = offerQ0; + + /* + * Initialize O1Island 0: register O1Island 0 as a reader on + * bridge Out_0Input1. + */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input1]); + bridge->reader = &(o1island); + bridge->readerType = O1island; + bridge->readerPartnerQStruct = partnerQStruct0; + bridge->readerOfferQ = offerQ0; + + /* + * Initialize O1Island 0: register O1Island 0 as a reader on + * bridge Out_0Input0. + */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input0]); + bridge->reader = &(o1island); + bridge->readerType = O1island; + bridge->readerPartnerQStruct = partnerQStruct0; + bridge->readerOfferQ = offerQ0; + + /* + * Initialize O1Island 0: register O1Island 0 as the only + * writer on bridge Out_0. + */ + bridge = &(bridges[CKT_BRIDGE_Out_0]); + bridge->writer = &(o1island); + bridge->writerType = O1island; + bridge->writerPartnerQStruct = partnerQStruct1; + bridge->writerOfferQ = offerQ1; + + // + // INITIALIZE QUEUES + // + + /* Assumption: (writerType != NULL) implies (writerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input1]); + if (bridge->writerType != None && bridge->bridgeIsFull) + writePrivQ( bridge, bridge->readerOfferQ ); + + /* Assumption: (writerType != NULL) implies (writerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input0]); + if (bridge->writerType != None && bridge->bridgeIsFull) + writePrivQ( bridge, bridge->readerOfferQ ); + + /* Assumption: (readerType != NULL) implies (readerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0]); + if (bridge->readerType != None && !bridge->bridgeIsFull) + writePrivQ( bridge, bridge->writerOfferQ ); + + // + // INITIALIZE CIRCUIT + // + + /* Initialize circuit. */ + circuit->numIslands = NUM_ISLANDS; + circuit->numO1islands = NUM_O1ISLANDS; + circuit->numBridges = NUM_BRIDGES; + circuit->islands = islands; + circuit->o1islands = o1islands; + circuit->bridges = bridges; + circuit->boundaryBridges = boundaryBridges; + circuit->VPs = NULL; + + /* Return. */ + return (circuit); +} + +void create_VPs_w_init_and_connect( VReoCircuit *circuit, void **initDatums, + SlaveVP *animVP) + { + /* Declare variables. */ + VReoBridge **boundaryBridges, *bridges, **bridgesForVP; + SlaveVP **VPs; + + VPParams *prodParams; + VPParams *consParams; + + /* Initialize (boundary) bridges. */ + boundaryBridges = circuit->boundaryBridges; + bridges = circuit->bridges; + + /* Allocate memory for VPs. */ + VPs = PR_WL__malloc(NUM_VPs * sizeof(SlaveVP *)); + + /* Create Producer VP 0. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD0]; + + prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + prodParams->initData = initDatums[CKT_VP_PROD0]; + + VPs[CKT_VP_PROD0] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); + + boundaryBridges[CKT_VP_PROD0]->writer = VPs[CKT_VP_PROD0]; + boundaryBridges[CKT_VP_PROD0]->writerType = VP; + + /* Create Producer VP 1. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD1]; + + prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + prodParams->initData = initDatums[CKT_VP_PROD1]; + + VPs[CKT_VP_PROD1] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); + + boundaryBridges[CKT_VP_PROD1]->writer = VPs[CKT_VP_PROD1]; + boundaryBridges[CKT_VP_PROD1]->writerType = VP; + + /* Create Producer VP 2. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD2]; + + prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + prodParams->initData = initDatums[CKT_VP_PROD2]; + + 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 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; + + /* Create Consumer VP. */ + consParams = PR_WL__malloc(sizeof(VPParams)); + + bridgesForVP = PR_WL__malloc(2 * sizeof(VReoBridge *)); + bridgesForVP[0] = &(bridges[CKT_BRIDGE_Out_0]); + bridgesForVP[1] = &(bridges[CKT_BRIDGE_Out_1]); + + consParams->inBridges = bridgesForVP; + consParams->outBridges = NULL; + consParams->initData = initDatums[CKT_VP_CONS0]; + + VPs[CKT_VP_CONS0] = VReo__create_VP(&consumer_Fn, consParams, circuit, animVP); + + bridges[CKT_BRIDGE_Out_0].reader = VPs[CKT_VP_CONS0]; + bridges[CKT_BRIDGE_Out_1].reader = VPs[CKT_VP_CONS0]; + bridges[CKT_BRIDGE_Out_0].readerType = VP; + bridges[CKT_BRIDGE_Out_1].readerType = VP; + + /* Start circuit. */ + VReo__start_circuit(circuit, animVP); +} + +//============================================================================== + +/* Checkers for Island 0. */ + +bool32 Checker_0__I0( VReoIsland *island ) { + VReoBridge *bridgeBroad_0Output1, *bridgeBroad_0Output2, *bridgeOut_1, *bridgeBroad_0; + bool32 satisfied; + + bridgeBroad_0Output1 = (island->bridges)[I0_BRIDGE_Broad_0Output1]; + bridgeBroad_0Output2 = (island->bridges)[I0_BRIDGE_Broad_0Output2]; + 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; + return satisfied; +} + +/* Checkers for Island 1. */ + +bool32 Checker_0__I1( VReoIsland *island ) { + VReoBridge *bridgeX_0Input0, *bridgeIn_0, *bridgeIn_0Output1; + bool32 satisfied; + + bridgeX_0Input0 = (island->bridges)[I1_BRIDGE_X_0Input0]; + bridgeIn_0 = (island->bridges)[I1_BRIDGE_In_0]; + bridgeIn_0Output1 = (island->bridges)[I1_BRIDGE_In_0Output1]; + satisfied = READY_FOR_READ_BRIDGE_X_0Input0 && READY_FOR_READ_BRIDGE_In_0 && READY_FOR_WRITE_BRIDGE_In_0Output1; + return satisfied; +} + +/* Checkers for Island 2. */ + +bool32 Checker_0__I2( VReoIsland *island ) { + VReoBridge *bridgeIn_1Output0, *bridgeIn_1, *bridgeX_1Input0; + bool32 satisfied; + + bridgeIn_1Output0 = (island->bridges)[I2_BRIDGE_In_1Output0]; + bridgeIn_1 = (island->bridges)[I2_BRIDGE_In_1]; + bridgeX_1Input0 = (island->bridges)[I2_BRIDGE_X_1Input0]; + satisfied = READY_FOR_READ_BRIDGE_In_1 && READY_FOR_READ_BRIDGE_X_1Input0 && READY_FOR_WRITE_BRIDGE_In_1Output0; + return satisfied; +} + +//============================================================================== + +/* Declaration of auxiliary doers. */ + +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_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_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_Broad_0Output2( VReoBridge *bridge ); +void Auxdoer_for_bridge_X_1Input0( VReoBridge *bridge ); + +/* Doers for Island 0. */ + +void Doer_0__I0( VReoIsland *island ) { + VReoBridge *bridgeBroad_0Output1, *bridgeBroad_0Output2, *bridgeOut_1, *bridgeBroad_0; + + /* Initialize bridges. */ + bridgeBroad_0Output1 = (island->bridges)[I0_BRIDGE_Broad_0Output1]; + bridgeBroad_0Output2 = (island->bridges)[I0_BRIDGE_Broad_0Output2]; + bridgeOut_1 = (island->bridges)[I0_BRIDGE_Out_1]; + bridgeBroad_0 = (island->bridges)[I0_BRIDGE_Broad_0]; + + /* Distribute data. */ + bridgeBroad_0Output1->buffer = bridgeBroad_0->buffer; + bridgeBroad_0Output2->buffer = bridgeBroad_0->buffer; + bridgeOut_1->buffer = bridgeBroad_0->buffer; + + /* Update bridge status. */ + bridgeBroad_0->bridgeIsFull = FALSE; + bridgeBroad_0Output1->bridgeIsFull = TRUE; + bridgeBroad_0Output2->bridgeIsFull = TRUE; + bridgeOut_1->bridgeIsFull = TRUE; + + /* Prepare reader VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeOut_1->waitingReaderVP, VReo_MAGIC_NUMBER); + bridgeOut_1->waitingReaderVP->dataRetFromReq = bridgeOut_1->buffer; + bridgeOut_1->waitingReaderVP = NULL; + bridgeOut_1->bridgeIsFull = FALSE; + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeBroad_0->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeBroad_0->waitingWriterVP = NULL; + + /* Call auxiliary doers to complete this transition. */ + Auxdoer_for_bridge_Broad_0Output1(bridgeBroad_0Output1); + Auxdoer_for_bridge_Broad_0Output2(bridgeBroad_0Output2); + Auxdoer_for_bridge_Out_1(bridgeOut_1); + Auxdoer_for_bridge_Broad_0(bridgeBroad_0); +} + +/* Doers for Island 1. */ + +void Doer_0__I1( VReoIsland *island ) { + VReoBridge *bridgeX_0Input0, *bridgeIn_0, *bridgeIn_0Output1; + + /* Initialize bridges. */ + bridgeX_0Input0 = (island->bridges)[I1_BRIDGE_X_0Input0]; + bridgeIn_0 = (island->bridges)[I1_BRIDGE_In_0]; + bridgeIn_0Output1 = (island->bridges)[I1_BRIDGE_In_0Output1]; + + /* Distribute data. */ + bridgeIn_0Output1->buffer = bridgeIn_0->buffer; + + /* Update bridge status. */ + bridgeX_0Input0->bridgeIsFull = FALSE; + bridgeIn_0->bridgeIsFull = FALSE; + bridgeIn_0Output1->bridgeIsFull = TRUE; + + /* Prepare reader VPs. */ + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeIn_0->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeIn_0->waitingWriterVP = NULL; + + /* Call auxiliary doers to complete this transition. */ + Auxdoer_for_bridge_X_0Input0(bridgeX_0Input0); + Auxdoer_for_bridge_In_0(bridgeIn_0); + Auxdoer_for_bridge_In_0Output1(bridgeIn_0Output1); +} + +/* Doers for Island 2. */ + +void Doer_0__I2( VReoIsland *island ) { + VReoBridge *bridgeIn_1Output0, *bridgeIn_1, *bridgeX_1Input0; + + /* Initialize bridges. */ + bridgeIn_1Output0 = (island->bridges)[I2_BRIDGE_In_1Output0]; + bridgeIn_1 = (island->bridges)[I2_BRIDGE_In_1]; + bridgeX_1Input0 = (island->bridges)[I2_BRIDGE_X_1Input0]; + + /* Distribute data. */ + bridgeIn_1Output0->buffer = bridgeIn_1->buffer; + + /* Update bridge status. */ + bridgeIn_1->bridgeIsFull = FALSE; + bridgeX_1Input0->bridgeIsFull = FALSE; + bridgeIn_1Output0->bridgeIsFull = TRUE; + + /* Prepare reader VPs. */ + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeIn_1->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeIn_1->waitingWriterVP = NULL; + + /* Call auxiliary doers to complete this transition. */ + Auxdoer_for_bridge_In_1Output0(bridgeIn_1Output0); + Auxdoer_for_bridge_In_1(bridgeIn_1); + Auxdoer_for_bridge_X_1Input0(bridgeX_1Input0); +} + +//============================================================================== + +/* Auxiliary doers for input bridges. */ + +void Auxdoer_for_bridge_Broad_0( VReoBridge *bridge ) { + ; +} + +void Auxdoer_for_bridge_In_0( VReoBridge *bridge ) { + ; +} + +void Auxdoer_for_bridge_In_1( VReoBridge *bridge ) { + ; +} + +/* Auxiliary doers for output bridges. */ + +void Auxdoer_for_bridge_Out_0( VReoBridge *bridge ) { + ; +} + +void Auxdoer_for_bridge_Out_1( VReoBridge *bridge ) { + ; +} + +/* Auxiliary doers for FIFO bridges. */ + +void Auxdoer_for_bridge_In_0Output1( 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_0Output1( 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_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_In_1Output0( 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_0Output2( 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_1Input0( 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 a6b3cab179b1 Reo__Matrix_Mult/k_3/Circuit.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Reo__Matrix_Mult/k_3/Circuit.h Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,160 @@ +#ifndef _Circuit_App1_H +#define _Circuit_App1_H + +//#include "PR_impl/PR.h" +//#include "VReo_impl/VReo.h" +#include +#include +#include +#include + +//============================================================================== + +/* Counts. */ +#define NUM_VPs 5 +#define NUM_PROD 3 +#define NUM_ISLANDS 3 +#define NUM_O1ISLANDS 1 +#define NUM_BRIDGES 9 +#define NUM_BOUNDARY_BRIDGES 5 + +/* Producer VPs attached to circuit. */ +#define CKT_VP_PROD0 0 +#define CKT_VP_PROD1 1 +#define CKT_VP_PROD2 2 + +/* Consumer VPs attached to circuit. */ +// #define CKT_VP_CONS0 (3+0) +// #define CKT_VP_CONS1 (3+1) +#define CKT_VP_CONS0 3 + +/* Islands in circuit. */ +#define CKT_I0 0 +#define CKT_I1 1 +#define CKT_I2 2 + +/* O1Islands in circuit. */ +#define CKT_O1I0 0 + +/* Bridges in circuit. */ +#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_FIFO0 (5+0) +#define CKT_BRIDGE_In_0Output1 (5+0) +#define CKT_BRIDGE_Out_0Input1 (5+0) + +#define CKT_BRIDGE_FIFO1 (5+1) +#define CKT_BRIDGE_Broad_0Output1 (5+1) +#define CKT_BRIDGE_X_0Input0 (5+1) + +#define CKT_BRIDGE_FIFO2 (5+2) +#define CKT_BRIDGE_In_1Output0 (5+2) +#define CKT_BRIDGE_Out_0Input0 (5+2) + +#define CKT_BRIDGE_FIFO3 (5+3) +#define CKT_BRIDGE_Broad_0Output2 (5+3) +#define CKT_BRIDGE_X_1Input0 (5+3) + +/* 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 + +/* Bridges in Island 1. */ +#define I1_BRIDGE_X_0Input0 0 +#define I1_BRIDGE_In_0 1 +#define I1_BRIDGE_In_0Output1 2 + +/* Bridges in Island 2. */ +#define I2_BRIDGE_In_1Output0 0 +#define I2_BRIDGE_In_1 1 +#define I2_BRIDGE_X_1Input0 2 + +/* Bridges in O1Island 0. */ +#define O1I0_BRIDGE_Out_0 0 +#define O1I0_BRIDGE_Out_0Input1 1 +#define O1I0_BRIDGE_Out_0Input0 2 + +/* 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_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 + +/* Readiness of bridges of FIFO 1. */ +#define READY_FOR_WRITE_BRIDGE_Broad_0Output1 !bridgeBroad_0Output1->bridgeIsFull +#define READY_FOR_READ_BRIDGE_X_0Input0 bridgeX_0Input0->bridgeIsFull + +/* 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 + +/* 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 + +/* 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_Out_1 1 +#define NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0 1 + +/* Number of checkers per bridge in Island 1. */ +#define NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0 1 +#define NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0 1 +#define NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1 1 + +/* Number of checkers per bridge in Island 2. */ +#define NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0 1 +#define NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1 1 +#define NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0 1 + +/* Checkers and doers for Island 0. */ +#define CHECKER3_I0 Checker_0__I0 +#define DOER3_I0 Doer_0__I0 + +/* Checkers and doers for Island 1. */ +#define CHECKER2_I1 Checker_0__I1 +#define DOER2_I1 Doer_0__I1 + +/* Checkers and doers for Island 2. */ +#define CHECKER3_I2 Checker_0__I2 +#define DOER3_I2 Doer_0__I2 + +//============================================================================== + +/* Create VPs and connect. */ +void create_VPs_and_connect( VReoCircuit *circuit, SlaveVP *animVP ); + +/* Create circuit. */ +VReoCircuit * create_circuit( SlaveVP *animVP ); + +/* Checkers of Island 0. */ +bool32 Checker_0__I0( VReoIsland *island ); + +/* Checkers of Island 1. */ +bool32 Checker_0__I1( VReoIsland *island ); + +/* Checkers of Island 2. */ +bool32 Checker_0__I2( VReoIsland *island ); + +/* Doers of Island 0. */ +void Doer_0__I0( VReoIsland *island ); + +/* Doers of Island 1. */ +void Doer_0__I1( VReoIsland *island ); + +/* Doers of Island 2. */ +void Doer_0__I2( VReoIsland *island ); + +#endif /* _Circuit_App1_H */ \ No newline at end of file diff -r 1b61e0c00512 -r a6b3cab179b1 Reo__Matrix_Mult/k_3_corr/Circuit_corr.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Reo__Matrix_Mult/k_3_corr/Circuit_corr.c Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,939 @@ +#include +#include +#include "Reo__Matrix_Mult.h" +#include "Circuit.h" + +VReoCircuit *create_circuit(SlaveVP *animVP) { + + /* Declare variables. */ + VReoCircuit *circuit; + VReoBridge *bridge, *bridges, **boundaryBridges; + VReoIsland *islands, *island; + VReoO1island *o1islands, *o1island; + VReoCheckerFn *bridgeReaderCheckerFns, *bridgeWriterCheckerFns; + VReoDoerFn *bridgeReaderDoerFns, *bridgeWriterDoerFns; + PrivQueueStruc *offerQ0, *offerQ1; + VReoPartnerQStruct *partnerQStruct0, *partnerQStruct1; + + /* Allocate memory for bridges, islands, and the circuit. */ + bridges = PR_WL__malloc(NUM_BRIDGES * sizeof(VReoBridge)); + islands = PR_WL__malloc((NUM_ISLANDS == 0 ? 1 : NUM_ISLANDS) * sizeof(VReoIsland)); + o1islands = PR_WL__malloc((NUM_O1ISLANDS == 0 ? 1 : NUM_O1ISLANDS) * sizeof(VReoO1island)); + circuit = (VReoCircuit *) PR_WL__malloc(sizeof(VReoCircuit)); + + // + // INITIALIZE BRIDGES + // + + /* Initialize bridge Broad_0. */ + 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; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge In_0. */ + bridge = &(bridges[CKT_BRIDGE_In_0]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge In_1. */ + bridge = &(bridges[CKT_BRIDGE_In_1]); + 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; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge Out_1. */ + bridge = &(bridges[CKT_BRIDGE_Out_1]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO0. */ + bridge = &(bridges[CKT_BRIDGE_FIFO0]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO1. */ + bridge = &(bridges[CKT_BRIDGE_FIFO1]); + bridge->buffer = malloc(1); + bridge->bridgeIsFull = TRUE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO2. */ + bridge = &(bridges[CKT_BRIDGE_FIFO2]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO3. */ + bridge = &(bridges[CKT_BRIDGE_FIFO3]); + 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]); + + // + // INITIALIZE ISLANDS + // + + /* Initialize Island 0. */ + island = &(islands[CKT_I0]); + + island->numCheckerFns = 1; + island->numBridges = 4; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I0; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I0; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + 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_Out_1] = &(bridges[CKT_BRIDGE_Out_1]); + + /* + * Initialize Island 0: register Island 0 as a reader on + * bridge Broad_0. + */ + 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; + + bridge = &(bridges[CKT_BRIDGE_Broad_0]); + bridge->reader = &(islands[CKT_I0]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 0: register Island 0 as a writer on + * bridge Broad_0Output1. + */ + 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; + + bridge = &(bridges[CKT_BRIDGE_Broad_0Output1]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output1; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* + * Initialize Island 0: register Island 0 as a writer on + * bridge Broad_0Output2. + */ + 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; + + bridge = &(bridges[CKT_BRIDGE_Broad_0Output2]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output2; + 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; + + bridge = &(bridges[CKT_BRIDGE_Out_1]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Out_1; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* Initialize Island 1. */ + island = &(islands[CKT_I1]); + + island->numCheckerFns = 1; + island->numBridges = 3; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I1; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I1; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + island->bridges[I1_BRIDGE_X_0Input0] = &(bridges[CKT_BRIDGE_X_0Input0]); + island->bridges[I1_BRIDGE_In_0] = &(bridges[CKT_BRIDGE_In_0]); + island->bridges[I1_BRIDGE_In_0Output1] = &(bridges[CKT_BRIDGE_In_0Output1]); + + /* + * Initialize Island 1: register Island 1 as a reader on + * bridge X_0Input0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I1; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER2_I1; + + bridge = &(bridges[CKT_BRIDGE_X_0Input0]); + bridge->reader = &(islands[CKT_I1]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 1: register Island 1 as a reader on + * bridge In_0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I1; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER2_I1; + + bridge = &(bridges[CKT_BRIDGE_In_0]); + bridge->reader = &(islands[CKT_I1]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 1: register Island 1 as a writer on + * bridge In_0Output1. + */ + bridgeWriterCheckerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1 * sizeof(VReoCheckerFn *) ); + bridgeWriterDoerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1 * sizeof(VReoDoerFn *) ); + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I1; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I1; + + bridge = &(bridges[CKT_BRIDGE_In_0Output1]); + bridge->writer = &(islands[CKT_I1]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* Initialize Island 2. */ + island = &(islands[CKT_I2]); + + island->numCheckerFns = 1; + island->numBridges = 3; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I2; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I2; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + island->bridges[I2_BRIDGE_In_1] = &(bridges[CKT_BRIDGE_In_1]); + island->bridges[I2_BRIDGE_X_1Input0] = &(bridges[CKT_BRIDGE_X_1Input0]); + island->bridges[I2_BRIDGE_In_1Output0] = &(bridges[CKT_BRIDGE_In_1Output0]); + + /* + * Initialize Island 2: register Island 2 as a reader on + * bridge In_1. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I2; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER3_I2; + + bridge = &(bridges[CKT_BRIDGE_In_1]); + bridge->reader = &(islands[CKT_I2]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 2: register Island 2 as a reader on + * bridge X_1Input0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I2; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER3_I2; + + bridge = &(bridges[CKT_BRIDGE_X_1Input0]); + bridge->reader = &(islands[CKT_I2]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 2: register Island 2 as a writer on + * bridge In_1Output0. + */ + bridgeWriterCheckerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0 * sizeof(VReoCheckerFn *) ); + bridgeWriterDoerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0 * sizeof(VReoDoerFn *) ); + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I2; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER3_I2; + + bridge = &(bridges[CKT_BRIDGE_In_1Output0]); + bridge->writer = &(islands[CKT_I2]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* Initialize O1Island 0. */ + o1island = &(o1islands[CKT_O1I0]); + + o1island->numBridges = 3; + o1island->bridges = PR_WL__malloc(o1island->numBridges * sizeof(VReoBridge *)); + 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]); + + /* + * Initialize O1Island 0: create queues (queue 0 holds puts of input + * bridges; queue 1 holds gets of the output bridge). + */ + offerQ0 = makePrivQ(); + offerQ1 = makePrivQ(); + + partnerQStruct0 = PR_WL__malloc( sizeof(VReoPartnerQStruct) ); + partnerQStruct0->numQs = 1; + partnerQStruct0->partnerQs = PR_WL__malloc( partnerQStruct0->numQs * sizeof(PrivQueueStruc *) ); + partnerQStruct0->doerFns = PR_WL__malloc( partnerQStruct0->numQs * sizeof(VReoO1islandDoerFn) ); + partnerQStruct0->doerFns[0] = &o1islandReadBridgeToWrittenBridgeDoer; + partnerQStruct0->partnerQs[0] = offerQ1; + + partnerQStruct1 = PR_WL__malloc( sizeof(VReoPartnerQStruct) ); + partnerQStruct1->numQs = 1; + partnerQStruct1->partnerQs = PR_WL__malloc( partnerQStruct1->numQs * sizeof(PrivQueueStruc *) ); + partnerQStruct1->doerFns = PR_WL__malloc( partnerQStruct1->numQs * sizeof(VReoO1islandDoerFn) ); + partnerQStruct1->doerFns[0] = &o1islandReadBridgeToWrittenBridgeDoer; + partnerQStruct1->partnerQs[0] = offerQ0; + + /* + * Initialize O1Island 0: register O1Island 0 as a reader on + * bridge Out_0Input1. + */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input1]); + bridge->reader = &(o1island); + bridge->readerType = O1island; + bridge->readerPartnerQStruct = partnerQStruct0; + bridge->readerOfferQ = offerQ0; + + /* + * Initialize O1Island 0: register O1Island 0 as a reader on + * bridge Out_0Input0. + */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input0]); + bridge->reader = &(o1island); + bridge->readerType = O1island; + bridge->readerPartnerQStruct = partnerQStruct0; + bridge->readerOfferQ = offerQ0; + + /* + * Initialize O1Island 0: register O1Island 0 as the only + * writer on bridge Out_0. + */ + bridge = &(bridges[CKT_BRIDGE_Out_0]); + bridge->writer = &(o1island); + bridge->writerType = O1island; + bridge->writerPartnerQStruct = partnerQStruct1; + bridge->writerOfferQ = offerQ1; + + // + // INITIALIZE QUEUES + // + + /* Assumption: (writerType != NULL) implies (writerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input1]); + if (bridge->writerType != None && bridge->bridgeIsFull) + writePrivQ( bridge, bridge->readerOfferQ ); + + /* Assumption: (writerType != NULL) implies (writerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input0]); + if (bridge->writerType != None && bridge->bridgeIsFull) + writePrivQ( bridge, bridge->readerOfferQ ); + + /* Assumption: (readerType != NULL) implies (readerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0]); + if (bridge->readerType != None && !bridge->bridgeIsFull) + writePrivQ( bridge, bridge->writerOfferQ ); + + // + // INITIALIZE CIRCUIT + // + + /* Initialize circuit. */ + circuit->numIslands = NUM_ISLANDS; + circuit->numO1islands = NUM_O1ISLANDS; + circuit->numBridges = NUM_BRIDGES; + circuit->islands = islands; + circuit->o1islands = o1islands; + circuit->bridges = bridges; + circuit->boundaryBridges = boundaryBridges; + circuit->VPs = NULL; + + /* Return. */ + return (circuit); +} + +void create_VPs_w_init_and_connect( VReoCircuit *circuit, void **initDatums, + SlaveVP *animVP) + { + /* Declare variables. */ + VReoBridge **boundaryBridges, *bridges, **bridgesForVP; + SlaveVP **VPs; + + VPParams *prodParams; + VPParams *consParams; + + /* Initialize (boundary) bridges. */ + boundaryBridges = circuit->boundaryBridges; + bridges = circuit->bridges; + + /* Allocate memory for VPs. */ + VPs = PR_WL__malloc(NUM_VPs * sizeof(SlaveVP *)); + + /* Create Producer VP 0. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD0]; + + prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + prodParams->initData = initDatums[CKT_VP_PROD0]; + + VPs[CKT_VP_PROD0] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); + + boundaryBridges[CKT_VP_PROD0]->writer = VPs[CKT_VP_PROD0]; + boundaryBridges[CKT_VP_PROD0]->writerType = VP; + + /* Create Producer VP 1. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD1]; + + prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + prodParams->initData = initDatums[CKT_VP_PROD1]; + + VPs[CKT_VP_PROD1] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); + + boundaryBridges[CKT_VP_PROD1]->writer = VPs[CKT_VP_PROD1]; + boundaryBridges[CKT_VP_PROD1]->writerType = VP; + + /* Create Producer VP 2. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD2]; + + prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + prodParams->initData = initDatums[CKT_VP_PROD2]; + + 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 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; + + /* Create Consumer VP. */ + consParams = PR_WL__malloc(sizeof(VPParams)); + + bridgesForVP = PR_WL__malloc(2 * sizeof(VReoBridge *)); + bridgesForVP[0] = &(bridges[CKT_BRIDGE_Out_0]); + bridgesForVP[1] = &(bridges[CKT_BRIDGE_Out_1]); + + consParams->inBridges = bridgesForVP; + consParams->outBridges = NULL; + consParams->initData = initDatums[CKT_VP_CONS0]; + + VPs[CKT_VP_CONS0] = VReo__create_VP(&consumer_Fn, consParams, circuit, animVP); + + bridges[CKT_BRIDGE_Out_0].reader = VPs[CKT_VP_CONS0]; + bridges[CKT_BRIDGE_Out_1].reader = VPs[CKT_VP_CONS0]; + bridges[CKT_BRIDGE_Out_0].readerType = VP; + bridges[CKT_BRIDGE_Out_1].readerType = VP; + + /* Start circuit. */ + VReo__start_circuit(circuit, animVP); +} + +//============================================================================== + +/* Checkers for Island 0. */ + +bool32 Checker_0__I0( VReoIsland *island ) { + VReoBridge *bridgeBroad_0Output1, *bridgeBroad_0Output2, *bridgeOut_1, *bridgeBroad_0; + bool32 satisfied; + + bridgeBroad_0Output1 = (island->bridges)[I0_BRIDGE_Broad_0Output1]; + bridgeBroad_0Output2 = (island->bridges)[I0_BRIDGE_Broad_0Output2]; + 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; + return satisfied; +} + +/* Checkers for Island 1. */ + +bool32 Checker_0__I1( VReoIsland *island ) { + VReoBridge *bridgeX_0Input0, *bridgeIn_0, *bridgeIn_0Output1; + bool32 satisfied; + + bridgeX_0Input0 = (island->bridges)[I1_BRIDGE_X_0Input0]; + bridgeIn_0 = (island->bridges)[I1_BRIDGE_In_0]; + bridgeIn_0Output1 = (island->bridges)[I1_BRIDGE_In_0Output1]; + satisfied = READY_FOR_READ_BRIDGE_X_0Input0 && READY_FOR_READ_BRIDGE_In_0 && READY_FOR_WRITE_BRIDGE_In_0Output1; + return satisfied; +} + +/* Checkers for Island 2. */ + +bool32 Checker_0__I2( VReoIsland *island ) { + VReoBridge *bridgeIn_1Output0, *bridgeIn_1, *bridgeX_1Input0; + bool32 satisfied; + + bridgeIn_1Output0 = (island->bridges)[I2_BRIDGE_In_1Output0]; + bridgeIn_1 = (island->bridges)[I2_BRIDGE_In_1]; + bridgeX_1Input0 = (island->bridges)[I2_BRIDGE_X_1Input0]; + satisfied = READY_FOR_READ_BRIDGE_In_1 && READY_FOR_READ_BRIDGE_X_1Input0 && READY_FOR_WRITE_BRIDGE_In_1Output0; + return satisfied; +} + +//============================================================================== + +/* Declaration of auxiliary doers. */ + +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_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_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_Broad_0Output2( VReoBridge *bridge ); +void Auxdoer_for_bridge_X_1Input0( VReoBridge *bridge ); + +/* Doers for Island 0. */ + +void Doer_0__I0( VReoIsland *island ) { + VReoBridge *bridgeBroad_0Output1, *bridgeBroad_0Output2, *bridgeOut_1, *bridgeBroad_0; + + /* Initialize bridges. */ + bridgeBroad_0Output1 = (island->bridges)[I0_BRIDGE_Broad_0Output1]; + bridgeBroad_0Output2 = (island->bridges)[I0_BRIDGE_Broad_0Output2]; + bridgeOut_1 = (island->bridges)[I0_BRIDGE_Out_1]; + bridgeBroad_0 = (island->bridges)[I0_BRIDGE_Broad_0]; + + /* Distribute data. */ + bridgeBroad_0Output1->buffer = bridgeBroad_0->buffer; + bridgeBroad_0Output2->buffer = bridgeBroad_0->buffer; + bridgeOut_1->buffer = bridgeBroad_0->buffer; + + /* Update bridge status. */ + bridgeBroad_0->bridgeIsFull = FALSE; + bridgeBroad_0Output1->bridgeIsFull = TRUE; + bridgeBroad_0Output2->bridgeIsFull = TRUE; + bridgeOut_1->bridgeIsFull = TRUE; + + /* Prepare reader VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeOut_1->waitingReaderVP, VReo_MAGIC_NUMBER); + bridgeOut_1->waitingReaderVP->dataRetFromReq = bridgeOut_1->buffer; + bridgeOut_1->waitingReaderVP = NULL; + bridgeOut_1->bridgeIsFull = FALSE; + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeBroad_0->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeBroad_0->waitingWriterVP = NULL; + + /* Call auxiliary doers to complete this transition. */ + Auxdoer_for_bridge_Broad_0Output1(bridgeBroad_0Output1); + Auxdoer_for_bridge_Broad_0Output2(bridgeBroad_0Output2); + Auxdoer_for_bridge_Out_1(bridgeOut_1); + Auxdoer_for_bridge_Broad_0(bridgeBroad_0); +} + +/* Doers for Island 1. */ + +void Doer_0__I1( VReoIsland *island ) { + VReoBridge *bridgeX_0Input0, *bridgeIn_0, *bridgeIn_0Output1; + + /* Initialize bridges. */ + bridgeX_0Input0 = (island->bridges)[I1_BRIDGE_X_0Input0]; + bridgeIn_0 = (island->bridges)[I1_BRIDGE_In_0]; + bridgeIn_0Output1 = (island->bridges)[I1_BRIDGE_In_0Output1]; + + /* Distribute data. */ + bridgeIn_0Output1->buffer = bridgeIn_0->buffer; + + /* Update bridge status. */ + bridgeX_0Input0->bridgeIsFull = FALSE; + bridgeIn_0->bridgeIsFull = FALSE; + bridgeIn_0Output1->bridgeIsFull = TRUE; + + /* Prepare reader VPs. */ + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeIn_0->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeIn_0->waitingWriterVP = NULL; + + /* Call auxiliary doers to complete this transition. */ + Auxdoer_for_bridge_X_0Input0(bridgeX_0Input0); + Auxdoer_for_bridge_In_0(bridgeIn_0); + Auxdoer_for_bridge_In_0Output1(bridgeIn_0Output1); +} + +/* Doers for Island 2. */ + +void Doer_0__I2( VReoIsland *island ) { + VReoBridge *bridgeIn_1Output0, *bridgeIn_1, *bridgeX_1Input0; + + /* Initialize bridges. */ + bridgeIn_1Output0 = (island->bridges)[I2_BRIDGE_In_1Output0]; + bridgeIn_1 = (island->bridges)[I2_BRIDGE_In_1]; + bridgeX_1Input0 = (island->bridges)[I2_BRIDGE_X_1Input0]; + + /* Distribute data. */ + bridgeIn_1Output0->buffer = bridgeIn_1->buffer; + + /* Update bridge status. */ + bridgeIn_1->bridgeIsFull = FALSE; + bridgeX_1Input0->bridgeIsFull = FALSE; + bridgeIn_1Output0->bridgeIsFull = TRUE; + + /* Prepare reader VPs. */ + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeIn_1->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeIn_1->waitingWriterVP = NULL; + + /* Call auxiliary doers to complete this transition. */ + Auxdoer_for_bridge_In_1Output0(bridgeIn_1Output0); + Auxdoer_for_bridge_In_1(bridgeIn_1); + Auxdoer_for_bridge_X_1Input0(bridgeX_1Input0); +} + +//============================================================================== + +/* Auxiliary doers for input bridges. */ + +void Auxdoer_for_bridge_Broad_0( VReoBridge *bridge ) { + ; +} + +void Auxdoer_for_bridge_In_0( VReoBridge *bridge ) { + ; +} + +void Auxdoer_for_bridge_In_1( VReoBridge *bridge ) { + ; +} + +/* Auxiliary doers for output bridges. */ + +void Auxdoer_for_bridge_Out_0( VReoBridge *bridge ) { + ; +} + +void Auxdoer_for_bridge_Out_1( VReoBridge *bridge ) { + ; +} + +/* Auxiliary doers for FIFO bridges. */ + +void Auxdoer_for_bridge_In_0Output1( 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_0Output1( 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_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_In_1Output0( 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_0Output2( 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_1Input0( 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 ); + } +} diff -r 1b61e0c00512 -r a6b3cab179b1 Reo__Matrix_Mult/k_4/Circuit.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Reo__Matrix_Mult/k_4/Circuit.c Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,1528 @@ +#include +#include +#include "VReo__Test_App.h" +#include "Circuit.h" + +VReoCircuit *create_circuit(SlaveVP *animVP) { + + /* Declare variables. */ + VReoCircuit *circuit; + VReoBridge *bridge, *bridges, **boundaryBridges; + VReoIsland *islands, *island; + VReoO1island *o1islands, *o1island; + VReoCheckerFn *bridgeReaderCheckerFns, *bridgeWriterCheckerFns; + VReoDoerFn *bridgeReaderDoerFns, *bridgeWriterDoerFns; + PrivQueueStruc *offerQ0, *offerQ1; + VReoPartnerQStruct *partnerQStruct0, *partnerQStruct1; + + /* Allocate memory for bridges, islands, and the circuit. */ + bridges = PR_WL__malloc(NUM_BRIDGES * sizeof(VReoBridge)); + islands = PR_WL__malloc((NUM_ISLANDS == 0 ? 1 : NUM_ISLANDS) * sizeof(VReoIsland)); + o1islands = PR_WL__malloc((NUM_O1ISLANDS == 0 ? 1 : NUM_O1ISLANDS) * sizeof(VReoO1island)); + circuit = (VReoCircuit *) PR_WL__malloc(sizeof(VReoCircuit)); + + // + // INITIALIZE BRIDGES + // + + /* Initialize bridge Broad_0. */ + bridge = &(bridges[CKT_BRIDGE_Broad_0]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge In_0. */ + bridge = &(bridges[CKT_BRIDGE_In_0]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge In_1. */ + bridge = &(bridges[CKT_BRIDGE_In_1]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + 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; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge Out_1. */ + bridge = &(bridges[CKT_BRIDGE_Out_1]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO0. */ + bridge = &(bridges[CKT_BRIDGE_FIFO0]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE;bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO1. */ + bridge = &(bridges[CKT_BRIDGE_FIFO1]); + bridge->buffer = malloc(1); + bridge->bridgeIsFull = TRUE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO2. */ + bridge = &(bridges[CKT_BRIDGE_FIFO2]); + bridge->buffer = NULL; + bridge->bridgeIsFull = FALSE;bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + bridge->readerPartnerQStruct = NULL; + bridge->writerPartnerQStruct = NULL; + + /* Initialize bridge FIFO3. */ + bridge = &(bridges[CKT_BRIDGE_FIFO3]); + bridge->buffer = malloc(1); + bridge->bridgeIsFull = TRUE; + bridge->waitingReaderVP = NULL; + bridge->waitingWriterVP = NULL; + 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_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 + // + + /* Initialize Island 0. */ + island = &(islands[CKT_I0]); + + island->numCheckerFns = 1; + island->numBridges = 6; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I0; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I0; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + 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 + * bridge Broad_0. + */ + 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) &CHECKER2_I0; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER2_I0; + + bridge = &(bridges[CKT_BRIDGE_Broad_0]); + bridge->reader = &(islands[CKT_I0]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 0: register Island 0 as a writer on + * bridge Broad_0Output1. + */ + 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) &CHECKER2_I0; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I0; + + bridge = &(bridges[CKT_BRIDGE_Broad_0Output1]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output1; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* + * Initialize Island 0: register Island 0 as a writer on + * bridge Broad_0Output2. + */ + 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) &CHECKER2_I0; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I0; + + bridge = &(bridges[CKT_BRIDGE_Broad_0Output2]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Broad_0Output2; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* + * 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) &CHECKER2_I0; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I0; + + bridge = &(bridges[CKT_BRIDGE_Out_1]); + bridge->writer = &(islands[CKT_I0]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I0_CHECKERS_INVOLVE_BRIDGE_Out_1; + 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]); + + island->numCheckerFns = 1; + island->numBridges = 3; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I1; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I1; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + island->bridges[I1_BRIDGE_X_0Input0] = &(bridges[CKT_BRIDGE_X_0Input0]); + island->bridges[I1_BRIDGE_In_0] = &(bridges[CKT_BRIDGE_In_0]); + island->bridges[I1_BRIDGE_In_0Output1] = &(bridges[CKT_BRIDGE_In_0Output1]); + + /* + * Initialize Island 1: register Island 1 as a reader on + * bridge X_0Input0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I1; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER2_I1; + + bridge = &(bridges[CKT_BRIDGE_X_0Input0]); + bridge->reader = &(islands[CKT_I1]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I1_CHECKERS_INVOLVE_BRIDGE_X_0Input0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 1: register Island 1 as a reader on + * bridge In_0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I1; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER2_I1; + + bridge = &(bridges[CKT_BRIDGE_In_0]); + bridge->reader = &(islands[CKT_I1]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 1: register Island 1 as a writer on + * bridge In_0Output1. + */ + bridgeWriterCheckerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1 * sizeof(VReoCheckerFn *) ); + bridgeWriterDoerFns = PR_WL__malloc( NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1 * sizeof(VReoDoerFn *) ); + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER2_I1; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER2_I1; + + bridge = &(bridges[CKT_BRIDGE_In_0Output1]); + bridge->writer = &(islands[CKT_I1]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1; + bridge->writerCheckerFns = (VReoCheckerFn *) bridgeWriterCheckerFns; + bridge->writerDoerFns = (VReoDoerFn *) bridgeWriterDoerFns; + + /* Initialize Island 2. */ + island = &(islands[CKT_I2]); + + island->numCheckerFns = 1; + island->numBridges = 3; + + island->checkerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoCheckerFn)); + island->checkerFns[0] = &Checker_0__I2; + + island->doerFns = PR_WL__malloc(island->numCheckerFns * sizeof(VReoDoerFn)); + island->doerFns[0] = &Doer_0__I2; + + island->bridges = PR_WL__malloc(island->numBridges * sizeof(VReoBridge *)); + island->bridges[I2_BRIDGE_In_1] = &(bridges[CKT_BRIDGE_In_1]); + island->bridges[I2_BRIDGE_X_1Input0] = &(bridges[CKT_BRIDGE_X_1Input0]); + island->bridges[I2_BRIDGE_In_1Output0] = &(bridges[CKT_BRIDGE_In_1Output0]); + + /* + * Initialize Island 2: register Island 2 as a reader on + * bridge In_1. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I2; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER3_I2; + + bridge = &(bridges[CKT_BRIDGE_In_1]); + bridge->reader = &(islands[CKT_I2]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 2: register Island 2 as a reader on + * bridge X_1Input0. + */ + bridgeReaderCheckerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0 * sizeof(VReoCheckerFn *) ); + bridgeReaderDoerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0 * sizeof(VReoDoerFn *) ); + bridgeReaderCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I2; + bridgeReaderDoerFns[0] = (VReoDoerFn) &DOER3_I2; + + bridge = &(bridges[CKT_BRIDGE_X_1Input0]); + bridge->reader = &(islands[CKT_I2]); + bridge->readerType = Island; + bridge->numReaderCheckerFns = NUM_I2_CHECKERS_INVOLVE_BRIDGE_X_1Input0; + bridge->readerCheckerFns = (VReoCheckerFn *) bridgeReaderCheckerFns; + bridge->readerDoerFns = (VReoDoerFn *) bridgeReaderDoerFns; + + /* + * Initialize Island 2: register Island 2 as a writer on + * bridge In_1Output0. + */ + bridgeWriterCheckerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0 * sizeof(VReoCheckerFn *) ); + bridgeWriterDoerFns = PR_WL__malloc( NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0 * sizeof(VReoDoerFn *) ); + bridgeWriterCheckerFns[0] = (VReoCheckerFn) &CHECKER3_I2; + bridgeWriterDoerFns[0] = (VReoDoerFn) &DOER3_I2; + + bridge = &(bridges[CKT_BRIDGE_In_1Output0]); + bridge->writer = &(islands[CKT_I2]); + bridge->writerType = Island; + bridge->numWriterCheckerFns = NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0; + 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 = 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]); + + /* + * Initialize O1Island 0: create queues (queue 0 holds puts of input + * bridges; queue 1 holds gets of the output bridge). + */ + offerQ0 = makePrivQ(); + offerQ1 = makePrivQ(); + + partnerQStruct0 = PR_WL__malloc( sizeof(VReoPartnerQStruct) ); + partnerQStruct0->numQs = 1; + partnerQStruct0->partnerQs = PR_WL__malloc( partnerQStruct0->numQs * sizeof(PrivQueueStruc *) ); + partnerQStruct0->doerFns = PR_WL__malloc( partnerQStruct0->numQs * sizeof(VReoO1islandDoerFn) ); + partnerQStruct0->doerFns[0] = &o1islandReadBridgeToWrittenBridgeDoer; + partnerQStruct0->partnerQs[0] = offerQ1; + + partnerQStruct1 = PR_WL__malloc( sizeof(VReoPartnerQStruct) ); + partnerQStruct1->numQs = 1; + partnerQStruct1->partnerQs = PR_WL__malloc( partnerQStruct1->numQs * sizeof(PrivQueueStruc *) ); + partnerQStruct1->doerFns = PR_WL__malloc( partnerQStruct1->numQs * sizeof(VReoO1islandDoerFn) ); + partnerQStruct1->doerFns[0] = &o1islandReadBridgeToWrittenBridgeDoer; + partnerQStruct1->partnerQs[0] = offerQ0; + + /* + * 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]); + bridge->reader = &(o1island); + bridge->readerType = O1island; + bridge->readerPartnerQStruct = partnerQStruct0; + bridge->readerOfferQ = offerQ0; + + /* + * Initialize O1Island 0: register O1Island 0 as a reader on + * bridge Out_0Input0. + */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input0]); + bridge->reader = &(o1island); + bridge->readerType = O1island; + bridge->readerPartnerQStruct = partnerQStruct0; + bridge->readerOfferQ = offerQ0; + + /* + * Initialize O1Island 0: register O1Island 0 as the only + * writer on bridge Out_0. + */ + bridge = &(bridges[CKT_BRIDGE_Out_0]); + bridge->writer = &(o1island); + bridge->writerType = O1island; + bridge->writerPartnerQStruct = partnerQStruct1; + bridge->writerOfferQ = offerQ1; + + // + // INITIALIZE QUEUES + // + + /* Assumption: (writerType != NULL) implies (writerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input3]); + if (bridge->writerType != NULL && bridge->bridgeIsFull) + writePrivQ( bridge, bridge->readerOfferQ ); + + /* Assumption: (writerType != NULL) implies (writerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input2]); + if (bridge->writerType != NULL && bridge->bridgeIsFull) + writePrivQ( bridge, bridge->readerOfferQ ); + + /* Assumption: (writerType != NULL) implies (writerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input1]); + if (bridge->writerType != NULL && bridge->bridgeIsFull) + writePrivQ( bridge, bridge->readerOfferQ ); + + /* Assumption: (writerType != NULL) implies (writerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0Input0]); + if (bridge->writerType != NULL && bridge->bridgeIsFull) + writePrivQ( bridge, bridge->readerOfferQ ); + + /* Assumption: (readerType != NULL) implies (readerType != VP) */ + bridge = &(bridges[CKT_BRIDGE_Out_0]); + if (bridge->readerType != NULL && !bridge->bridgeIsFull) + writePrivQ( bridge, bridge->writerOfferQ ); + + // + // INITIALIZE CIRCUIT + // + + /* Initialize circuit. */ + circuit->numIslands = NUM_ISLANDS; + circuit->numO1islands = NUM_O1ISLANDS; + circuit->numBridges = NUM_BRIDGES; + circuit->islands = islands; + circuit->o1islands = o1islands; + circuit->bridges = bridges; + circuit->boundaryBridges = boundaryBridges; + circuit->VPs = NULL; + + /* Return. */ + return (circuit); +} + +void create_VPs_and_connect(VReoCircuit *circuit, SlaveVP *animVP) { + + /* Declare variables. */ + VReoBridge **boundaryBridges, *bridges, **bridgesForVP; + SlaveVP **VPs; + + TestAppProducerParams *prodParams; + TestAppConsumerParams *consParams; + + /* Initialize (boundary) bridges. */ + boundaryBridges = circuit->boundaryBridges; + bridges = circuit->bridges; + + /* Allocate memory for VPs. */ + VPs = PR_WL__malloc(NUM_VPs * sizeof(SlaveVP *)); + + /* Create Producer VP 0. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD0]; + + prodParams = PR_WL__malloc(sizeof(TestAppProducerParams)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + + VPs[CKT_VP_PROD0] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); + + boundaryBridges[CKT_VP_PROD0]->writer = VPs[CKT_VP_PROD0]; + boundaryBridges[CKT_VP_PROD0]->writerType = VP; + + /* Create Producer VP 1. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD1]; + + prodParams = PR_WL__malloc(sizeof(TestAppProducerParams)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + + VPs[CKT_VP_PROD1] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP); + + boundaryBridges[CKT_VP_PROD1]->writer = VPs[CKT_VP_PROD1]; + boundaryBridges[CKT_VP_PROD1]->writerType = VP; + + /* Create Producer VP 2. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD2]; + + prodParams = PR_WL__malloc(sizeof(TestAppProducerParams)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + + 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 Producer VP 3. */ + bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *)); + bridgesForVP[0] = boundaryBridges[CKT_VP_PROD3]; + + prodParams = PR_WL__malloc(sizeof(TestAppProducerParams)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + + 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(TestAppProducerParams)); + prodParams->inBridges = NULL; + prodParams->outBridges = bridgesForVP; + + 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 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 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; + + /* Create Consumer VP. */ + consParams = PR_WL__malloc(sizeof(TestAppConsumerParams)); + + bridgesForVP = PR_WL__malloc(2 * sizeof(VReoBridge *)); + bridgesForVP[0] = &(bridges[CKT_BRIDGE_Out_0]); + bridgesForVP[1] = &(bridges[CKT_BRIDGE_Out_1]); + + consParams->inBridges = bridgesForVP; + consParams->outBridges = NULL; + + VPs[CKT_VP_CONS0] = VReo__create_VP(&consumer_Fn, consParams, circuit, animVP); + + bridges[CKT_BRIDGE_Out_0].reader = VPs[CKT_VP_CONS0]; + bridges[CKT_BRIDGE_Out_1].reader = VPs[CKT_VP_CONS0]; + bridges[CKT_BRIDGE_Out_0].readerType = VP; + bridges[CKT_BRIDGE_Out_1].readerType = VP; + + /* Start circuit. */ + VReo__start_circuit(circuit, animVP); +} + +//============================================================================== + +/* Checkers for Island 0. */ + +bool32 Checker_0__I0( VReoIsland *island ) { + 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]; + 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; +} + +/* Checkers for Island 1. */ + +bool32 Checker_0__I1( VReoIsland *island ) { + VReoBridge *bridgeX_0Input0, *bridgeIn_0, *bridgeIn_0Output1; + bool32 satisfied; + + bridgeX_0Input0 = (island->bridges)[I1_BRIDGE_X_0Input0]; + bridgeIn_0 = (island->bridges)[I1_BRIDGE_In_0]; + bridgeIn_0Output1 = (island->bridges)[I1_BRIDGE_In_0Output1]; + satisfied = READY_FOR_READ_BRIDGE_X_0Input0 && READY_FOR_READ_BRIDGE_In_0 && READY_FOR_WRITE_BRIDGE_In_0Output1; + return satisfied; +} + +/* Checkers for Island 2. */ + +bool32 Checker_0__I2( VReoIsland *island ) { + VReoBridge *bridgeIn_1Output0, *bridgeIn_1, *bridgeX_1Input0; + bool32 satisfied; + + bridgeIn_1Output0 = (island->bridges)[I2_BRIDGE_In_1Output0]; + bridgeIn_1 = (island->bridges)[I2_BRIDGE_In_1]; + bridgeX_1Input0 = (island->bridges)[I2_BRIDGE_X_1Input0]; + satisfied = READY_FOR_READ_BRIDGE_In_1 && READY_FOR_READ_BRIDGE_X_1Input0 && READY_FOR_WRITE_BRIDGE_In_1Output0; + 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. */ + +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_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_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, *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); + bridgeOut_1->waitingReaderVP->dataRetFromReq = bridgeOut_1->buffer; + bridgeOut_1->waitingReaderVP = NULL; + bridgeOut_1->bridgeIsFull = FALSE; + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeBroad_0->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeBroad_0->waitingWriterVP = NULL; + + /* 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. */ + +void Doer_0__I1( VReoIsland *island ) { + VReoBridge *bridgeX_0Input0, *bridgeIn_0, *bridgeIn_0Output1; + + /* Initialize bridges. */ + bridgeX_0Input0 = (island->bridges)[I1_BRIDGE_X_0Input0]; + bridgeIn_0 = (island->bridges)[I1_BRIDGE_In_0]; + bridgeIn_0Output1 = (island->bridges)[I1_BRIDGE_In_0Output1]; + + /* Distribute data. */ + bridgeIn_0Output1->buffer = bridgeIn_0->buffer; + + /* Update bridge status. */ + bridgeX_0Input0->bridgeIsFull = FALSE; + bridgeIn_0->bridgeIsFull = FALSE; + bridgeIn_0Output1->bridgeIsFull = TRUE; + + /* Prepare reader VPs. */ + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeIn_0->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeIn_0->waitingWriterVP = NULL; + + /* Call auxiliary doers to complete this transition. */ + Auxdoer_for_bridge_X_0Input0(bridgeX_0Input0); + Auxdoer_for_bridge_In_0(bridgeIn_0); + Auxdoer_for_bridge_In_0Output1(bridgeIn_0Output1); +} + +/* Doers for Island 2. */ + +void Doer_0__I2( VReoIsland *island ) { + VReoBridge *bridgeIn_1Output0, *bridgeIn_1, *bridgeX_1Input0; + + /* Initialize bridges. */ + bridgeIn_1Output0 = (island->bridges)[I2_BRIDGE_In_1Output0]; + bridgeIn_1 = (island->bridges)[I2_BRIDGE_In_1]; + bridgeX_1Input0 = (island->bridges)[I2_BRIDGE_X_1Input0]; + + /* Distribute data. */ + bridgeIn_1Output0->buffer = bridgeIn_1->buffer; + + /* Update bridge status. */ + bridgeIn_1->bridgeIsFull = FALSE; + bridgeX_1Input0->bridgeIsFull = FALSE; + bridgeIn_1Output0->bridgeIsFull = TRUE; + + /* Prepare reader VPs. */ + + /* Prepare writer VPs. */ + PR_PI__make_slave_ready_for_lang(bridgeIn_1->waitingWriterVP, VReo_MAGIC_NUMBER); + bridgeIn_1->waitingWriterVP = NULL; + + /* Call auxiliary doers to complete this transition. */ + Auxdoer_for_bridge_In_1Output0(bridgeIn_1Output0); + Auxdoer_for_bridge_In_1(bridgeIn_1); + 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. */ + +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 ) { + ; +} + +/* Auxiliary doers for output bridges. */ + +void Auxdoer_for_bridge_Out_0( VReoBridge *bridge ) { + ; +} + +void Auxdoer_for_bridge_Out_1( VReoBridge *bridge ) { + ; +} + +/* Auxiliary doers for FIFO bridges. */ + +void Auxdoer_for_bridge_In_0Output1( 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_0Input3( 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_0Output1( 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_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_In_1Output0( 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_0Input2( 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_0Output2( 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_1Input0( 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_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 a6b3cab179b1 Reo__Matrix_Mult/k_4/Circuit.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Reo__Matrix_Mult/k_4/Circuit.h Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,244 @@ +#ifndef _Circuit_App1_H +#define _Circuit_App1_H + +//#include "PR_impl/PR.h" +//#include "VReo_impl/VReo.h" +#include +#include + +//============================================================================== + +/* Counts. */ +#define NUM_VPs 7 +#define NUM_PROD 5 +#define NUM_ISLANDS 5 +#define NUM_O1ISLANDS 1 +#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 (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 + +/* Bridges in circuit. */ +#define CKT_BRIDGE_Broad_0 0 +#define CKT_BRIDGE_In_0 1 +#define CKT_BRIDGE_In_1 2 +#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 (7+0) +#define CKT_BRIDGE_In_0Output1 (7+0) +#define CKT_BRIDGE_Out_0Input3 (7+0) + +#define CKT_BRIDGE_FIFO1 (7+1) +#define CKT_BRIDGE_Broad_0Output1 (7+1) +#define CKT_BRIDGE_X_0Input0 (7+1) + +#define CKT_BRIDGE_FIFO2 (7+2) +#define CKT_BRIDGE_In_1Output0 (7+2) +#define CKT_BRIDGE_Out_0Input2 (7+2) + +#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_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 +#define I1_BRIDGE_In_0 1 +#define I1_BRIDGE_In_0Output1 2 + +/* Bridges in Island 2. */ +#define I2_BRIDGE_In_1Output0 0 +#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_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_0Input3 bridgeOut_0Input3->bridgeIsFull + +/* Readiness of bridges of FIFO 1. */ +#define READY_FOR_WRITE_BRIDGE_Broad_0Output1 !bridgeBroad_0Output1->bridgeIsFull +#define READY_FOR_READ_BRIDGE_X_0Input0 bridgeX_0Input0->bridgeIsFull + +/* Readiness of bridges of FIFO 2. */ +#define READY_FOR_WRITE_BRIDGE_In_1Output0 !bridgeIn_1Output0->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 +#define NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0 1 +#define NUM_I1_CHECKERS_INVOLVE_BRIDGE_In_0Output1 1 + +/* Number of checkers per bridge in Island 2. */ +#define NUM_I2_CHECKERS_INVOLVE_BRIDGE_In_1Output0 1 +#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 CHECKER2_I0 Checker_0__I0 +#define DOER2_I0 Doer_0__I0 + +/* Checkers and doers for Island 1. */ +#define CHECKER2_I1 Checker_0__I1 +#define DOER2_I1 Doer_0__I1 + +/* Checkers and doers for Island 2. */ +#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. */ +void create_VPs_and_connect( VReoCircuit *circuit, SlaveVP *animVP ); + +/* Create circuit. */ +VReoCircuit * create_circuit( SlaveVP *animVP ); + +/* Checkers of Island 0. */ +bool32 Checker_0__I0( VReoIsland *island ); + +/* Checkers of Island 1. */ +bool32 Checker_0__I1( VReoIsland *island ); + +/* 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 ); + +/* Doers of Island 1. */ +void Doer_0__I1( VReoIsland *island ); + +/* 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 a6b3cab179b1 main.c --- a/main.c Wed Feb 19 09:27:10 2014 -0800 +++ b/main.c Sat Jul 12 20:21:47 2014 +0200 @@ -1,4 +1,9 @@ -#include +#ifdef RTEMS + +#include + +#endif + #include #include @@ -9,10 +14,9 @@ // ============================================================================= -int NUM_ITER; +int numIterations; - -int main(int argc, char **argv) +int main(int argc, char **argv) { Matrix *leftMatrix, *rightMatrix, *resultMatrix; ParamBag *paramBag; MatrixMultWorkUnit **workUnits; @@ -24,10 +28,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(); @@ -57,32 +61,20 @@ * VPs, as they are created. *Need a dummy work unit added to end of work-unit array, to avoid a seg * fault -- just did a bad hack inside divideWork. - //Now, create params struct for each producer -- holds work unit - for( vpIdx=0; vpIdxinitData = prodParams; - vpParamsArray[vpIdx] = vpParams; - } - //create params for consumer - - vpParams = PR__malloc( sizeof(VPParams) ); - = malloc( sizeof(ProdParams) ); - - vpParams->initData = - vpParamsArray[vpIdx] = vpParams; //this last entry is for the consumer -*/ - + */ matrixMultProcess = PR__create_process( &matrix_mult__seed_Fn, workUnits ); 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(); - + + printf("Something with done..\n\n"); + usleep(1000); + fflush(stdout); + exit(0); } diff -r 1b61e0c00512 -r a6b3cab179b1 nb__Reo_matrix_mult/.dep.inc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/.dep.inc Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,5 @@ +# This code depends on make tool being used +DEPFILES=$(wildcard $(addsuffix .d, ${OBJECTFILES})) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -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 + $(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/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/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" - $(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 # 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 a6b3cab179b1 nb__Reo_matrix_mult/nbproject/Makefile-MEAS_ON.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-MEAS_ON.mk Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,126 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux-x86 +CND_DLIB_EXT=so +CND_CONF=MEAS_ON +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${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 + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-L../../PR__lib -Wl,-rpath,../../PR__lib -lprmalloc -lprparam -lprqueue -lm -lpr__ml__sharedmem__meas_on -lreo_opt1_ml_lib__meas_on + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ../../dist/bin/reo_matrix_mult__meas_on + +../../dist/bin/reo_matrix_mult__meas_on: ${OBJECTFILES} + ${MKDIR} -p ../../dist/bin + ${LINK.c} -o ../../dist/bin/reo_matrix_mult__meas_on ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/_ext/1472/Matrix_Mult.o: ../Matrix_Mult.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1472 + ${RM} "$@.d" + $(COMPILE.c) -g -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 -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 -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 -I../.. -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" + $(COMPILE.c) -g -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 -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 -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 -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c + +# Subprojects +.build-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} ../../dist/bin/reo_matrix_mult__meas_on + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -31,7 +31,7 @@ CONF=${DEFAULTCONF} # All Configurations -ALLCONFS=Debug Release Debug_Sequential +ALLCONFS=Debug Release Debug_Sequential MEAS_ON longjmp longjmp_rtems longjmp_ARM longjmp_X86_static # build diff -r 1b61e0c00512 -r a6b3cab179b1 nb__Reo_matrix_mult/nbproject/Makefile-longjmp.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-longjmp.mk Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,138 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=gcc +CXX=gcc +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux-x86 +CND_DLIB_EXT=so +CND_CONF=longjmp +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${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 + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-L../../PR__lib -Wl,-rpath,../../PR__lib -lprmalloc -lprparam -lprqueue -lm -Wl,-rpath,../../library__proto-runtime/nb__PR__ML__wDKU__lib/../../PR__lib -L../../library__proto-runtime/nb__PR__ML__wDKU__lib/../../PR__lib -lpr__ml__sharedmem__longjmp -Wl,-rpath,../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/../../PR__lib -L../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/../../PR__lib -lreo_opt1_ml_lib__longjmp + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ../../dist/bin/reo_matrix_mult__longjmp + +../../dist/bin/reo_matrix_mult__longjmp: ../../library__proto-runtime/nb__PR__ML__wDKU__lib/../../PR__lib/libpr__ml__sharedmem__longjmp.so + +../../dist/bin/reo_matrix_mult__longjmp: ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/../../PR__lib/libreo_opt1_ml_lib__longjmp.so + +../../dist/bin/reo_matrix_mult__longjmp: ${OBJECTFILES} + ${MKDIR} -p ../../dist/bin + gcc -o ../../dist/bin/reo_matrix_mult__longjmp ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/_ext/1472/Matrix_Mult.o: nbproject/Makefile-${CND_CONF}.mk ../Matrix_Mult.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1472 + ${RM} "$@.d" + $(COMPILE.c) -g -DX86 -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c + +${OBJECTDIR}/_ext/1539317932/ParamBag.o: nbproject/Makefile-${CND_CONF}.mk ../ParamHelper/ParamBag.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1539317932 + ${RM} "$@.d" + $(COMPILE.c) -g -DX86 -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c + +${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: nbproject/Makefile-${CND_CONF}.mk ../ParamHelper/ReadParamsFromFile.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1539317932 + ${RM} "$@.d" + $(COMPILE.c) -g -DX86 -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c + +${OBJECTDIR}/_ext/1702716545/Circuit.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/Circuit.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DX86 -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c + +${OBJECTDIR}/_ext/1702716545/DivideWork.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/DivideWork.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DX86 -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/DivideWork.o ../Reo__Matrix_Mult/DivideWork.c + +${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/Producer_and_Consumer.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DX86 -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: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/SeedVP.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DX86 -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c + +${OBJECTDIR}/_ext/1472/main.o: nbproject/Makefile-${CND_CONF}.mk ../main.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1472 + ${RM} "$@.d" + $(COMPILE.c) -g -DX86 -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c + +# Subprojects +.build-subprojects: + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} ../../dist/bin/reo_matrix_mult__longjmp + +# Subprojects +.clean-subprojects: + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp clean + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp clean + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp clean + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp clean + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff -r 1b61e0c00512 -r a6b3cab179b1 nb__Reo_matrix_mult/nbproject/Makefile-longjmp_ARM.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-longjmp_ARM.mk Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,150 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=arm-linux-gnueabihf-gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=arm-linux-gnueabihf-as + +# Macros +CND_PLATFORM=GNU_ARM-Linux-x86 +CND_DLIB_EXT=so +CND_CONF=longjmp_ARM +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${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 + + +# C Compiler Flags +CFLAGS=-O2 + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-L../../PR__lib -Wl,-rpath,../../PR__lib ../../library__proto-runtime/nb__PR__ML__wDKU__lib/../../PR__lib_arm/pr__ml__wdku__lib.a ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/../../PR__lib_arm/reo_opt1_wrapper_lib.a -lm -lpthread ../../PR__lib_arm/prdynarray.a ../../PR__lib_arm/prhistogram.a ../../PR__lib_arm/prlistofarrays.a ../../PR__lib_arm/prmalloc.a ../../PR__lib_arm/prparam.a ../../PR__lib_arm/prqueue.a + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ../../bin/ARM/reo_matrix_mult__longjmp + +../../bin/ARM/reo_matrix_mult__longjmp: ../../library__proto-runtime/nb__PR__ML__wDKU__lib/../../PR__lib_arm/pr__ml__wdku__lib.a + +../../bin/ARM/reo_matrix_mult__longjmp: ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/../../PR__lib_arm/reo_opt1_wrapper_lib.a + +../../bin/ARM/reo_matrix_mult__longjmp: ../../PR__lib_arm/prdynarray.a + +../../bin/ARM/reo_matrix_mult__longjmp: ../../PR__lib_arm/prhistogram.a + +../../bin/ARM/reo_matrix_mult__longjmp: ../../PR__lib_arm/prlistofarrays.a + +../../bin/ARM/reo_matrix_mult__longjmp: ../../PR__lib_arm/prmalloc.a + +../../bin/ARM/reo_matrix_mult__longjmp: ../../PR__lib_arm/prparam.a + +../../bin/ARM/reo_matrix_mult__longjmp: ../../PR__lib_arm/prqueue.a + +../../bin/ARM/reo_matrix_mult__longjmp: ${OBJECTFILES} + ${MKDIR} -p ../../bin/ARM + ${LINK.c} -o ../../bin/ARM/reo_matrix_mult__longjmp ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/_ext/1472/Matrix_Mult.o: nbproject/Makefile-${CND_CONF}.mk ../Matrix_Mult.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1472 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c + +${OBJECTDIR}/_ext/1539317932/ParamBag.o: nbproject/Makefile-${CND_CONF}.mk ../ParamHelper/ParamBag.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1539317932 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c + +${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: nbproject/Makefile-${CND_CONF}.mk ../ParamHelper/ReadParamsFromFile.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1539317932 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c + +${OBJECTDIR}/_ext/1702716545/Circuit.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/Circuit.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c + +${OBJECTDIR}/_ext/1702716545/DivideWork.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/DivideWork.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/DivideWork.o ../Reo__Matrix_Mult/DivideWork.c + +${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/Producer_and_Consumer.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -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: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/SeedVP.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c + +${OBJECTDIR}/_ext/1472/main.o: nbproject/Makefile-${CND_CONF}.mk ../main.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1472 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c + +# Subprojects +.build-subprojects: + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp_ARM + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp_ARM + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp_ARM + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp_ARM + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} ../../bin/ARM/reo_matrix_mult__longjmp + +# Subprojects +.clean-subprojects: + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp_ARM clean + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp_ARM clean + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp_ARM clean + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp_ARM clean + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff -r 1b61e0c00512 -r a6b3cab179b1 nb__Reo_matrix_mult/nbproject/Makefile-longjmp_X86_static.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-longjmp_X86_static.mk Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,150 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux-x86 +CND_DLIB_EXT=so +CND_CONF=longjmp_X86_static +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${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 + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-L../../PR__lib -Wl,-rpath,../../PR__lib ../../library__proto-runtime/nb__PR__ML__wDKU__lib/../../PR__lib/pr__ml__wdku__lib.a ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/../../PR__lib/reo_opt1_wrapper_lib.a -lm -lpthread ../../PR__lib/prdynarray.a ../../PR__lib/prlistofarrays.a ../../PR__lib/prmalloc.a ../../PR__lib/prparam.a ../../PR__lib/prqueue.a ../../PR__lib/prhistogram.a + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ../../bin/X86/reo_matrix_mult__longjmp + +../../bin/X86/reo_matrix_mult__longjmp: ../../library__proto-runtime/nb__PR__ML__wDKU__lib/../../PR__lib/pr__ml__wdku__lib.a + +../../bin/X86/reo_matrix_mult__longjmp: ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/../../PR__lib/reo_opt1_wrapper_lib.a + +../../bin/X86/reo_matrix_mult__longjmp: ../../PR__lib/prdynarray.a + +../../bin/X86/reo_matrix_mult__longjmp: ../../PR__lib/prlistofarrays.a + +../../bin/X86/reo_matrix_mult__longjmp: ../../PR__lib/prmalloc.a + +../../bin/X86/reo_matrix_mult__longjmp: ../../PR__lib/prparam.a + +../../bin/X86/reo_matrix_mult__longjmp: ../../PR__lib/prqueue.a + +../../bin/X86/reo_matrix_mult__longjmp: ../../PR__lib/prhistogram.a + +../../bin/X86/reo_matrix_mult__longjmp: ${OBJECTFILES} + ${MKDIR} -p ../../bin/X86 + ${LINK.c} -o ../../bin/X86/reo_matrix_mult__longjmp ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/_ext/1472/Matrix_Mult.o: nbproject/Makefile-${CND_CONF}.mk ../Matrix_Mult.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1472 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c + +${OBJECTDIR}/_ext/1539317932/ParamBag.o: nbproject/Makefile-${CND_CONF}.mk ../ParamHelper/ParamBag.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1539317932 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c + +${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: nbproject/Makefile-${CND_CONF}.mk ../ParamHelper/ReadParamsFromFile.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1539317932 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c + +${OBJECTDIR}/_ext/1702716545/Circuit.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/Circuit.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c + +${OBJECTDIR}/_ext/1702716545/DivideWork.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/DivideWork.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/DivideWork.o ../Reo__Matrix_Mult/DivideWork.c + +${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/Producer_and_Consumer.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -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: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/SeedVP.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c + +${OBJECTDIR}/_ext/1472/main.o: nbproject/Makefile-${CND_CONF}.mk ../main.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1472 + ${RM} "$@.d" + $(COMPILE.c) -g -DARM -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c + +# Subprojects +.build-subprojects: + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp_static_X86 + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp_static_X86 + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp_static_X86 + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp_static_X86 + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} ../../bin/X86/reo_matrix_mult__longjmp + +# Subprojects +.clean-subprojects: + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp_static_X86 clean + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp_static_X86 clean + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp_static_X86 clean + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp_static_X86 clean + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff -r 1b61e0c00512 -r a6b3cab179b1 nb__Reo_matrix_mult/nbproject/Makefile-longjmp_rtems.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-longjmp_rtems.mk Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,146 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=k1-gcc +CCC=k1-g++ +CXX=k1-g++ +FC=gfortran +AS=k1-as + +# Macros +CND_PLATFORM=K1-tools-Linux-x86 +CND_DLIB_EXT=so +CND_CONF=longjmp_rtems +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${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 + + +# C Compiler Flags +CFLAGS=-mos=rtems + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-L../../PR__lib -Wl,-rpath,../../PR__lib ../../PR__lib_rtems/prdynarray.a ../../PR__lib_rtems/prqueue.a ../../PR__lib_rtems/prhistogram.a ../../PR__lib_rtems/prparam.a ../../PR__lib_rtems/prlistofarrays.a ../../PR__lib_rtems/prmalloc.a ../../library__proto-runtime/nb__PR__ML__wDKU__lib/dist/longjmp_rtems/K1-tools-Linux-x86/libnb__pr__ml__wdku__lib.a ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/dist/longjmp_rtems/K1-tools-Linux-x86/libnb__reo_opt1_wrapper_lib__as_lib.a -lm -lmppaipc_sim + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ../../dist/bin/reo_matrix_mult__longjmp + +../../dist/bin/reo_matrix_mult__longjmp: ../../PR__lib_rtems/prdynarray.a + +../../dist/bin/reo_matrix_mult__longjmp: ../../PR__lib_rtems/prqueue.a + +../../dist/bin/reo_matrix_mult__longjmp: ../../PR__lib_rtems/prhistogram.a + +../../dist/bin/reo_matrix_mult__longjmp: ../../PR__lib_rtems/prparam.a + +../../dist/bin/reo_matrix_mult__longjmp: ../../PR__lib_rtems/prlistofarrays.a + +../../dist/bin/reo_matrix_mult__longjmp: ../../PR__lib_rtems/prmalloc.a + +../../dist/bin/reo_matrix_mult__longjmp: ../../library__proto-runtime/nb__PR__ML__wDKU__lib/dist/longjmp_rtems/K1-tools-Linux-x86/libnb__pr__ml__wdku__lib.a + +../../dist/bin/reo_matrix_mult__longjmp: ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib/dist/longjmp_rtems/K1-tools-Linux-x86/libnb__reo_opt1_wrapper_lib__as_lib.a + +../../dist/bin/reo_matrix_mult__longjmp: ${OBJECTFILES} + ${MKDIR} -p ../../dist/bin + k1-gcc -o ../../dist/bin/reo_matrix_mult__longjmp ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/_ext/1472/Matrix_Mult.o: nbproject/Makefile-${CND_CONF}.mk ../Matrix_Mult.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1472 + ${RM} "$@.d" + $(COMPILE.c) -g -DRTEMS -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c + +${OBJECTDIR}/_ext/1539317932/ParamBag.o: nbproject/Makefile-${CND_CONF}.mk ../ParamHelper/ParamBag.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1539317932 + ${RM} "$@.d" + $(COMPILE.c) -g -DRTEMS -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c + +${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: nbproject/Makefile-${CND_CONF}.mk ../ParamHelper/ReadParamsFromFile.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1539317932 + ${RM} "$@.d" + $(COMPILE.c) -g -DRTEMS -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c + +${OBJECTDIR}/_ext/1702716545/Circuit.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/Circuit.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DRTEMS -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c + +${OBJECTDIR}/_ext/1702716545/DivideWork.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/DivideWork.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DRTEMS -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/DivideWork.o ../Reo__Matrix_Mult/DivideWork.c + +${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/Producer_and_Consumer.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DRTEMS -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: nbproject/Makefile-${CND_CONF}.mk ../Reo__Matrix_Mult/SeedVP.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1702716545 + ${RM} "$@.d" + $(COMPILE.c) -g -DRTEMS -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c + +${OBJECTDIR}/_ext/1472/main.o: nbproject/Makefile-${CND_CONF}.mk ../main.c + ${MKDIR} -p ${OBJECTDIR}/_ext/1472 + ${RM} "$@.d" + $(COMPILE.c) -g -DRTEMS -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c + +# Subprojects +.build-subprojects: + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp_rtems + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp_rtems + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} ../../dist/bin/reo_matrix_mult__longjmp + +# Subprojects +.clean-subprojects: + cd ../../library__proto-runtime/nb__PR__ML__wDKU__lib && ${MAKE} -f Makefile CONF=longjmp_rtems clean + cd ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib && ${MAKE} -f Makefile CONF=longjmp_rtems clean + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -24,12 +24,52 @@ 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 +# longjmp configuration +CND_PLATFORM_longjmp=GNU-Linux-x86 +CND_ARTIFACT_DIR_longjmp=../../dist/bin +CND_ARTIFACT_NAME_longjmp=reo_matrix_mult__longjmp +CND_ARTIFACT_PATH_longjmp=../../dist/bin/reo_matrix_mult__longjmp +CND_PACKAGE_DIR_longjmp=dist/longjmp/GNU-Linux-x86/package +CND_PACKAGE_NAME_longjmp=nbreomatrixmult.tar +CND_PACKAGE_PATH_longjmp=dist/longjmp/GNU-Linux-x86/package/nbreomatrixmult.tar +# longjmp_rtems configuration +CND_PLATFORM_longjmp_rtems=K1-tools-Linux-x86 +CND_ARTIFACT_DIR_longjmp_rtems=../../dist/bin +CND_ARTIFACT_NAME_longjmp_rtems=reo_matrix_mult__longjmp +CND_ARTIFACT_PATH_longjmp_rtems=../../dist/bin/reo_matrix_mult__longjmp +CND_PACKAGE_DIR_longjmp_rtems=dist/longjmp_rtems/K1-tools-Linux-x86/package +CND_PACKAGE_NAME_longjmp_rtems=nbreomatrixmult.tar +CND_PACKAGE_PATH_longjmp_rtems=dist/longjmp_rtems/K1-tools-Linux-x86/package/nbreomatrixmult.tar +# longjmp_ARM configuration +CND_PLATFORM_longjmp_ARM=GNU_ARM-Linux-x86 +CND_ARTIFACT_DIR_longjmp_ARM=../../bin/ARM +CND_ARTIFACT_NAME_longjmp_ARM=reo_matrix_mult__longjmp +CND_ARTIFACT_PATH_longjmp_ARM=../../bin/ARM/reo_matrix_mult__longjmp +CND_PACKAGE_DIR_longjmp_ARM=dist/longjmp_ARM/GNU_ARM-Linux-x86/package +CND_PACKAGE_NAME_longjmp_ARM=nbreomatrixmult.tar +CND_PACKAGE_PATH_longjmp_ARM=dist/longjmp_ARM/GNU_ARM-Linux-x86/package/nbreomatrixmult.tar +# longjmp_X86_static configuration +CND_PLATFORM_longjmp_X86_static=GNU-Linux-x86 +CND_ARTIFACT_DIR_longjmp_X86_static=../../bin/X86 +CND_ARTIFACT_NAME_longjmp_X86_static=reo_matrix_mult__longjmp +CND_ARTIFACT_PATH_longjmp_X86_static=../../bin/X86/reo_matrix_mult__longjmp +CND_PACKAGE_DIR_longjmp_X86_static=dist/longjmp_X86_static/GNU-Linux-x86/package +CND_PACKAGE_NAME_longjmp_X86_static=nbreomatrixmult.tar +CND_PACKAGE_PATH_longjmp_X86_static=dist/longjmp_X86_static/GNU-Linux-x86/package/nbreomatrixmult.tar # # include compiler specific variables # diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -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 a6b3cab179b1 nb__Reo_matrix_mult/nbproject/Package-MEAS_ON.bash --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/Package-MEAS_ON.bash Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux-x86 +CND_CONF=MEAS_ON +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=../../dist/bin/reo_matrix_mult__meas_on +OUTPUT_BASENAME=reo_matrix_mult__meas_on +PACKAGE_TOP_DIR=nbreomatrixmult/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/nbreomatrixmult/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/nbreomatrixmult.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/nbreomatrixmult.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff -r 1b61e0c00512 -r a6b3cab179b1 nb__Reo_matrix_mult/nbproject/Package-longjmp.bash --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/Package-longjmp.bash Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux-x86 +CND_CONF=longjmp +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=../../dist/bin/reo_matrix_mult__longjmp +OUTPUT_BASENAME=reo_matrix_mult__longjmp +PACKAGE_TOP_DIR=nbreomatrixmult/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/nbreomatrixmult/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/nbreomatrixmult.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/nbreomatrixmult.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff -r 1b61e0c00512 -r a6b3cab179b1 nb__Reo_matrix_mult/nbproject/Package-longjmp_ARM.bash --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/Package-longjmp_ARM.bash Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU_ARM-Linux-x86 +CND_CONF=longjmp_ARM +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=../../bin/ARM/reo_matrix_mult__longjmp +OUTPUT_BASENAME=reo_matrix_mult__longjmp +PACKAGE_TOP_DIR=nbreomatrixmult/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/nbreomatrixmult/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/nbreomatrixmult.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/nbreomatrixmult.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff -r 1b61e0c00512 -r a6b3cab179b1 nb__Reo_matrix_mult/nbproject/Package-longjmp_X86_static.bash --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/Package-longjmp_X86_static.bash Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux-x86 +CND_CONF=longjmp_X86_static +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=../../bin/X86/reo_matrix_mult__longjmp +OUTPUT_BASENAME=reo_matrix_mult__longjmp +PACKAGE_TOP_DIR=nbreomatrixmult/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/nbreomatrixmult/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/nbreomatrixmult.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/nbreomatrixmult.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff -r 1b61e0c00512 -r a6b3cab179b1 nb__Reo_matrix_mult/nbproject/Package-longjmp_rtems.bash --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/Package-longjmp_rtems.bash Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=K1-tools-Linux-x86 +CND_CONF=longjmp_rtems +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=../../dist/bin/reo_matrix_mult__longjmp +OUTPUT_BASENAME=reo_matrix_mult__longjmp +PACKAGE_TOP_DIR=nbreomatrixmult/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/nbreomatrixmult/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/nbreomatrixmult.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/nbreomatrixmult.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -1,5 +1,5 @@ - + - ../ParamHelper - ../Reo__Matrix_Mult + ../.. Makefile @@ -157,20 +156,133 @@ ../.. - DEBUG__SEQUENTIAL_MODE DEBUG__TURN_ON_DEBUG_PRINT + DEBUG__TURN_ON_SEQUENTIAL_MODE + ../../dist/bin/reo_matrix_mult__debug_seq ../../PR__lib + + ../../PR__lib + - pr__ml__sharedmem__dku_debug prmalloc prparam prqueue - reo_wrapper_lib_opt1 + Mathematics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + true + false + + + + + ../.. + + + + ../../dist/bin/reo_matrix_mult__meas_on + + ../../PR__lib + + + ../../PR__lib + + + prmalloc + prparam + prqueue + Mathematics + pr__ml__sharedmem__meas_on + reo_opt1_ml_lib__meas_on @@ -208,5 +320,470 @@ + + + default + true + true + + + + gcc + + ../.. + + + X86 + + + + gcc + + + ../../dist/bin/reo_matrix_mult__longjmp + + ../../PR__lib + + + ../../PR__lib + + gcc + + prmalloc + prparam + prqueue + Mathematics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + K1-tools|GNU + true + true + + + + k1-gcc + + ../.. + + -mos=rtems + + RTEMS + + + + ../../dist/bin/reo_matrix_mult__longjmp + + ../../PR__lib + + + ../../PR__lib + + k1-gcc + + ../../PR__lib_rtems/prdynarray.a + ../../PR__lib_rtems/prqueue.a + ../../PR__lib_rtems/prhistogram.a + ../../PR__lib_rtems/prparam.a + ../../PR__lib_rtems/prlistofarrays.a + ../../PR__lib_rtems/prmalloc.a + + + + + + + + + Mathematics + mppaipc_sim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GNU_ARM|GNU + true + true + + + + + ../.. + + -O2 + + ARM + + + + ../../bin/ARM/reo_matrix_mult__longjmp + + ../../PR__lib + + + ../../PR__lib + + + + + + + + + + + Mathematics + PosixThreads + ../../PR__lib_arm/prdynarray.a + ../../PR__lib_arm/prhistogram.a + ../../PR__lib_arm/prlistofarrays.a + ../../PR__lib_arm/prmalloc.a + ../../PR__lib_arm/prparam.a + ../../PR__lib_arm/prqueue.a + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GNU|GNU + true + true + + + + + ../.. + + + ARM + + + + ../../bin/X86/reo_matrix_mult__longjmp + + ../../PR__lib + + + ../../PR__lib + + + + + + + + + + + Mathematics + PosixThreads + ../../PR__lib/prdynarray.a + ../../PR__lib/prlistofarrays.a + ../../PR__lib/prmalloc.a + ../../PR__lib/prparam.a + ../../PR__lib/prqueue.a + ../../PR__lib/prhistogram.a + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -6,3 +6,8 @@ # Debug configuration # Release configuration # Debug_Sequential configuration +# MEAS_ON configuration +# longjmp configuration +# longjmp_rtems configuration +# longjmp_ARM configuration +# longjmp_X86_static configuration diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -1,5 +1,5 @@ - + Makefile @@ -95,12 +95,12 @@ "${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 @@ -109,5 +109,244 @@ + + + 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 + ../../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 + ../../dist + true + 1 + 1 + 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 + ../../dist + true + 1 + 1 + 0 + + + + + + + + localhost + 2 + + + + + + + + + + + + + + + + gdb + + + + "${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 + qemu-arm -L /home/coolicer/Documents/ARM/toolchain/arm-none-linux-gnueabi/libc/ -U LD_LIBRARY_PATH "${OUTPUT_PATH}" 10 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_2048.txt + qemu-arm -L /home/coolicer/Documents/ARM/toolchain/arm-none-linux-gnueabi/libc/ -U LD_LIBRARY_PATH "${OUTPUT_PATH}" 10 matrix2048.txt + qemu-arm -L /home/coolicer/Documents/ARM/toolchain/arm-none-linux-gnueabi/libc/ -U LD_LIBRARY_PATH -S "${OUTPUT_PATH}" 10 matrix2048.txt + qemu-arm -L /home/coolicer/Documents/ARM/toolchain/arm-none-linux-gnueabi/libc/ -U LD_LIBRARY_PATH -g 1234 "${OUTPUT_PATH}" 10 matrix2048.txt + qemu-arm -L /home/coolicer/Documents/ARM/toolchain/arm-none-linux-gnueabi/libc/ -U LD_LIBRARY_PATH "${OUTPUT_PATH}" 10 matrix2048.txt + + qemu-arm -L /home/coolicer/Documents/ARM/toolchain/arm-none-linux-gnueabi/libc/ -U LD_LIBRARY_PATH "${OUTPUT_PATH}" 10 matrix2048.txt + ../../bin/ARM/ + true + 1 + 1 + 0 + + + + + + + localhost + 2 + + + + + + + + + + + + + + + + gdb + + + + "${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}" 1000 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_2048.txt + "${OUTPUT_PATH}" 1 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_2048.txt + + "${OUTPUT_PATH}" 1 ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_2048.txt + ../../dist + true + 1 + 1 + 0 + + + + + diff -r 1b61e0c00512 -r a6b3cab179b1 nb__Reo_matrix_mult/nbproject/private/launcher.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nb__Reo_matrix_mult/nbproject/private/launcher.properties Sat Jul 12 20:21:47 2014 +0200 @@ -0,0 +1,40 @@ +# Launchers File syntax: +# +# [Must-have property line] +# launcher1.runCommand= +# [Optional extra properties] +# launcher1.displayName= +# launcher1.buildCommand= +# launcher1.runDir= +# launcher1.symbolFiles= +# launcher1.env.= +# (If this value is quoted with ` it is handled as a native command which execution result will become the value) +# [Common launcher properties] +# common.runDir= +# (This value is overwritten by a launcher specific runDir value if the latter exists) +# common.env.= +# (Environment variables from common launcher are merged with launcher specific variables) +# common.symbolFiles= +# (This value is overwritten by a launcher specific symbolFiles value if the latter exists) +# +# In runDir, symbolFiles and env fields you can use these macroses: +# ${PROJECT_DIR} - project directory absolute path +# ${OUTPUT_PATH} - linker output path (relative to project directory path) +# ${OUTPUT_BASENAME}- linker output filename +# ${TESTDIR} - test files directory (relative to project directory path) +# ${OBJECTDIR} - object files directory (relative to project directory path) +# ${CND_DISTDIR} - distribution directory (relative to project directory path) +# ${CND_BUILDDIR} - build directory (relative to project directory path) +# ${CND_PLATFORM} - platform name +# ${CND_CONF} - configuration name +# ${CND_DLIB_EXT} - dynamic library extension +# +# All the project launchers must be listed in the file! +# +# launcher1.runCommand=... +# launcher2.runCommand=... +# ... +# common.runDir=... +# common.env.KEY=VALUE + +# launcher1.runCommand= \ No newline at end of file diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -2,9 +2,24 @@ 1 - 2 + 6 + + + + + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/VReo_longjmp_test/Application/Reo__Matrix_Mult/Circuit.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/VReo_longjmp_test/library__proto-runtime/AnimationMaster.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/VReo_longjmp_test/Application/main.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/VReo_longjmp_test/library__proto-runtime/PR__int.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/VReo_longjmp_test/library__proto-runtime/PR__PI.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/VReo_longjmp_test/library__proto-runtime/PR.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/VReo_longjmp_test/Application/Reo__Matrix_Mult/SeedVP.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/VReo_longjmp_test/library__proto-runtime/CoreController.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/VReo_longjmp_test/library__proto-runtime/PR__SS.c + file:/win/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/VReo_longjmp_test/library__proto-runtime/PR__WL.c + diff -r 1b61e0c00512 -r a6b3cab179b1 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 Jul 12 20:21:47 2014 +0200 @@ -8,10 +8,14 @@ h UTF-8 - + + ../../library__Reo_opt1/nb__reo_opt1_wrapper_lib__as_lib + ../../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 + /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 + - ../ParamHelper - ../Reo__Matrix_Mult + ../.. @@ -26,6 +30,26 @@ Debug_Sequential 1 + + MEAS_ON + 1 + + + longjmp + 1 + + + longjmp_rtems + 1 + + + longjmp_ARM + 1 + + + longjmp_X86_static + 1 + false