changeset 1:1b61e0c00512

almost working k=3, about to change to k=4
author Sean Halle <seanhalle@yahoo.com>
date Wed, 19 Feb 2014 09:27:10 -0800
parents c4b1849c05ef
children 96deb7b4502e a6b3cab179b1
files Matrix_Mult.h Reo__Matrix_Mult/Circuit.c Reo__Matrix_Mult/Circuit.h Reo__Matrix_Mult/DivideWork.c Reo__Matrix_Mult/MeasurementStuff.c Reo__Matrix_Mult/Producer_and_Consumer.c Reo__Matrix_Mult/Reo__Matrix_Mult.h Reo__Matrix_Mult/Result_Pr.c Reo__Matrix_Mult/SeedVP.c Reo__Matrix_Mult/Vector_Pr.c main.c nb__Reo_matrix_mult/nbproject/Makefile-Debug.mk nb__Reo_matrix_mult/nbproject/Makefile-Debug_Sequential.mk nb__Reo_matrix_mult/nbproject/Makefile-Release.mk nb__Reo_matrix_mult/nbproject/Package-Debug.bash nb__Reo_matrix_mult/nbproject/Package-Debug_Sequential.bash nb__Reo_matrix_mult/nbproject/Package-Release.bash nb__Reo_matrix_mult/nbproject/configurations.xml nb__Reo_matrix_mult/nbproject/private/configurations.xml nb__Reo_matrix_mult/nbproject/private/private.xml nb__Reo_matrix_mult/nbproject/project.xml
diffstat 21 files changed, 683 insertions(+), 564 deletions(-) [+]
line diff
     1.1 --- a/Matrix_Mult.h	Sun Feb 02 17:58:41 2014 -0800
     1.2 +++ b/Matrix_Mult.h	Wed Feb 19 09:27:10 2014 -0800
     1.3 @@ -10,6 +10,7 @@
     1.4  #include <unistd.h>
     1.5  #include <malloc.h>
     1.6  
     1.7 +#include <PR__include/PR__primitive_data_types.h>
     1.8  #include "ParamHelper/Param.h"
     1.9  
    1.10  //==============================  Structures  ==============================
    1.11 @@ -42,8 +43,8 @@
    1.12        // define the starting and ending boundaries for this piece of the
    1.13        //  result matrix.  These are derivable from the left and right
    1.14        //  matrices, but included them for readability of code.
    1.15 -   int prodStartRow, prodEndRow;
    1.16 -   int prodStartCol, prodEndCol;
    1.17 +   int resStartRow, resEndRow;
    1.18 +   int resStartCol, resEndCol;
    1.19        // Start and end of the portion of the left matrix that contributes to
    1.20        //  this piece of the product
    1.21     int leftStartRow, leftEndRow;
     2.1 --- a/Reo__Matrix_Mult/Circuit.c	Sun Feb 02 17:58:41 2014 -0800
     2.2 +++ b/Reo__Matrix_Mult/Circuit.c	Wed Feb 19 09:27:10 2014 -0800
     2.3 @@ -1,6 +1,6 @@
     2.4  #include <math.h>
     2.5  #include <string.h>
     2.6 -#include "VReo__Test_App.h"
     2.7 +#include "Reo__Matrix_Mult.h"
     2.8  #include "Circuit.h"
     2.9  
    2.10  VReoCircuit *create_circuit(SlaveVP *animVP) {
    2.11 @@ -29,6 +29,8 @@
    2.12  	bridge = &(bridges[CKT_BRIDGE_Broad_0]);
    2.13  	bridge->buffer = NULL;
    2.14  	bridge->bridgeIsFull = FALSE;
    2.15 +        bridge->writerType   = None;
    2.16 +        bridge->readerType   = None;
    2.17  	bridge->waitingReaderVP = NULL;
    2.18  	bridge->waitingWriterVP = NULL;
    2.19  	bridge->readerPartnerQStruct = NULL;
    2.20 @@ -396,17 +398,17 @@
    2.21  
    2.22  	/* Assumption: (writerType != NULL) implies (writerType != VP) */
    2.23  	bridge = &(bridges[CKT_BRIDGE_Out_0Input1]);
    2.24 -	if (bridge->writerType != NULL && bridge->bridgeIsFull)
    2.25 +	if (bridge->writerType != None && bridge->bridgeIsFull)
    2.26  		writePrivQ( bridge, bridge->readerOfferQ );
    2.27  
    2.28  	/* Assumption: (writerType != NULL) implies (writerType != VP) */
    2.29  	bridge = &(bridges[CKT_BRIDGE_Out_0Input0]);
    2.30 -	if (bridge->writerType != NULL && bridge->bridgeIsFull)
    2.31 +	if (bridge->writerType != None && bridge->bridgeIsFull)
    2.32  		writePrivQ( bridge, bridge->readerOfferQ );
    2.33  
    2.34  	/* Assumption: (readerType != NULL) implies (readerType != VP) */
    2.35  	bridge = &(bridges[CKT_BRIDGE_Out_0]);
    2.36 -	if (bridge->readerType != NULL && !bridge->bridgeIsFull)
    2.37 +	if (bridge->readerType != None && !bridge->bridgeIsFull)
    2.38  		writePrivQ( bridge, bridge->writerOfferQ );
    2.39  
    2.40  	//
    2.41 @@ -430,13 +432,12 @@
    2.42  void create_VPs_w_init_and_connect( VReoCircuit *circuit, void **initDatums,
    2.43                                      SlaveVP *animVP) 
    2.44   {
    2.45 -
    2.46  	/* Declare variables. */
    2.47  	VReoBridge **boundaryBridges, *bridges, **bridgesForVP;
    2.48  	SlaveVP **VPs;
    2.49  
    2.50 -	TestAppProducerParams *prodParams;
    2.51 -	TestAppConsumerParams *consParams;
    2.52 +	VPParams *prodParams;
    2.53 +	VPParams *consParams;
    2.54  
    2.55  	/* Initialize (boundary) bridges. */
    2.56  	boundaryBridges = circuit->boundaryBridges;
    2.57 @@ -449,10 +450,10 @@
    2.58  	bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *));
    2.59  	bridgesForVP[0] = boundaryBridges[CKT_VP_PROD0];
    2.60  
    2.61 -	prodParams = PR_WL__malloc(sizeof(TestAppProducerParams));
    2.62 +	prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit));
    2.63  	prodParams->inBridges = NULL;
    2.64  	prodParams->outBridges = bridgesForVP;
    2.65 -   prodParams->initData  = initDatums[CKT_VP_PROD0];
    2.66 +        prodParams->initData  = initDatums[CKT_VP_PROD0];
    2.67  
    2.68  	VPs[CKT_VP_PROD0] = VReo__create_VP(&producer_Fn, prodParams, circuit, animVP);
    2.69  
    2.70 @@ -463,7 +464,7 @@
    2.71  	bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *));
    2.72  	bridgesForVP[0] = boundaryBridges[CKT_VP_PROD1];
    2.73  
    2.74 -	prodParams = PR_WL__malloc(sizeof(TestAppProducerParams));
    2.75 +	prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit));
    2.76  	prodParams->inBridges = NULL;
    2.77  	prodParams->outBridges = bridgesForVP;
    2.78     prodParams->initData  = initDatums[CKT_VP_PROD1];
    2.79 @@ -477,7 +478,7 @@
    2.80  	bridgesForVP = PR_WL__malloc(1 * sizeof(VReoBridge *));
    2.81  	bridgesForVP[0] = boundaryBridges[CKT_VP_PROD2];
    2.82  
    2.83 -	prodParams = PR_WL__malloc(sizeof(TestAppProducerParams));
    2.84 +	prodParams = PR_WL__malloc(sizeof(MatrixMultWorkUnit));
    2.85  	prodParams->inBridges = NULL;
    2.86  	prodParams->outBridges = bridgesForVP;
    2.87     prodParams->initData  = initDatums[CKT_VP_PROD2];
    2.88 @@ -522,7 +523,7 @@
    2.89  //	boundaryBridges[CKT_VP_CONS1]->readerType = VP;
    2.90  
    2.91  	/* Create Consumer VP. */
    2.92 -	consParams = PR_WL__malloc(sizeof(TestAppConsumerParams));
    2.93 +	consParams = PR_WL__malloc(sizeof(VPParams));
    2.94  
    2.95  	bridgesForVP = PR_WL__malloc(2 * sizeof(VReoBridge *));
    2.96  	bridgesForVP[0] = &(bridges[CKT_BRIDGE_Out_0]);
     3.1 --- a/Reo__Matrix_Mult/Circuit.h	Sun Feb 02 17:58:41 2014 -0800
     3.2 +++ b/Reo__Matrix_Mult/Circuit.h	Wed Feb 19 09:27:10 2014 -0800
     3.3 @@ -5,6 +5,8 @@
     3.4  //#include "VReo_impl/VReo.h"
     3.5  #include <PR__include/PR__structs__common.h>
     3.6  #include <PR__include/langlets/vreo_wrapper_library.h>
     3.7 +#include <PR__include/prqueue.h>
     3.8 +#include <PR__include/PR__WL.h>
     3.9  
    3.10  //==============================================================================
    3.11  
     4.1 --- a/Reo__Matrix_Mult/DivideWork.c	Sun Feb 02 17:58:41 2014 -0800
     4.2 +++ b/Reo__Matrix_Mult/DivideWork.c	Wed Feb 19 09:27:10 2014 -0800
     4.3 @@ -20,12 +20,11 @@
     4.4   *  the start row and end row and start col and end col to be multiplied
     4.5   *  the length of the vectors
     4.6   */
     4.7 -WorkUnitParams **
     4.8 -divideWork( Matrix *leftMatrix, Matrix *rightMatrix, int targetNumUnits )
     4.9 +MatrixMultWorkUnit **
    4.10 +divideWork( Matrix *leftMatrix, Matrix *rightMatrix, Matrix *resultMatrix,
    4.11 +            int targetNumUnits )
    4.12   { 
    4.13 -   WorkUnitParams    *workUnitParams, **workUnits;
    4.14 -   Matrix            *leftMatrix, *rightMatrix, *resultMatrix;
    4.15 -   int                retCode;
    4.16 +   MatrixMultWorkUnit    *workUnitParams, **workUnits;
    4.17     int targetDivisor, targetIncrement;
    4.18    
    4.19  //   printf("start divide\n"); fflush(stdin);
    4.20 @@ -45,21 +44,26 @@
    4.21     
    4.22     
    4.23        //make a data struct for each work unit, and fill it with params of work
    4.24 -	  //params are start and end row and col to be multiplied and length of a row
    4.25 -   workUnits = PR__malloc( sizeof(WorkUnitParams) );
    4.26 +      //params are start and end row and col to be multiplied and length of a row
    4.27 +      //BAD HACK: adding one to array, which will remain empty -- because
    4.28 +      // circuit creation wants a param struct for each VP -- the empty is for
    4.29 +      // the consumer.. so the empty spot contents is sent, but never used..
    4.30 +   workUnits = PR__malloc( (targetNumUnits +1)* sizeof(MatrixMultWorkUnit *) );
    4.31     int row, col, index = 0;
    4.32     for( row = 0; row < leftMatrix->numRows; row += targetIncrement )
    4.33      { 
    4.34        for( col = 0; col < rightMatrix->numCols; col += targetIncrement )
    4.35         {
    4.36 -         workUnitParams              = PR__malloc( sizeof(WorkUnitParams) );
    4.37 -         workUnitParams->startRow    = row;
    4.38 -         workUnitParams->endRow      = row + targetIncrement -1;
    4.39 -         workUnitParams->startCol    = col;
    4.40 -         workUnitParams->endCol      = col + targetIncrement -1;
    4.41 -         workUnitParams->vectLength  = leftMatrix->numCols;
    4.42 -         workUnitParams->leftMatrix  = leftMatrix;
    4.43 -         workUnitParams->rightMatrix = rightMatrix;
    4.44 +         workUnitParams               = PR__malloc( sizeof(MatrixMultWorkUnit) );
    4.45 +         workUnitParams->leftMatrix   = leftMatrix;
    4.46 +         workUnitParams->rightMatrix  = rightMatrix;
    4.47 +         workUnitParams->resultMatrix = rightMatrix;
    4.48 +         workUnitParams->prodArray    = PR__malloc( leftMatrix->numRows * 
    4.49 +                                       rightMatrix->numCols * sizeof(float32) );
    4.50 +         workUnitParams->leftStartRow = row;
    4.51 +         workUnitParams->leftEndRow   = row + targetIncrement -1;
    4.52 +         workUnitParams->rightStartCol= col;
    4.53 +         workUnitParams->rightEndCol  = col + targetIncrement -1;
    4.54           
    4.55           workUnits[ index ] = workUnitParams;
    4.56           index += 1;
    4.57 @@ -69,11 +73,7 @@
    4.58   }
    4.59  
    4.60     
    4.61 - 
    4.62 -   resultsParams             = malloc( sizeof(ResultsParams) );
    4.63 -   resultsParams->numCols    = rightMatrix->numCols;
    4.64 -   resultsParams->numRows    = leftMatrix->numRows;
    4.65  
    4.66     //===========  Set up global vars, including conds and mutexes ===========
    4.67 -   globals = malloc( sizeof(MatrixMultGlobals) );
    4.68 +//   globals = malloc( sizeof(MatrixMultGlobals) );
    4.69     //========================================================================
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/Reo__Matrix_Mult/MeasurementStuff.c	Wed Feb 19 09:27:10 2014 -0800
     5.3 @@ -0,0 +1,104 @@
     5.4 +/*
     5.5 + *  Copyright 2014 OpenSourceResearchInstitute.org
     5.6 + *  Licensed under GNU General Public License version 2
     5.7 + *
     5.8 + * Author: seanhalle@yahoo.com
     5.9 + *
    5.10 + */
    5.11 + 
    5.12 +#ifndef H_MEASUREMENTSTUFF_
    5.13 +#define H_MEASUREMENTSTUFF_
    5.14 +
    5.15 + // =============================================================================
    5.16 +
    5.17 +//SELECT how the measurement is done
    5.18 +//only one must be enabled
    5.19 +#define MEASURE_TSC
    5.20 +//#define MEASURE_PERF
    5.21 +
    5.22 +#define saveTimeStampCountInto(low, high) \
    5.23 +   asm volatile("RDTSC;                   \
    5.24 +                 movl %%eax, %0;          \
    5.25 +                 movl %%edx, %1;"         \
    5.26 +   /* outputs */ : "=m" (low), "=m" (high)\
    5.27 +   /* inputs  */ :                        \
    5.28 +   /* clobber */ : "%eax", "%edx"         \
    5.29 +                );
    5.30 +
    5.31 +#define saveLowTimeStampCountInto(low)    \
    5.32 +   asm volatile("RDTSC;                   \
    5.33 +                 movl %%eax, %0;"         \
    5.34 +   /* outputs */ : "=m" (low)             \
    5.35 +   /* inputs  */ :                        \
    5.36 +   /* clobber */ : "%eax", "%edx"         \
    5.37 +                );
    5.38 +
    5.39 +union timeStamp {
    5.40 +	uint32_t lowHigh[2]; //lowHigh[0] is low, lowHigh[1] is high
    5.41 +	uint64_t total;
    5.42 +};
    5.43 +
    5.44 +struct perfData {
    5.45 +	uint64_t cycles;
    5.46 +	uint64_t instructions;
    5.47 +};
    5.48 +
    5.49 +//MEASURE_TSC should be mutually exclusive with MEASURE_PERF
    5.50 +#ifdef MEASURE_TSC
    5.51 +typedef union timeStamp MeasStruct;
    5.52 +#else
    5.53 +#ifdef MEASURE_PERF
    5.54 +typedef struct perfData MeasStruct;
    5.55 +#endif
    5.56 +#endif
    5.57 +
    5.58 +
    5.59 +//read and save current perf-counter readings for cycles and instrs
    5.60 +#ifdef MEASURE_PERF
    5.61 +#define takeAMeas(core, perfDataStruct) do{     \
    5.62 +   int cycles_fd = cycles_counter_fd[core];             \
    5.63 +   int nread;                                           \
    5.64 +                                                        \
    5.65 +   nread = read(cycles_fd,&(perfDataStruct.cycles),sizeof(perfDataStruct.cycles));    \
    5.66 +   if(nread<0){                                         \
    5.67 +       perror("Error reading cycles counter");          \
    5.68 +       cycles = 0;                                      \
    5.69 +   }                                                    \
    5.70 + } while (0) //macro magic for scoping
    5.71 +#else
    5.72 +#define takeAMeas(core, timeStampStruct) do{     \
    5.73 +   saveTimeStampCountInto(timeStampStruct.lowHigh[0], timeStampStruct.lowHigh[1]);\
    5.74 + } while (0) //macro magic for scoping
    5.75 +#endif
    5.76 +
    5.77 +#ifdef MEASURE_PERF
    5.78 +int cycles_counter_fd[NUM_CORES];
    5.79 +int instrs_counter_fd[NUM_CORES];
    5.80 +int cycles_counter_main_fd;
    5.81 +#endif
    5.82 +
    5.83 +//===================================
    5.84 +/* provide a millisecond-resolution timer for each system */
    5.85 +#if defined(unix) || defined(__unix__)
    5.86 +#include <time.h>
    5.87 +#include <sys/time.h>
    5.88 +unsigned long get_msec(void) {
    5.89 +	static struct timeval timeval, first_timeval;
    5.90 +
    5.91 +	gettimeofday(&timeval, 0);
    5.92 +	if(first_timeval.tv_sec == 0) {
    5.93 +		first_timeval = timeval;
    5.94 +		return 0;
    5.95 +	}
    5.96 +	return (timeval.tv_sec - first_timeval.tv_sec) * 1000 + (timeval.tv_usec - first_timeval.tv_usec) / 1000;
    5.97 +}
    5.98 +#elif defined(__WIN32__) || defined(WIN32)
    5.99 +#include <windows.h>
   5.100 +unsigned long get_msec(void) {
   5.101 +	return GetTickCount();
   5.102 +}
   5.103 +#else
   5.104 +#error "I don't know how to measure time on your platform"
   5.105 +#endif
   5.106 +
   5.107 +#endif //H_MEASUREMENTSTUFF_
     6.1 --- a/Reo__Matrix_Mult/Producer_and_Consumer.c	Sun Feb 02 17:58:41 2014 -0800
     6.2 +++ b/Reo__Matrix_Mult/Producer_and_Consumer.c	Wed Feb 19 09:27:10 2014 -0800
     6.3 @@ -1,39 +1,47 @@
     6.4 +/*
     6.5 + *  Copyright 2014 OpenSourceResearchInstitute.org
     6.6 + *  Licensed under GNU General Public License version 2
     6.7 + *
     6.8 + * Author: seanhalle@yahoo.com
     6.9 + *
    6.10 + */
    6.11  #include <math.h>
    6.12  #include <string.h>
    6.13 -#include "VReo__Test_App.h"
    6.14 +#include "Reo__Matrix_Mult.h"
    6.15 +#include "../Matrix_Mult.h"
    6.16  
    6.17  /*The input to a VP's birth function is a struct that holds two arrays of
    6.18   * pointers to bridges -- one for input bridges, one for output bridges
    6.19 + * and, optionally, an array of workUnit params.
    6.20   */
    6.21 -void producer_Fn(void *_birthParams, SlaveVP *animVP) {
    6.22 -	TestAppProducerParams *birthParams = (TestAppProducerParams *) _birthParams;
    6.23 +void producer_Fn(void *_birthParams, SlaveVP *animVP) 
    6.24 + {
    6.25 +   VPParams *
    6.26 +    birthParams = (VPParams *) _birthParams;
    6.27  
    6.28 -	//Tell the Reo tool that generates circuit about the bridges of this VP
    6.29 -	//#Reo numInBridges 0 | numOutbridges 1
    6.30 -	VReoBridge **outBridges = birthParams->outBridges;
    6.31 -	VReoBridge *bridge;
    6.32 -	TestAppProdConsMsg *msg;
    6.33 -	int32 i;
    6.34 +   //Tell the Reo tool that generates circuit about the bridges of this VP
    6.35 +   //#Reo numInBridges 0 | numOutbridges 1
    6.36 +   VReoBridge **outBridges = birthParams->outBridges;
    6.37 +   VReoBridge *bridge;
    6.38 +   TestAppProdConsMsg *msg;
    6.39 +   MatrixMultWorkUnit *matrixMultWorkUnit;
    6.40 +   int32 i;
    6.41  
    6.42 -	DEBUG__printf(dbgAppFlow, "Producer on core: %d", animVP->coreAnimatedBy);
    6.43 +         DEBUG__printf( dbgAppFlow, "Producer on core: %d", animVP->coreAnimatedBy );
    6.44  
    6.45 -	bridge = outBridges[0];
    6.46 -
    6.47 +   bridge = outBridges[0];
    6.48  	
    6.49 -	msg = PR__malloc(sizeof(TestAppProdConsMsg));
    6.50 -	msg->producerID = animVP->slaveNum;
    6.51 -	
    6.52 -	//A producer puts out 5 items, doing a print for each.
    6.53 -	for (i = 0; i < NUM_ITER; i++) {
    6.54 -		//msg = PR__malloc(sizeof(TestAppProdConsMsg));
    6.55 -		//msg->producerID = animVP->slaveNum;
    6.56 -		msg->producedCnt = i + 1;
    6.57 -		VReo__put_into_bridge(msg, bridge, animVP);
    6.58 -		DEBUG__printf(dbgAppFlow, "Producer %d, put in %d", msg->producerID,
    6.59 -				msg->producedCnt);
    6.60 -	}
    6.61 -	VReo__end_VP(animVP);
    6.62 -}
    6.63 +   //Do the multiplies
    6.64 +   matrixMultWorkUnit = (MatrixMultWorkUnit *)birthParams->initData;
    6.65 +   for (i = 0; i < NUM_ITER; i++) 
    6.66 +    {
    6.67 +      calcProduct( matrixMultWorkUnit ); //result appears by side effect
    6.68 +      VReo__put_into_bridge( matrixMultWorkUnit, bridge, animVP );
    6.69 +            DEBUG__printf( dbgAppFlow, "Producer %d, put in %d", 
    6.70 +                           msg->producerID, msg->producedCnt );
    6.71 +    }
    6.72 +   VReo__end_VP( animVP );
    6.73 + }
    6.74  
    6.75  	
    6.76  /*Accumulate the results of individual multiplies into the result matrix
    6.77 @@ -42,59 +50,70 @@
    6.78   *After the count reaches the point that all results have been received, it
    6.79   * ends itself -- result matrix is returned by side effect inside the params.
    6.80   */
    6.81 -void consumer_Fn(void *_params, SlaveVP *animVP) {
    6.82 -	ResultsParams *params = (ResultsParams *) _params;
    6.83 -
    6.84 -	//The circuit creator sends the bridges this VP is connected to
    6.85 -	// numInBridges 2 | numOutbridges 0
    6.86 -   VReoBridge **inBridges = params->inBridges;
    6.87 +void consumer_Fn(void *_params, SlaveVP *animVP) 
    6.88 + {
    6.89 +   ConsParams         *consParams; //not needed..  don't need any params
    6.90 +   MatrixMultWorkUnit *resWorkUnit;
    6.91 +   VReoBridge         *inBridge0, *inBridge1;
    6.92 +   int32               i, j;
    6.93 +   
    6.94 +         DEBUG__printf( dbgAppFlow, "Consumer on core: %d", animVP->coreAnimatedBy );
    6.95 +		 
    6.96 +   //The circuit creator sends the bridges this VP is connected to
    6.97 +   // numInBridges 2 | numOutbridges 0
    6.98 +   VPParams *
    6.99 +    params = (VPParams *) _params; //params struct created during 
   6.100 +   VReoBridge **inBridges  = params->inBridges;
   6.101     VReoBridge **outBridges = params->outBridges;
   6.102 -   VReoBridge *inBridge0, *inBridge1;
   6.103 -   int32 i, j, got;
   6.104 -   TestAppProdConsMsg *msg;
   6.105 -
   6.106 -   DEBUG__printf(dbgAppFlow, "Consumer on core: %d", animVP->coreAnimatedBy);
   6.107 -
   6.108 +//   consParams = params->initData;
   6.109 +   
   6.110     inBridge0 = inBridges[0];
   6.111     inBridge1 = inBridges[1];
   6.112  
   6.113 -    
   6.114 -   int             numRows, numCols, numCells, count=0;
   6.115 -   float32        *resultMatrixArray;
   6.116 -   ProductResult  *aResult;
   6.117 -   VectorParams   *aResult;
   6.118 -
   6.119 -
   6.120 -   params    = (ResultsParams *)_params;
   6.121 -   numCols   = params->numCols;
   6.122 -   numRows   = params->numRows;
   6.123 -   numCells  = numRows * numCols;
   6.124 -
   6.125 -   resultMatrixArray = malloc( numCells * sizeof( float32 ) );
   6.126 -   params->resultMatrixArray = resultMatrixArray;
   6.127 -
   6.128 -//	sleep(10);
   6.129 -   NUM_PROD = params->numProducers;
   6.130 -   int32 row, col;
   6.131 +   int32 partRow, partCol, numResRows, finalArrayStart, finalStartRow, partArrayStart;
   6.132 +   int32 finalStride, finalStartCol, partStride, numResCols;
   6.133 +   float *finalArray, *partArray;
   6.134 +   Matrix *leftMatrix, *rightMatrix, *resultMatrix;
   6.135     
   6.136     for (i = 0; i < NUM_ITER; i++) 
   6.137      {
   6.138        for (j = 0; j < NUM_PROD; j++) 
   6.139 -	   {
   6.140 +       {
   6.141           //get next result from a producer
   6.142 -         aResult = (ProductResult *) VReo__get_from_bridge(inBridge0, animVP);
   6.143 -               DEBUG__printf( dbgAppFlow, "Consumer got %d from %d", 
   6.144 -			                  aResult->producedCnt, aResult->producerID );
   6.145 -         aResArray = aResult->array;
   6.146 -       
   6.147 -         accumulateResult( resultArray, aResult->partialResultArray,
   6.148 -                        aResult->leftSubMatrix->origStartRow,
   6.149 -                        aResult->leftSubMatrix->numRows,
   6.150 -                        aResult->rightSubMatrix->origStartCol,
   6.151 -                        aResult->rightSubMatrix->numCols,
   6.152 -                        aResult->rightSubMatrix->origMatrix->numCols );
   6.153 +         resWorkUnit   = (MatrixMultWorkUnit *) VReo__get_from_bridge(inBridge0, animVP);
   6.154 +               DEBUG__printf( dbgAppFlow, "Consumer got \n" );
   6.155 +         //now set up variables will use to copy partial result to final matrix array
   6.156 +         partArray     = resWorkUnit->prodArray;
   6.157 +         resultMatrix  = resWorkUnit->resultMatrix; //matrix for full orig piece
   6.158 +         finalArray    = resultMatrix->array;
   6.159 +         leftMatrix     = resWorkUnit->leftMatrix;
   6.160 +         rightMatrix   = resWorkUnit->rightMatrix;
   6.161 +         //start and end row in result matrix == start and end row in left input matrix.
   6.162 +         finalStartRow = resWorkUnit->leftStartRow;
   6.163 +         numResRows    = resWorkUnit->leftEndRow - resWorkUnit->leftStartRow +1;
   6.164 +         //start and end col in result == start and end col in right input matrix.
   6.165 +         finalStartCol = resWorkUnit->rightStartCol;
   6.166 +         numResCols    = resWorkUnit->rightEndCol - resWorkUnit->rightStartCol + 1;
   6.167 +         partStride    = numResCols;
   6.168 +         finalStride   = resultMatrix->numCols; //cols in whole final result
   6.169   
   6.170 -         PR__free(aResult);
   6.171 +         /* accumulate from temp array to final result matrix's array
   6.172 +          * in final result array, have an offset to start row and offset to start col
   6.173 +          * then iterate within that..    
   6.174 +          * rows and cols in partial-result array start at zero..
   6.175 +          */
   6.176 +         for( partRow = 0; partRow < numResRows; partRow++ )
   6.177 +          { finalArrayStart = (finalStartRow + partRow) * finalStride + finalStartCol;
   6.178 +            partArrayStart  = partRow * partStride;
   6.179 +            for( partCol = 0; partCol < numResCols; partCol++ )
   6.180 +             {
   6.181 +               finalArray[ finalArrayStart + partCol ] +=
   6.182 +                partArray[ partArrayStart + partCol ];
   6.183 +             }
   6.184 +          }
   6.185 +		  /*<for testing, repeat same work bunch of times -- so don't free>*/
   6.186 +//         PR__free(resWorkUnit->partResArray);
   6.187 +//         PR__free(resWorkUnit);
   6.188         }
   6.189  
   6.190        //tell producers they can go on to next matrix
   6.191 @@ -103,90 +122,87 @@
   6.192     VReo__end_VP(animVP);
   6.193   }
   6.194  
   6.195 -inline void 
   6.196 -accumulateResult( float32 *resultArray, float32 *subMatrixPairResultArray,
   6.197 -                  int32    startRow,
   6.198 -                  int32    numRows,
   6.199 -                  int32    startCol,
   6.200 -                  int32    numCols,
   6.201 -                  int32    numOrigCols )
   6.202 - { int32 row, col;
   6.203  
   6.204 -   for( row = 0; row < numRows; row++ )
   6.205 -    {
   6.206 -      for( col = 0; col < numCols; col++ )
   6.207 +//=====================================
   6.208 +/*Calculates a product of two sub-matrices, placing result into result matrix
   6.209 + * The inputs are specified by start and end rows and cols, but use the original
   6.210 + * input matrices.
   6.211 + *Uses a result matrix that is just for this output.
   6.212 + * 
   6.213 + */
   6.214 +void
   6.215 +calcProduct( void *_inputParams )
   6.216 + { 
   6.217 +   MatrixMultWorkUnit   *workUnit;
   6.218 +   int             resRow, resCol;
   6.219 +   int             vecPos, rightArrayStart, resArrayStart;
   6.220 +   int             leftStride, rightStride;
   6.221 +   float32        *leftArray, *rightArray, *resArray, leftElem;
   6.222 +   Matrix         *leftMatrix, *rightMatrix;
   6.223 +
   6.224 +   workUnit  = (MatrixMultWorkUnit *)_inputParams;
   6.225 +   
   6.226 +   //A vector is one row of left sub-matrix, times one col of right sub-matrix
   6.227 +   // it marches down both the left row from the row's start col to its end col,
   6.228 +   // and also marches down the right col, from its start row to its end row.
   6.229 +   
   6.230 +   leftMatrix  = workUnit->leftMatrix;
   6.231 +   rightMatrix = workUnit->rightMatrix;
   6.232 +   
   6.233 +   leftArray   = leftMatrix->array;
   6.234 +   rightArray  = rightMatrix->array;
   6.235 +   resArray    = workUnit->prodArray; //a temp array for result of this one sub-matrix
   6.236 +
   6.237 +   leftStride  = leftMatrix->numCols; //numCols is for entire input matrix
   6.238 +   rightStride = rightMatrix->numCols;// not the sub-piece
   6.239 +   
   6.240 +   int32 rightNumCols, resStride, resNumCols, resNumRows, leftNumCols;
   6.241 +   int32 leftStartRow, leftStartCol, rightStartCol;
   6.242 +   //result array is sized to this sub-piece.. (+1 'cause 1st idx is 0)
   6.243 +   rightNumCols  = workUnit->rightEndCol - workUnit->rightStartCol + 1;
   6.244 +   resStride     = rightNumCols;
   6.245 +   resNumCols    = rightNumCols;
   6.246 +   resNumRows    = workUnit->leftEndRow - workUnit->leftStartRow + 1;
   6.247 +   leftNumCols   = workUnit->leftEndCol - workUnit->leftStartCol + 1;
   6.248 +   leftStartRow  = workUnit->leftStartRow;
   6.249 +   leftStartCol  = workUnit->leftStartCol;
   6.250 +   rightStartCol = workUnit->rightStartCol;
   6.251 + 
   6.252 +   /* In order to use all elements of right matrix within a cache line,
   6.253 +    * switch the loop nest around, so that march down row of right matrix,
   6.254 +	* reusing single element of left matrix with them all..
   6.255 +   for i
   6.256 +      for k
   6.257 +         a = A[i][k]
   6.258 +         for j
   6.259 +            R[i][j] = a * B[k][j]
   6.260 +    */          
   6.261 +   
   6.262 +   for( resRow = 0; resRow < resNumRows; resRow++ )
   6.263 +    { //left input matrix starts at startRow,
   6.264 +	  // right starts at startCol, then both march down the vector..
   6.265 +	  // so, use an iteration variable that marches down vector, and add it to
   6.266 +	  // start positions for left and right arrays..
   6.267 +      for( vecPos = 0; vecPos < leftNumCols; vecPos++ )
   6.268         {
   6.269 -         resultArray[ (row + startRow) * numOrigCols + (col + startCol) ] +=
   6.270 -            subMatrixPairResultArray[ row * numCols + col ];
   6.271 +         leftElem    = 
   6.272 +            leftArray[ (leftStartRow + resRow) * leftStride + leftStartCol + vecPos ];
   6.273 +			//inner loop will march down this row inside right matrix's array
   6.274 +         rightArrayStart = vecPos * rightStride + rightStartCol;
   6.275 +         resArrayStart = resRow * resStride;
   6.276 +         
   6.277 +         for( resCol = 0; resCol < resNumCols; resCol++ )
   6.278 +          {
   6.279 +            resArray[ resArrayStart + resCol ] +=
   6.280 +             leftElem * rightArray[ rightArrayStart + resCol ];
   6.281 +          }
   6.282 +
   6.283         }
   6.284      }
   6.285 -
   6.286   }
   6.287  
   6.288  
   6.289 -                        startRow = aResult->leftSubMatrix->origStartRow;
   6.290 -                        numRows = aResult->leftSubMatrix->numRows,
   6.291 -                        startCol = aResult->rightSubMatrix->origStartCol,
   6.292 -                        numCols = aResult->rightSubMatrix->numCols,
   6.293 -                        numOrigCols = aResult->rightSubMatrix->origMatrix->numCols
   6.294  
   6.295 -   for( row = 0; row < numRows; row++ )
   6.296 -    {
   6.297 -      for( col = 0; col < numCols; col++ )
   6.298 -       {
   6.299 -         resultArray[ (row + startRow) * numOrigCols + (col + startCol) ] +=
   6.300 -            aResArray[ row * numCols + col ];
   6.301 -       }
   6.302 -    }
   6.303  
   6.304  
   6.305 -//=====================================
   6.306 -/*A Vector processor is created with an environment that holds two matrices,
   6.307 - * the row and col that it owns, and the name of a result gathering
   6.308 - * processor.
   6.309 - *It calculates its vector product then sends the result to the result
   6.310 - * processor, which puts it into the result matrix and returns that matrix
   6.311 - * when all is done.
   6.312 - */
   6.313 -void *
   6.314 -calcVector( void *data )
   6.315 - { 
   6.316 -   VectorParams   *params;
   6.317 -   int             myRow, myCol, vectLength, pos;
   6.318 -   float32        *leftMatrixArray, *rightMatrixArray, result = 0.0;
   6.319 -   Matrix         *leftMatrix, *rightMatrix;
   6.320  
   6.321 -   params      = (VectorParams *)data;
   6.322 -   myCol       = params->myCol;
   6.323 -   myRow       = params->myRow;
   6.324 -   vectLength  = params->vectLength;
   6.325 -   leftMatrix  = params->leftMatrix;
   6.326 -   rightMatrix = params->rightMatrix;
   6.327 -   leftMatrixArray  = leftMatrix->array;
   6.328 -   rightMatrixArray = rightMatrix->array;
   6.329 -         //=====================  DEBUG  ======================
   6.330 -         #ifdef PRINT_DEBUG_1
   6.331 -         if( myCol == 0 )
   6.332 -            printf("start vector: %d, %d\n", myRow, myCol ); fflush(stdin);
   6.333 -         #endif
   6.334 -         //====================================================
   6.335 -
   6.336 -   for( pos = 0; pos < vectLength; pos++ )
   6.337 -    {
   6.338 -      result += *(leftMatrixArray  + myRow * vectLength + pos)  *
   6.339 -                *(rightMatrixArray + pos   * vectLength + myCol);
   6.340 -    }
   6.341 -   params->result = result;
   6.342 -
   6.343 -      //Send result to results thread
   6.344 -   pthread_mutex_lock(   &(globals->vector_mutex) );//only get
   6.345 -   //the lock when results thd is inside wait.
   6.346 -   globals->currVector = params;
   6.347 -   pthread_cond_signal(  &(globals->vector_cond) );
   6.348 -   pthread_mutex_unlock( &(globals->vector_mutex) );//release
   6.349 -   //wait-er -- cond_signal implemented such that wait-er gets lock, no other
   6.350 -
   6.351 -   pthread_exit(0);
   6.352 - }
   6.353 -
   6.354 -//=======================================
     7.1 --- a/Reo__Matrix_Mult/Reo__Matrix_Mult.h	Sun Feb 02 17:58:41 2014 -0800
     7.2 +++ b/Reo__Matrix_Mult/Reo__Matrix_Mult.h	Wed Feb 19 09:27:10 2014 -0800
     7.3 @@ -5,11 +5,38 @@
     7.4  
     7.5  #include <PR__include/langlets/vreo_wrapper_library.h>
     7.6  #include "Circuit.h"
     7.7 -
     7.8 +#include "../Matrix_Mult.h"
     7.9  
    7.10  extern int NUM_ITER;
    7.11  
    7.12  //===============================  Defines  ==============================
    7.13 +/* The parameter values in here represent one unit of work
    7.14 + */
    7.15 +typedef struct
    7.16 + { 
    7.17 +      // pointers to shared data..  the result matrix must be created when the
    7.18 +      //  left and right matrices are put into the root ancestor DKUPiece.
    7.19 +   Matrix * leftMatrix;
    7.20 +   Matrix * rightMatrix;
    7.21 +   Matrix * resultMatrix;
    7.22 +
    7.23 +      // define the starting and ending boundaries for this piece of the
    7.24 +      //  result matrix.  These are derivable from the left and right
    7.25 +      //  matrices, but included them for readability of code.
    7.26 +   int prodStartRow, prodEndRow;
    7.27 +   int prodStartCol, prodEndCol;
    7.28 +   float *prodArray; //array for just the partial product of this work unit
    7.29 +   
    7.30 +      // Start and end of the portion of the left matrix that contributes to
    7.31 +      //  this piece of the product
    7.32 +   int leftStartRow, leftEndRow;
    7.33 +   int leftStartCol, leftEndCol;
    7.34 +      // Start and end of the portion of the right matrix that contributes to
    7.35 +      //  this piece of the product
    7.36 +   int rightStartRow, rightEndRow;
    7.37 +   int rightStartCol, rightEndCol;
    7.38 + }
    7.39 +MatrixMultWorkUnit;
    7.40  
    7.41  //==============================  Structures  ==============================
    7.42  typedef struct
    7.43 @@ -22,42 +49,10 @@
    7.44  
    7.45  typedef struct
    7.46   {
    7.47 -   int numRows;
    7.48 -   int numCols;
    7.49 +   int numProducers;
    7.50   }
    7.51 -ResultsParams;
    7.52 +ConsParams;
    7.53  
    7.54 -typedef struct
    7.55 - { 
    7.56 -   int        myCol;
    7.57 -   int        myRow;
    7.58 -   int        vectLength;
    7.59 -   Matrix    *leftMatrix;
    7.60 -   Matrix    *rightMatrix;
    7.61 -   float32    result;
    7.62 - }
    7.63 -VectorParams;
    7.64 -
    7.65 -typedef struct
    7.66 - {
    7.67 -      //for communicating vector results to results Thd
    7.68 -   pthread_mutex_t  vector_mutex;
    7.69 -   pthread_cond_t   vector_cond;
    7.70 -   VectorParams    *currVector;
    7.71 -
    7.72 -      //for communicating results array back to seed (divider) Thd
    7.73 -   pthread_mutex_t  results_mutex;
    7.74 -   pthread_cond_t   results_cond;
    7.75 -   float32         *results;
    7.76 -
    7.77 -      //for ensuring results thd has vector lock before making vector thds
    7.78 -   pthread_mutex_t  start_mutex;
    7.79 -   pthread_cond_t   start_cond;
    7.80 -
    7.81 -   Matrix *rightMatrix;
    7.82 -   Matrix *resultMatrix;
    7.83 - }
    7.84 -MatrixMultGlobals;
    7.85  
    7.86  
    7.87  // NOTE: this is a birth function param.  The first field of any structure
    7.88 @@ -68,14 +63,15 @@
    7.89  
    7.90  	VReoBridge **inBridges;    //array of pointers into circuit's array of bridges
    7.91  	VReoBridge **outBridges;   //array of pointers into circuit's array of bridges
    7.92 -} TestAppProducerParams;
    7.93 +   void        *initData;
    7.94 + } VPParams;
    7.95  
    7.96  typedef struct { //The first field must be pointer to a circuit (because is param to birth Fn)
    7.97  	VReoCircuit *circuit;  //First field must ALWAYS be a pointer to a circuit
    7.98  
    7.99  	VReoBridge **inBridges;    //array of pointers into circuit's array of bridges
   7.100  	VReoBridge **outBridges;   //array of pointers into circuit's array of bridges
   7.101 -} TestAppConsumerParams;
   7.102 +} MatrixMultResultGatherParams;
   7.103  
   7.104  typedef struct {
   7.105  	int32 producerID;
   7.106 @@ -87,9 +83,10 @@
   7.107  void producer_Fn(void *data, SlaveVP *animatingVP);
   7.108  void consumer_Fn(void *data, SlaveVP *animatingVP);
   7.109  
   7.110 -void *divideIntoVectors( void *data );
   7.111 -void *calcVector(        void *data );
   7.112 -void *gatherResults(     void *data );
   7.113 +MatrixMultWorkUnit **
   7.114 +divideWork( Matrix *leftMatrix, Matrix *rightMatrix, Matrix *resultMatrix,
   7.115 +            int targetNumUnits );
   7.116 +void calcProduct(        void *data );
   7.117  
   7.118  //================================ Global Vars ==============================
   7.119  
     8.1 --- a/Reo__Matrix_Mult/Result_Pr.c	Sun Feb 02 17:58:41 2014 -0800
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,9 +0,0 @@
     8.4 -/*
     8.5 - *  Copyright 2009 OpenSourceCodeStewardshipFoundation.org
     8.6 - *  Licensed under GNU General Public License version 2
     8.7 - *
     8.8 - * Author: seanhalle@yahoo.com
     8.9 - *
    8.10 - */
    8.11 -
    8.12 -#include "PThread__Matrix_Mult.h"
     9.1 --- a/Reo__Matrix_Mult/SeedVP.c	Sun Feb 02 17:58:41 2014 -0800
     9.2 +++ b/Reo__Matrix_Mult/SeedVP.c	Wed Feb 19 09:27:10 2014 -0800
     9.3 @@ -1,101 +1,19 @@
     9.4 +/*
     9.5 + *  Copyright 2014 OpenSourceResearchInstitute.org
     9.6 + *  Licensed under GNU General Public License version 2
     9.7 + *
     9.8 + * Author: seanhalle@yahoo.com
     9.9 + *
    9.10 + */
    9.11 +
    9.12  #include <math.h>
    9.13  #include <string.h>
    9.14  
    9.15 -#include "VReo__Test_App.h"
    9.16 +#include "Reo__Matrix_Mult.h"
    9.17  
    9.18  #define NO_INPUT NULL
    9.19  
    9.20 -// =============================================================================
    9.21 -
    9.22 -//SELECT how the measurement is done
    9.23 -//only one must be enabled
    9.24 -#define MEASURE_TSC
    9.25 -//#define MEASURE_PERF
    9.26 -
    9.27 -#define saveTimeStampCountInto(low, high) \
    9.28 -   asm volatile("RDTSC;                   \
    9.29 -                 movl %%eax, %0;          \
    9.30 -                 movl %%edx, %1;"         \
    9.31 -   /* outputs */ : "=m" (low), "=m" (high)\
    9.32 -   /* inputs  */ :                        \
    9.33 -   /* clobber */ : "%eax", "%edx"         \
    9.34 -                );
    9.35 -
    9.36 -#define saveLowTimeStampCountInto(low)    \
    9.37 -   asm volatile("RDTSC;                   \
    9.38 -                 movl %%eax, %0;"         \
    9.39 -   /* outputs */ : "=m" (low)             \
    9.40 -   /* inputs  */ :                        \
    9.41 -   /* clobber */ : "%eax", "%edx"         \
    9.42 -                );
    9.43 -
    9.44 -union timeStamp {
    9.45 -	uint32_t lowHigh[2]; //lowHigh[0] is low, lowHigh[1] is high
    9.46 -	uint64_t total;
    9.47 -};
    9.48 -
    9.49 -struct perfData {
    9.50 -	uint64_t cycles;
    9.51 -	uint64_t instructions;
    9.52 -};
    9.53 -
    9.54 -//MEASURE_TSC should be mutually exclusive with MEASURE_PERF
    9.55 -#ifdef MEASURE_TSC
    9.56 -typedef union timeStamp MeasStruct;
    9.57 -#else
    9.58 -#ifdef MEASURE_PERF
    9.59 -typedef struct perfData MeasStruct;
    9.60 -#endif
    9.61 -#endif
    9.62 -
    9.63 -
    9.64 -//read and save current perf-counter readings for cycles and instrs
    9.65 -#ifdef MEASURE_PERF
    9.66 -#define takeAMeas(core, perfDataStruct) do{     \
    9.67 -   int cycles_fd = cycles_counter_fd[core];             \
    9.68 -   int nread;                                           \
    9.69 -                                                        \
    9.70 -   nread = read(cycles_fd,&(perfDataStruct.cycles),sizeof(perfDataStruct.cycles));    \
    9.71 -   if(nread<0){                                         \
    9.72 -       perror("Error reading cycles counter");          \
    9.73 -       cycles = 0;                                      \
    9.74 -   }                                                    \
    9.75 - } while (0) //macro magic for scoping
    9.76 -#else
    9.77 -#define takeAMeas(core, timeStampStruct) do{     \
    9.78 -   saveTimeStampCountInto(timeStampStruct.lowHigh[0], timeStampStruct.lowHigh[1]);\
    9.79 - } while (0) //macro magic for scoping
    9.80 -#endif
    9.81 -
    9.82 -#ifdef MEASURE_PERF
    9.83 -int cycles_counter_fd[NUM_CORES];
    9.84 -int instrs_counter_fd[NUM_CORES];
    9.85 -int cycles_counter_main_fd;
    9.86 -#endif
    9.87 -
    9.88 -//===================================
    9.89 -/* provide a millisecond-resolution timer for each system */
    9.90 -#if defined(unix) || defined(__unix__)
    9.91 -#include <time.h>
    9.92 -#include <sys/time.h>
    9.93 -unsigned long get_msec(void) {
    9.94 -	static struct timeval timeval, first_timeval;
    9.95 -
    9.96 -	gettimeofday(&timeval, 0);
    9.97 -	if(first_timeval.tv_sec == 0) {
    9.98 -		first_timeval = timeval;
    9.99 -		return 0;
   9.100 -	}
   9.101 -	return (timeval.tv_sec - first_timeval.tv_sec) * 1000 + (timeval.tv_usec - first_timeval.tv_usec) / 1000;
   9.102 -}
   9.103 -#elif defined(__WIN32__) || defined(WIN32)
   9.104 -#include <windows.h>
   9.105 -unsigned long get_msec(void) {
   9.106 -	return GetTickCount();
   9.107 -}
   9.108 -#else
   9.109 -#error "I don't know how to measure time on your platform"
   9.110 -#endif
   9.111 +#include "MeasurementStuff.c"
   9.112  
   9.113  // =============================================================================
   9.114  
   9.115 @@ -120,26 +38,28 @@
   9.116   */
   9.117  void matrix_mult__seed_Fn(void *_params, SlaveVP *seedVP)
   9.118   {
   9.119 +   /* Declare variables. */
   9.120 +   VReoCircuit *circuit;
   9.121 +   //MatrixMultPiece **workPieces;
   9.122 +   
   9.123 +   //MatrixMultParams *params = (MatrixMultParams *)_params;
   9.124 +   
   9.125 +   /* Log. */
   9.126 +   DEBUG__printf(dbgAppFlow, "start app");
   9.127  
   9.128 -	/* Declare variables. */
   9.129 -	VReoCircuit *circuit;
   9.130 +   /* Start Reo plug-in. */
   9.131 +   VReo__start(seedVP);
   9.132  
   9.133 -	/* Log. */
   9.134 -	DEBUG__printf(dbgAppFlow, "start app");
   9.135  
   9.136 -	/* Start Reo plug-in. */
   9.137 -	VReo__start(seedVP);
   9.138 +   //take measurement before creation of threads, to get total exetime
   9.139 +   MeasStruct benchStartMeas, benchEndMeas;
   9.140 +   takeAMeas(0, benchStartMeas);
   9.141  
   9.142 -
   9.143 -	//take measurement before creation of threads, to get total exetime
   9.144 -	MeasStruct benchStartMeas, benchEndMeas;
   9.145 -	takeAMeas(0, benchStartMeas);
   9.146 -
   9.147 -	/* Create circuit. */
   9.148 +   /* Create circuit. */
   9.149  	circuit = (VReoCircuit *) create_circuit(seedVP);
   9.150  
   9.151 -	/* Create VPs. */
   9.152 -	create_VPs_and_connect(circuit, seedVP);
   9.153 +	/* Create VPs -- pass along the array of work units*/
   9.154 +	create_VPs_w_init_and_connect(circuit, _params, seedVP);
   9.155  
   9.156  	/* Wait for work to end. */
   9.157  	VReo__wait_for_all_VReo_created_work_to_end(seedVP);
    10.1 --- a/Reo__Matrix_Mult/Vector_Pr.c	Sun Feb 02 17:58:41 2014 -0800
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,10 +0,0 @@
    10.4 -/* 
    10.5 - *  Copyright 2009 OpenSourceCodeStewardshipFoundation.org
    10.6 - *  Licensed under GNU General Public License version 2
    10.7 - *
    10.8 - * Author: SeanHalle@yahoo.com
    10.9 - *
   10.10 - */
   10.11 -
   10.12 -#include "Reo__Matrix_Mult.h"
   10.13 -
    11.1 --- a/main.c	Sun Feb 02 17:58:41 2014 -0800
    11.2 +++ b/main.c	Wed Feb 19 09:27:10 2014 -0800
    11.3 @@ -11,15 +11,25 @@
    11.4  
    11.5  int NUM_ITER;
    11.6  
    11.7 -MatrixMultGlobals *globals;
    11.8  
    11.9  int main(int argc, char **argv) 
   11.10   { Matrix      *leftMatrix, *rightMatrix, *resultMatrix;
   11.11     ParamBag    *paramBag;
   11.12 +   MatrixMultWorkUnit **workUnits;
   11.13 +   VPParams    *vpParams, **vpParamsArray;
   11.14 +//   ProdParams  *prodParams;
   11.15 +//   ConsParams  *consParams;
   11.16 +   int32        numUnitsToMake, vpIdx;
   11.17 +   PRProcess   *matrixMultProcess;
   11.18     
   11.19 -         DEBUG__printf(TRUE, "arguments: %s | %s", argv[0], argv[1]);
   11.20 -   if(argc < 3) {printf("give num iter and path to param file on cmd line\n"); exit(1);}
   11.21 +         DEBUG__printf(TRUE, "arguments --  numIter: %s | path: %s", argv[1], argv[2] );
   11.22 +   if(argc < 3) {printf("give: num iter and path to param file on cmd line\n"); exit(1);}
   11.23     NUM_ITER = atoi(argv[1]);
   11.24 +   numUnitsToMake = NUM_PROD;  //defined by Reo circuit generator
   11.25 +   
   11.26 +         printf("[reo] Settings: %i workers, %i iterations | file: %s \n", NUM_PROD, NUM_ITER, argv[2]);
   11.27 +
   11.28 +         set_up_performance_counters();
   11.29     
   11.30     //read parameters, from file whose path is given on command line
   11.31     paramBag = makeParamBag();
   11.32 @@ -27,25 +37,51 @@
   11.33     initialize_Input_Matrices_Via( &leftMatrix, &rightMatrix, paramBag );
   11.34     
   11.35  
   11.36 -         printf("[reo] Settings: %i workers, %i iterations -- ", NUM_PROD, NUM_ITER);
   11.37 -
   11.38 -         set_up_performance_counters();
   11.39 -
   11.40 -   PRProcess *matrixMultProcess;
   11.41 -   PR_Main__start();
   11.42 -   PR_Main__set_app_info( "matrix multiply prod cons in Reo" );
   11.43 +   PR__start();
   11.44 +   PR__set_app_info( "matrix multiply prod cons in Reo" );
   11.45 +   ParamStruc *inputInfo = getParamFromBag( "inputInfo", paramBag );
   11.46 +   PR__set_input_info( inputInfo->strValue );
   11.47  	
   11.48 -   PR_Main__set_input_info( getParamFromBag( "inputInfo", paramBag ) );
   11.49 -	
   11.50 -   params->resultMatrix = malloc( numRows * numCols * sizeof(double) );
   11.51 -   params->workUnits = divideWork( leftInput, rightInput, numUnitsToMake );
   11.52 -	
   11.53 -   matrixMultProcess = PR_Main__create_process(&matrix_mult__seed_Fn, params);
   11.54 +   resultMatrix = PR__malloc( sizeof(Matrix) );
   11.55 +   resultMatrix->array = PR__malloc( leftMatrix->numRows * rightMatrix->numCols * sizeof(double) );
   11.56 +   resultMatrix->numCols = rightMatrix->numCols;
   11.57 +   resultMatrix->numRows = leftMatrix->numRows;
   11.58 +   workUnits = divideWork( leftMatrix, rightMatrix, resultMatrix, 
   11.59 +                           numUnitsToMake );
   11.60     
   11.61 -   PR_Main__wait_for_process_to_end(matrixMultProcess);
   11.62 -   PR__Main__wait_for_all_activity_to_end();
   11.63 +/* For now, don't need any params inside producer function other than
   11.64 + * the work unit.  Also, don't need any params at all inside cons function.
   11.65 + * So, just send the array of work units to the seed Fn, which will pass it
   11.66 + * along to the create_VP part of circuit creation, which will copy the
   11.67 + * elements of the array into the param structs given as initData to the
   11.68 + * VPs, as they are created.
   11.69 + *Need a dummy work unit added to end of work-unit array, to avoid a seg
   11.70 + * fault -- just did a bad hack inside divideWork.
   11.71 +   //Now, create params struct for each producer -- holds work unit
   11.72 +   for( vpIdx=0; vpIdx<numUnitsToMake; vpIdx++)
   11.73 +    {
   11.74 +      vpParams = PR__malloc( sizeof(VPParams) );
   11.75 +      prodParams = PR__malloc( sizeof(ProdParams) );
   11.76 +      
   11.77 +      vpParams->initData = prodParams; 
   11.78 +      vpParamsArray[vpIdx] = vpParams;
   11.79 +    }
   11.80 +  //create params for consumer
   11.81 +           
   11.82 +   vpParams = PR__malloc( sizeof(VPParams) );
   11.83 +     = malloc( sizeof(ProdParams) );
   11.84 +      
   11.85 +   vpParams->initData = 
   11.86 +   vpParamsArray[vpIdx] = vpParams; //this last entry is for the consumer
   11.87 +*/
   11.88 +   
   11.89 +   matrixMultProcess = PR__create_process( &matrix_mult__seed_Fn, 
   11.90 +                                                workUnits );
   11.91 +   
   11.92 +   PR__wait_for_process_to_end(matrixMultProcess);
   11.93 +   PR__wait_for_all_activity_to_end();
   11.94     fflush(stdout);
   11.95 -   PR_Main__shutdown();
   11.96 +   PR__shutdown();
   11.97     
   11.98     exit(0);
   11.99   }
    12.1 --- a/nb__Reo_matrix_mult/nbproject/Makefile-Debug.mk	Sun Feb 02 17:58:41 2014 -0800
    12.2 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-Debug.mk	Wed Feb 19 09:27:10 2014 -0800
    12.3 @@ -15,13 +15,14 @@
    12.4  CCADMIN=CCadmin
    12.5  RANLIB=ranlib
    12.6  CC=gcc
    12.7 -CCC=gcc-4.6
    12.8 -CXX=gcc-4.6
    12.9 +CCC=g++
   12.10 +CXX=g++
   12.11  FC=gfortran
   12.12  AS=as
   12.13  
   12.14  # Macros
   12.15  CND_PLATFORM=GNU-Linux-x86
   12.16 +CND_DLIB_EXT=so
   12.17  CND_CONF=Debug
   12.18  CND_DISTDIR=dist
   12.19  CND_BUILDDIR=build
   12.20 @@ -34,17 +35,14 @@
   12.21  
   12.22  # Object Files
   12.23  OBJECTFILES= \
   12.24 +	${OBJECTDIR}/_ext/1472/Matrix_Mult.o \
   12.25 +	${OBJECTDIR}/_ext/1539317932/ParamBag.o \
   12.26 +	${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o \
   12.27 +	${OBJECTDIR}/_ext/1702716545/Circuit.o \
   12.28 +	${OBJECTDIR}/_ext/1702716545/DivideWork.o \
   12.29  	${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o \
   12.30 -	${OBJECTDIR}/_ext/1539317932/ParamBag.o \
   12.31 -	${OBJECTDIR}/_ext/1702716545/Circuit.o \
   12.32 -	${OBJECTDIR}/_ext/1472/main.o \
   12.33 -	${OBJECTDIR}/_ext/1702716545/Divide_Pr.o \
   12.34 -	${OBJECTDIR}/_ext/1472/Matrix_Mult.o \
   12.35 -	${OBJECTDIR}/_ext/1702716545/Vector_Pr.o \
   12.36 -	${OBJECTDIR}/_ext/1702716545/Result_Pr.o \
   12.37 -	${OBJECTDIR}/_ext/1702716545/EntryPoint.o \
   12.38  	${OBJECTDIR}/_ext/1702716545/SeedVP.o \
   12.39 -	${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o
   12.40 +	${OBJECTDIR}/_ext/1472/main.o
   12.41  
   12.42  
   12.43  # C Compiler Flags
   12.44 @@ -69,62 +67,47 @@
   12.45  
   12.46  ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult: ${OBJECTFILES}
   12.47  	${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
   12.48 -	${LINK.c} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult ${OBJECTFILES} ${LDLIBSOPTIONS} 
   12.49 +	${LINK.c} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult ${OBJECTFILES} ${LDLIBSOPTIONS}
   12.50 +
   12.51 +${OBJECTDIR}/_ext/1472/Matrix_Mult.o: ../Matrix_Mult.c 
   12.52 +	${MKDIR} -p ${OBJECTDIR}/_ext/1472
   12.53 +	${RM} "$@.d"
   12.54 +	$(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c
   12.55 +
   12.56 +${OBJECTDIR}/_ext/1539317932/ParamBag.o: ../ParamHelper/ParamBag.c 
   12.57 +	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
   12.58 +	${RM} "$@.d"
   12.59 +	$(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c
   12.60 +
   12.61 +${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: ../ParamHelper/ReadParamsFromFile.c 
   12.62 +	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
   12.63 +	${RM} "$@.d"
   12.64 +	$(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c
   12.65 +
   12.66 +${OBJECTDIR}/_ext/1702716545/Circuit.o: ../Reo__Matrix_Mult/Circuit.c 
   12.67 +	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   12.68 +	${RM} "$@.d"
   12.69 +	$(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c
   12.70 +
   12.71 +${OBJECTDIR}/_ext/1702716545/DivideWork.o: ../Reo__Matrix_Mult/DivideWork.c 
   12.72 +	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   12.73 +	${RM} "$@.d"
   12.74 +	$(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/DivideWork.o ../Reo__Matrix_Mult/DivideWork.c
   12.75  
   12.76  ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o: ../Reo__Matrix_Mult/Producer_and_Consumer.c 
   12.77  	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   12.78 -	${RM} $@.d
   12.79 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o ../Reo__Matrix_Mult/Producer_and_Consumer.c
   12.80 +	${RM} "$@.d"
   12.81 +	$(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o ../Reo__Matrix_Mult/Producer_and_Consumer.c
   12.82  
   12.83 -${OBJECTDIR}/_ext/1539317932/ParamBag.o: ../ParamHelper/ParamBag.c 
   12.84 -	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
   12.85 -	${RM} $@.d
   12.86 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c
   12.87 -
   12.88 -${OBJECTDIR}/_ext/1702716545/Circuit.o: ../Reo__Matrix_Mult/Circuit.c 
   12.89 +${OBJECTDIR}/_ext/1702716545/SeedVP.o: ../Reo__Matrix_Mult/SeedVP.c 
   12.90  	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   12.91 -	${RM} $@.d
   12.92 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c
   12.93 +	${RM} "$@.d"
   12.94 +	$(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c
   12.95  
   12.96  ${OBJECTDIR}/_ext/1472/main.o: ../main.c 
   12.97  	${MKDIR} -p ${OBJECTDIR}/_ext/1472
   12.98 -	${RM} $@.d
   12.99 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1472/main.o ../main.c
  12.100 -
  12.101 -${OBJECTDIR}/_ext/1702716545/Divide_Pr.o: ../Reo__Matrix_Mult/Divide_Pr.c 
  12.102 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  12.103 -	${RM} $@.d
  12.104 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Divide_Pr.o ../Reo__Matrix_Mult/Divide_Pr.c
  12.105 -
  12.106 -${OBJECTDIR}/_ext/1472/Matrix_Mult.o: ../Matrix_Mult.c 
  12.107 -	${MKDIR} -p ${OBJECTDIR}/_ext/1472
  12.108 -	${RM} $@.d
  12.109 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c
  12.110 -
  12.111 -${OBJECTDIR}/_ext/1702716545/Vector_Pr.o: ../Reo__Matrix_Mult/Vector_Pr.c 
  12.112 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  12.113 -	${RM} $@.d
  12.114 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Vector_Pr.o ../Reo__Matrix_Mult/Vector_Pr.c
  12.115 -
  12.116 -${OBJECTDIR}/_ext/1702716545/Result_Pr.o: ../Reo__Matrix_Mult/Result_Pr.c 
  12.117 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  12.118 -	${RM} $@.d
  12.119 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Result_Pr.o ../Reo__Matrix_Mult/Result_Pr.c
  12.120 -
  12.121 -${OBJECTDIR}/_ext/1702716545/EntryPoint.o: ../Reo__Matrix_Mult/EntryPoint.c 
  12.122 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  12.123 -	${RM} $@.d
  12.124 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/EntryPoint.o ../Reo__Matrix_Mult/EntryPoint.c
  12.125 -
  12.126 -${OBJECTDIR}/_ext/1702716545/SeedVP.o: ../Reo__Matrix_Mult/SeedVP.c 
  12.127 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  12.128 -	${RM} $@.d
  12.129 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c
  12.130 -
  12.131 -${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: ../ParamHelper/ReadParamsFromFile.c 
  12.132 -	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
  12.133 -	${RM} $@.d
  12.134 -	$(COMPILE.c) -g -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c
  12.135 +	${RM} "$@.d"
  12.136 +	$(COMPILE.c) -g -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c
  12.137  
  12.138  # Subprojects
  12.139  .build-subprojects:
    13.1 --- a/nb__Reo_matrix_mult/nbproject/Makefile-Debug_Sequential.mk	Sun Feb 02 17:58:41 2014 -0800
    13.2 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-Debug_Sequential.mk	Wed Feb 19 09:27:10 2014 -0800
    13.3 @@ -15,13 +15,14 @@
    13.4  CCADMIN=CCadmin
    13.5  RANLIB=ranlib
    13.6  CC=gcc
    13.7 -CCC=gcc-4.6
    13.8 -CXX=gcc-4.6
    13.9 +CCC=g++
   13.10 +CXX=g++
   13.11  FC=gfortran
   13.12  AS=as
   13.13  
   13.14  # Macros
   13.15  CND_PLATFORM=GNU-Linux-x86
   13.16 +CND_DLIB_EXT=so
   13.17  CND_CONF=Debug_Sequential
   13.18  CND_DISTDIR=dist
   13.19  CND_BUILDDIR=build
   13.20 @@ -34,17 +35,14 @@
   13.21  
   13.22  # Object Files
   13.23  OBJECTFILES= \
   13.24 +	${OBJECTDIR}/_ext/1472/Matrix_Mult.o \
   13.25 +	${OBJECTDIR}/_ext/1539317932/ParamBag.o \
   13.26 +	${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o \
   13.27 +	${OBJECTDIR}/_ext/1702716545/Circuit.o \
   13.28 +	${OBJECTDIR}/_ext/1702716545/DivideWork.o \
   13.29  	${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o \
   13.30 -	${OBJECTDIR}/_ext/1539317932/ParamBag.o \
   13.31 -	${OBJECTDIR}/_ext/1702716545/Circuit.o \
   13.32 -	${OBJECTDIR}/_ext/1472/main.o \
   13.33 -	${OBJECTDIR}/_ext/1702716545/Divide_Pr.o \
   13.34 -	${OBJECTDIR}/_ext/1472/Matrix_Mult.o \
   13.35 -	${OBJECTDIR}/_ext/1702716545/Vector_Pr.o \
   13.36 -	${OBJECTDIR}/_ext/1702716545/Result_Pr.o \
   13.37 -	${OBJECTDIR}/_ext/1702716545/EntryPoint.o \
   13.38  	${OBJECTDIR}/_ext/1702716545/SeedVP.o \
   13.39 -	${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o
   13.40 +	${OBJECTDIR}/_ext/1472/main.o
   13.41  
   13.42  
   13.43  # C Compiler Flags
   13.44 @@ -61,7 +59,7 @@
   13.45  ASFLAGS=
   13.46  
   13.47  # Link Libraries and Options
   13.48 -LDLIBSOPTIONS=-L../../PR__lib
   13.49 +LDLIBSOPTIONS=-L../../PR__lib -lpr__ml__sharedmem__dku_debug -lprmalloc -lprparam -lprqueue -lreo_wrapper_lib_opt1
   13.50  
   13.51  # Build Targets
   13.52  .build-conf: ${BUILD_SUBPROJECTS}
   13.53 @@ -69,62 +67,47 @@
   13.54  
   13.55  ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult: ${OBJECTFILES}
   13.56  	${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
   13.57 -	${LINK.c} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult ${OBJECTFILES} ${LDLIBSOPTIONS} 
   13.58 +	${LINK.c} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult ${OBJECTFILES} ${LDLIBSOPTIONS}
   13.59 +
   13.60 +${OBJECTDIR}/_ext/1472/Matrix_Mult.o: ../Matrix_Mult.c 
   13.61 +	${MKDIR} -p ${OBJECTDIR}/_ext/1472
   13.62 +	${RM} "$@.d"
   13.63 +	$(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
   13.64 +
   13.65 +${OBJECTDIR}/_ext/1539317932/ParamBag.o: ../ParamHelper/ParamBag.c 
   13.66 +	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
   13.67 +	${RM} "$@.d"
   13.68 +	$(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
   13.69 +
   13.70 +${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: ../ParamHelper/ReadParamsFromFile.c 
   13.71 +	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
   13.72 +	${RM} "$@.d"
   13.73 +	$(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
   13.74 +
   13.75 +${OBJECTDIR}/_ext/1702716545/Circuit.o: ../Reo__Matrix_Mult/Circuit.c 
   13.76 +	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   13.77 +	${RM} "$@.d"
   13.78 +	$(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
   13.79 +
   13.80 +${OBJECTDIR}/_ext/1702716545/DivideWork.o: ../Reo__Matrix_Mult/DivideWork.c 
   13.81 +	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   13.82 +	${RM} "$@.d"
   13.83 +	$(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
   13.84  
   13.85  ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o: ../Reo__Matrix_Mult/Producer_and_Consumer.c 
   13.86  	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   13.87 -	${RM} $@.d
   13.88 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o ../Reo__Matrix_Mult/Producer_and_Consumer.c
   13.89 +	${RM} "$@.d"
   13.90 +	$(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
   13.91  
   13.92 -${OBJECTDIR}/_ext/1539317932/ParamBag.o: ../ParamHelper/ParamBag.c 
   13.93 -	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
   13.94 -	${RM} $@.d
   13.95 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c
   13.96 -
   13.97 -${OBJECTDIR}/_ext/1702716545/Circuit.o: ../Reo__Matrix_Mult/Circuit.c 
   13.98 +${OBJECTDIR}/_ext/1702716545/SeedVP.o: ../Reo__Matrix_Mult/SeedVP.c 
   13.99  	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  13.100 -	${RM} $@.d
  13.101 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c
  13.102 +	${RM} "$@.d"
  13.103 +	$(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
  13.104  
  13.105  ${OBJECTDIR}/_ext/1472/main.o: ../main.c 
  13.106  	${MKDIR} -p ${OBJECTDIR}/_ext/1472
  13.107 -	${RM} $@.d
  13.108 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1472/main.o ../main.c
  13.109 -
  13.110 -${OBJECTDIR}/_ext/1702716545/Divide_Pr.o: ../Reo__Matrix_Mult/Divide_Pr.c 
  13.111 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  13.112 -	${RM} $@.d
  13.113 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Divide_Pr.o ../Reo__Matrix_Mult/Divide_Pr.c
  13.114 -
  13.115 -${OBJECTDIR}/_ext/1472/Matrix_Mult.o: ../Matrix_Mult.c 
  13.116 -	${MKDIR} -p ${OBJECTDIR}/_ext/1472
  13.117 -	${RM} $@.d
  13.118 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c
  13.119 -
  13.120 -${OBJECTDIR}/_ext/1702716545/Vector_Pr.o: ../Reo__Matrix_Mult/Vector_Pr.c 
  13.121 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  13.122 -	${RM} $@.d
  13.123 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Vector_Pr.o ../Reo__Matrix_Mult/Vector_Pr.c
  13.124 -
  13.125 -${OBJECTDIR}/_ext/1702716545/Result_Pr.o: ../Reo__Matrix_Mult/Result_Pr.c 
  13.126 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  13.127 -	${RM} $@.d
  13.128 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Result_Pr.o ../Reo__Matrix_Mult/Result_Pr.c
  13.129 -
  13.130 -${OBJECTDIR}/_ext/1702716545/EntryPoint.o: ../Reo__Matrix_Mult/EntryPoint.c 
  13.131 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  13.132 -	${RM} $@.d
  13.133 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/EntryPoint.o ../Reo__Matrix_Mult/EntryPoint.c
  13.134 -
  13.135 -${OBJECTDIR}/_ext/1702716545/SeedVP.o: ../Reo__Matrix_Mult/SeedVP.c 
  13.136 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  13.137 -	${RM} $@.d
  13.138 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c
  13.139 -
  13.140 -${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: ../ParamHelper/ReadParamsFromFile.c 
  13.141 -	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
  13.142 -	${RM} $@.d
  13.143 -	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -I../.. -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c
  13.144 +	${RM} "$@.d"
  13.145 +	$(COMPILE.c) -g -DDEBUG__SEQUENTIAL_MODE -DDEBUG__TURN_ON_DEBUG_PRINT -I../.. -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c
  13.146  
  13.147  # Subprojects
  13.148  .build-subprojects:
    14.1 --- a/nb__Reo_matrix_mult/nbproject/Makefile-Release.mk	Sun Feb 02 17:58:41 2014 -0800
    14.2 +++ b/nb__Reo_matrix_mult/nbproject/Makefile-Release.mk	Wed Feb 19 09:27:10 2014 -0800
    14.3 @@ -15,13 +15,14 @@
    14.4  CCADMIN=CCadmin
    14.5  RANLIB=ranlib
    14.6  CC=gcc
    14.7 -CCC=gcc-4.6
    14.8 -CXX=gcc-4.6
    14.9 +CCC=g++
   14.10 +CXX=g++
   14.11  FC=gfortran
   14.12  AS=as
   14.13  
   14.14  # Macros
   14.15  CND_PLATFORM=GNU-Linux-x86
   14.16 +CND_DLIB_EXT=so
   14.17  CND_CONF=Release
   14.18  CND_DISTDIR=dist
   14.19  CND_BUILDDIR=build
   14.20 @@ -34,17 +35,14 @@
   14.21  
   14.22  # Object Files
   14.23  OBJECTFILES= \
   14.24 +	${OBJECTDIR}/_ext/1472/Matrix_Mult.o \
   14.25 +	${OBJECTDIR}/_ext/1539317932/ParamBag.o \
   14.26 +	${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o \
   14.27 +	${OBJECTDIR}/_ext/1702716545/Circuit.o \
   14.28 +	${OBJECTDIR}/_ext/1702716545/DivideWork.o \
   14.29  	${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o \
   14.30 -	${OBJECTDIR}/_ext/1539317932/ParamBag.o \
   14.31 -	${OBJECTDIR}/_ext/1702716545/Circuit.o \
   14.32 -	${OBJECTDIR}/_ext/1472/main.o \
   14.33 -	${OBJECTDIR}/_ext/1702716545/Divide_Pr.o \
   14.34 -	${OBJECTDIR}/_ext/1472/Matrix_Mult.o \
   14.35 -	${OBJECTDIR}/_ext/1702716545/Vector_Pr.o \
   14.36 -	${OBJECTDIR}/_ext/1702716545/Result_Pr.o \
   14.37 -	${OBJECTDIR}/_ext/1702716545/EntryPoint.o \
   14.38  	${OBJECTDIR}/_ext/1702716545/SeedVP.o \
   14.39 -	${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o
   14.40 +	${OBJECTDIR}/_ext/1472/main.o
   14.41  
   14.42  
   14.43  # C Compiler Flags
   14.44 @@ -69,62 +67,47 @@
   14.45  
   14.46  ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult: ${OBJECTFILES}
   14.47  	${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
   14.48 -	${LINK.c} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult ${OBJECTFILES} ${LDLIBSOPTIONS} 
   14.49 +	${LINK.c} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult ${OBJECTFILES} ${LDLIBSOPTIONS}
   14.50 +
   14.51 +${OBJECTDIR}/_ext/1472/Matrix_Mult.o: ../Matrix_Mult.c 
   14.52 +	${MKDIR} -p ${OBJECTDIR}/_ext/1472
   14.53 +	${RM} "$@.d"
   14.54 +	$(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c
   14.55 +
   14.56 +${OBJECTDIR}/_ext/1539317932/ParamBag.o: ../ParamHelper/ParamBag.c 
   14.57 +	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
   14.58 +	${RM} "$@.d"
   14.59 +	$(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c
   14.60 +
   14.61 +${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: ../ParamHelper/ReadParamsFromFile.c 
   14.62 +	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
   14.63 +	${RM} "$@.d"
   14.64 +	$(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c
   14.65 +
   14.66 +${OBJECTDIR}/_ext/1702716545/Circuit.o: ../Reo__Matrix_Mult/Circuit.c 
   14.67 +	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   14.68 +	${RM} "$@.d"
   14.69 +	$(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c
   14.70 +
   14.71 +${OBJECTDIR}/_ext/1702716545/DivideWork.o: ../Reo__Matrix_Mult/DivideWork.c 
   14.72 +	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   14.73 +	${RM} "$@.d"
   14.74 +	$(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/DivideWork.o ../Reo__Matrix_Mult/DivideWork.c
   14.75  
   14.76  ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o: ../Reo__Matrix_Mult/Producer_and_Consumer.c 
   14.77  	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   14.78 -	${RM} $@.d
   14.79 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o ../Reo__Matrix_Mult/Producer_and_Consumer.c
   14.80 +	${RM} "$@.d"
   14.81 +	$(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/Producer_and_Consumer.o ../Reo__Matrix_Mult/Producer_and_Consumer.c
   14.82  
   14.83 -${OBJECTDIR}/_ext/1539317932/ParamBag.o: ../ParamHelper/ParamBag.c 
   14.84 -	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
   14.85 -	${RM} $@.d
   14.86 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1539317932/ParamBag.o ../ParamHelper/ParamBag.c
   14.87 -
   14.88 -${OBJECTDIR}/_ext/1702716545/Circuit.o: ../Reo__Matrix_Mult/Circuit.c 
   14.89 +${OBJECTDIR}/_ext/1702716545/SeedVP.o: ../Reo__Matrix_Mult/SeedVP.c 
   14.90  	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
   14.91 -	${RM} $@.d
   14.92 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Circuit.o ../Reo__Matrix_Mult/Circuit.c
   14.93 +	${RM} "$@.d"
   14.94 +	$(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c
   14.95  
   14.96  ${OBJECTDIR}/_ext/1472/main.o: ../main.c 
   14.97  	${MKDIR} -p ${OBJECTDIR}/_ext/1472
   14.98 -	${RM} $@.d
   14.99 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1472/main.o ../main.c
  14.100 -
  14.101 -${OBJECTDIR}/_ext/1702716545/Divide_Pr.o: ../Reo__Matrix_Mult/Divide_Pr.c 
  14.102 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  14.103 -	${RM} $@.d
  14.104 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Divide_Pr.o ../Reo__Matrix_Mult/Divide_Pr.c
  14.105 -
  14.106 -${OBJECTDIR}/_ext/1472/Matrix_Mult.o: ../Matrix_Mult.c 
  14.107 -	${MKDIR} -p ${OBJECTDIR}/_ext/1472
  14.108 -	${RM} $@.d
  14.109 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1472/Matrix_Mult.o ../Matrix_Mult.c
  14.110 -
  14.111 -${OBJECTDIR}/_ext/1702716545/Vector_Pr.o: ../Reo__Matrix_Mult/Vector_Pr.c 
  14.112 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  14.113 -	${RM} $@.d
  14.114 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Vector_Pr.o ../Reo__Matrix_Mult/Vector_Pr.c
  14.115 -
  14.116 -${OBJECTDIR}/_ext/1702716545/Result_Pr.o: ../Reo__Matrix_Mult/Result_Pr.c 
  14.117 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  14.118 -	${RM} $@.d
  14.119 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/Result_Pr.o ../Reo__Matrix_Mult/Result_Pr.c
  14.120 -
  14.121 -${OBJECTDIR}/_ext/1702716545/EntryPoint.o: ../Reo__Matrix_Mult/EntryPoint.c 
  14.122 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  14.123 -	${RM} $@.d
  14.124 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/EntryPoint.o ../Reo__Matrix_Mult/EntryPoint.c
  14.125 -
  14.126 -${OBJECTDIR}/_ext/1702716545/SeedVP.o: ../Reo__Matrix_Mult/SeedVP.c 
  14.127 -	${MKDIR} -p ${OBJECTDIR}/_ext/1702716545
  14.128 -	${RM} $@.d
  14.129 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1702716545/SeedVP.o ../Reo__Matrix_Mult/SeedVP.c
  14.130 -
  14.131 -${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o: ../ParamHelper/ReadParamsFromFile.c 
  14.132 -	${MKDIR} -p ${OBJECTDIR}/_ext/1539317932
  14.133 -	${RM} $@.d
  14.134 -	$(COMPILE.c) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/_ext/1539317932/ReadParamsFromFile.o ../ParamHelper/ReadParamsFromFile.c
  14.135 +	${RM} "$@.d"
  14.136 +	$(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/1472/main.o ../main.c
  14.137  
  14.138  # Subprojects
  14.139  .build-subprojects:
    15.1 --- a/nb__Reo_matrix_mult/nbproject/Package-Debug.bash	Sun Feb 02 17:58:41 2014 -0800
    15.2 +++ b/nb__Reo_matrix_mult/nbproject/Package-Debug.bash	Wed Feb 19 09:27:10 2014 -0800
    15.3 @@ -10,6 +10,7 @@
    15.4  CND_CONF=Debug
    15.5  CND_DISTDIR=dist
    15.6  CND_BUILDDIR=build
    15.7 +CND_DLIB_EXT=so
    15.8  NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
    15.9  TMPDIRNAME=tmp-packaging
   15.10  OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult
    16.1 --- a/nb__Reo_matrix_mult/nbproject/Package-Debug_Sequential.bash	Sun Feb 02 17:58:41 2014 -0800
    16.2 +++ b/nb__Reo_matrix_mult/nbproject/Package-Debug_Sequential.bash	Wed Feb 19 09:27:10 2014 -0800
    16.3 @@ -10,6 +10,7 @@
    16.4  CND_CONF=Debug_Sequential
    16.5  CND_DISTDIR=dist
    16.6  CND_BUILDDIR=build
    16.7 +CND_DLIB_EXT=so
    16.8  NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
    16.9  TMPDIRNAME=tmp-packaging
   16.10  OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult
    17.1 --- a/nb__Reo_matrix_mult/nbproject/Package-Release.bash	Sun Feb 02 17:58:41 2014 -0800
    17.2 +++ b/nb__Reo_matrix_mult/nbproject/Package-Release.bash	Wed Feb 19 09:27:10 2014 -0800
    17.3 @@ -10,6 +10,7 @@
    17.4  CND_CONF=Release
    17.5  CND_DISTDIR=dist
    17.6  CND_BUILDDIR=build
    17.7 +CND_DLIB_EXT=so
    17.8  NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
    17.9  TMPDIRNAME=tmp-packaging
   17.10  OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/nb__reo_matrix_mult
    18.1 --- a/nb__Reo_matrix_mult/nbproject/configurations.xml	Sun Feb 02 17:58:41 2014 -0800
    18.2 +++ b/nb__Reo_matrix_mult/nbproject/configurations.xml	Wed Feb 19 09:27:10 2014 -0800
    18.3 @@ -1,5 +1,5 @@
    18.4  <?xml version="1.0" encoding="UTF-8"?>
    18.5 -<configurationDescriptor version="80">
    18.6 +<configurationDescriptor version="90">
    18.7    <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
    18.8      <logicalFolder name="HeaderFiles"
    18.9                     displayName="Header Files"
   18.10 @@ -22,15 +22,10 @@
   18.11                       projectFiles="true">
   18.12          <itemPath>../Reo__Matrix_Mult/Circuit.c</itemPath>
   18.13          <itemPath>../Reo__Matrix_Mult/Circuit.h</itemPath>
   18.14 -        <itemPath>../Reo__Matrix_Mult/Divide_Pr.c</itemPath>
   18.15 -        <itemPath>../Reo__Matrix_Mult/EntryPoint.c</itemPath>
   18.16 -        <itemPath>../Reo__Matrix_Mult/PThread__Matrix_Mult.h</itemPath>
   18.17 +        <itemPath>../Reo__Matrix_Mult/DivideWork.c</itemPath>
   18.18          <itemPath>../Reo__Matrix_Mult/Producer_and_Consumer.c</itemPath>
   18.19 -        <itemPath>../Reo__Matrix_Mult/Result_Pr.c</itemPath>
   18.20 +        <itemPath>../Reo__Matrix_Mult/Reo__Matrix_Mult.h</itemPath>
   18.21          <itemPath>../Reo__Matrix_Mult/SeedVP.c</itemPath>
   18.22 -        <itemPath>../Reo__Matrix_Mult/VMS_primitive_data_types.h</itemPath>
   18.23 -        <itemPath>../Reo__Matrix_Mult/VReo__Test_App.h</itemPath>
   18.24 -        <itemPath>../Reo__Matrix_Mult/Vector_Pr.c</itemPath>
   18.25        </logicalFolder>
   18.26        <itemPath>../Matrix_Mult.c</itemPath>
   18.27        <itemPath>../Matrix_Mult.h</itemPath>
   18.28 @@ -56,16 +51,51 @@
   18.29    <confs>
   18.30      <conf name="Debug" type="1">
   18.31        <toolsSet>
   18.32 -        <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode>
   18.33          <compilerSet>default</compilerSet>
   18.34 +        <dependencyChecking>true</dependencyChecking>
   18.35 +        <rebuildPropChanged>false</rebuildPropChanged>
   18.36        </toolsSet>
   18.37        <compileType>
   18.38        </compileType>
   18.39 +      <item path="../Matrix_Mult.c" ex="false" tool="0" flavor2="0">
   18.40 +      </item>
   18.41 +      <item path="../Matrix_Mult.h" ex="false" tool="3" flavor2="0">
   18.42 +      </item>
   18.43 +      <item path="../ParamHelper/Param.h" ex="false" tool="3" flavor2="0">
   18.44 +      </item>
   18.45 +      <item path="../ParamHelper/ParamBag.c" ex="false" tool="0" flavor2="0">
   18.46 +      </item>
   18.47 +      <item path="../ParamHelper/ReadParamsFromFile.c"
   18.48 +            ex="false"
   18.49 +            tool="0"
   18.50 +            flavor2="0">
   18.51 +      </item>
   18.52 +      <item path="../Reo__Matrix_Mult/Circuit.c" ex="false" tool="0" flavor2="0">
   18.53 +      </item>
   18.54 +      <item path="../Reo__Matrix_Mult/Circuit.h" ex="false" tool="3" flavor2="0">
   18.55 +      </item>
   18.56 +      <item path="../Reo__Matrix_Mult/DivideWork.c" ex="false" tool="0" flavor2="0">
   18.57 +      </item>
   18.58 +      <item path="../Reo__Matrix_Mult/Producer_and_Consumer.c"
   18.59 +            ex="false"
   18.60 +            tool="0"
   18.61 +            flavor2="0">
   18.62 +      </item>
   18.63 +      <item path="../Reo__Matrix_Mult/Reo__Matrix_Mult.h"
   18.64 +            ex="false"
   18.65 +            tool="3"
   18.66 +            flavor2="0">
   18.67 +      </item>
   18.68 +      <item path="../Reo__Matrix_Mult/SeedVP.c" ex="false" tool="0" flavor2="0">
   18.69 +      </item>
   18.70 +      <item path="../main.c" ex="false" tool="0" flavor2="0">
   18.71 +      </item>
   18.72      </conf>
   18.73      <conf name="Release" type="1">
   18.74        <toolsSet>
   18.75 -        <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode>
   18.76          <compilerSet>default</compilerSet>
   18.77 +        <dependencyChecking>true</dependencyChecking>
   18.78 +        <rebuildPropChanged>false</rebuildPropChanged>
   18.79        </toolsSet>
   18.80        <compileType>
   18.81          <cTool>
   18.82 @@ -81,11 +111,45 @@
   18.83            <developmentMode>5</developmentMode>
   18.84          </asmTool>
   18.85        </compileType>
   18.86 +      <item path="../Matrix_Mult.c" ex="false" tool="0" flavor2="0">
   18.87 +      </item>
   18.88 +      <item path="../Matrix_Mult.h" ex="false" tool="3" flavor2="0">
   18.89 +      </item>
   18.90 +      <item path="../ParamHelper/Param.h" ex="false" tool="3" flavor2="0">
   18.91 +      </item>
   18.92 +      <item path="../ParamHelper/ParamBag.c" ex="false" tool="0" flavor2="0">
   18.93 +      </item>
   18.94 +      <item path="../ParamHelper/ReadParamsFromFile.c"
   18.95 +            ex="false"
   18.96 +            tool="0"
   18.97 +            flavor2="0">
   18.98 +      </item>
   18.99 +      <item path="../Reo__Matrix_Mult/Circuit.c" ex="false" tool="0" flavor2="0">
  18.100 +      </item>
  18.101 +      <item path="../Reo__Matrix_Mult/Circuit.h" ex="false" tool="3" flavor2="0">
  18.102 +      </item>
  18.103 +      <item path="../Reo__Matrix_Mult/DivideWork.c" ex="false" tool="0" flavor2="0">
  18.104 +      </item>
  18.105 +      <item path="../Reo__Matrix_Mult/Producer_and_Consumer.c"
  18.106 +            ex="false"
  18.107 +            tool="0"
  18.108 +            flavor2="0">
  18.109 +      </item>
  18.110 +      <item path="../Reo__Matrix_Mult/Reo__Matrix_Mult.h"
  18.111 +            ex="false"
  18.112 +            tool="3"
  18.113 +            flavor2="0">
  18.114 +      </item>
  18.115 +      <item path="../Reo__Matrix_Mult/SeedVP.c" ex="false" tool="0" flavor2="0">
  18.116 +      </item>
  18.117 +      <item path="../main.c" ex="false" tool="0" flavor2="0">
  18.118 +      </item>
  18.119      </conf>
  18.120      <conf name="Debug_Sequential" type="1">
  18.121        <toolsSet>
  18.122 -        <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode>
  18.123          <compilerSet>default</compilerSet>
  18.124 +        <dependencyChecking>true</dependencyChecking>
  18.125 +        <rebuildPropChanged>false</rebuildPropChanged>
  18.126        </toolsSet>
  18.127        <compileType>
  18.128          <cTool>
  18.129 @@ -94,14 +158,55 @@
  18.130            </incDir>
  18.131            <preprocessorList>
  18.132              <Elem>DEBUG__SEQUENTIAL_MODE</Elem>
  18.133 +            <Elem>DEBUG__TURN_ON_DEBUG_PRINT</Elem>
  18.134            </preprocessorList>
  18.135          </cTool>
  18.136          <linkerTool>
  18.137            <linkerAddLib>
  18.138              <pElem>../../PR__lib</pElem>
  18.139            </linkerAddLib>
  18.140 +          <linkerLibItems>
  18.141 +            <linkerLibLibItem>pr__ml__sharedmem__dku_debug</linkerLibLibItem>
  18.142 +            <linkerLibLibItem>prmalloc</linkerLibLibItem>
  18.143 +            <linkerLibLibItem>prparam</linkerLibLibItem>
  18.144 +            <linkerLibLibItem>prqueue</linkerLibLibItem>
  18.145 +            <linkerLibLibItem>reo_wrapper_lib_opt1</linkerLibLibItem>
  18.146 +          </linkerLibItems>
  18.147          </linkerTool>
  18.148        </compileType>
  18.149 +      <item path="../Matrix_Mult.c" ex="false" tool="0" flavor2="0">
  18.150 +      </item>
  18.151 +      <item path="../Matrix_Mult.h" ex="false" tool="3" flavor2="0">
  18.152 +      </item>
  18.153 +      <item path="../ParamHelper/Param.h" ex="false" tool="3" flavor2="0">
  18.154 +      </item>
  18.155 +      <item path="../ParamHelper/ParamBag.c" ex="false" tool="0" flavor2="0">
  18.156 +      </item>
  18.157 +      <item path="../ParamHelper/ReadParamsFromFile.c"
  18.158 +            ex="false"
  18.159 +            tool="0"
  18.160 +            flavor2="0">
  18.161 +      </item>
  18.162 +      <item path="../Reo__Matrix_Mult/Circuit.c" ex="false" tool="0" flavor2="0">
  18.163 +      </item>
  18.164 +      <item path="../Reo__Matrix_Mult/Circuit.h" ex="false" tool="3" flavor2="0">
  18.165 +      </item>
  18.166 +      <item path="../Reo__Matrix_Mult/DivideWork.c" ex="false" tool="0" flavor2="0">
  18.167 +      </item>
  18.168 +      <item path="../Reo__Matrix_Mult/Producer_and_Consumer.c"
  18.169 +            ex="false"
  18.170 +            tool="0"
  18.171 +            flavor2="0">
  18.172 +      </item>
  18.173 +      <item path="../Reo__Matrix_Mult/Reo__Matrix_Mult.h"
  18.174 +            ex="false"
  18.175 +            tool="3"
  18.176 +            flavor2="0">
  18.177 +      </item>
  18.178 +      <item path="../Reo__Matrix_Mult/SeedVP.c" ex="false" tool="0" flavor2="0">
  18.179 +      </item>
  18.180 +      <item path="../main.c" ex="false" tool="0" flavor2="0">
  18.181 +      </item>
  18.182      </conf>
  18.183    </confs>
  18.184  </configurationDescriptor>
    19.1 --- a/nb__Reo_matrix_mult/nbproject/private/configurations.xml	Sun Feb 02 17:58:41 2014 -0800
    19.2 +++ b/nb__Reo_matrix_mult/nbproject/private/configurations.xml	Wed Feb 19 09:27:10 2014 -0800
    19.3 @@ -1,5 +1,5 @@
    19.4  <?xml version="1.0" encoding="UTF-8"?>
    19.5 -<configurationDescriptor version="80">
    19.6 +<configurationDescriptor version="90">
    19.7    <projectmakefile>Makefile</projectmakefile>
    19.8    <confs>
    19.9      <conf name="Debug" type="1">
   19.10 @@ -19,9 +19,6 @@
   19.11          </gdb_options>
   19.12          <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
   19.13        </dbx_gdbdebugger>
   19.14 -      <gizmo_options version="3">
   19.15 -        <configurationname>GizmoSimple</configurationname>
   19.16 -      </gizmo_options>
   19.17        <nativedebugger version="1">
   19.18          <engine>gdb</engine>
   19.19        </nativedebugger>
   19.20 @@ -55,9 +52,6 @@
   19.21          </gdb_options>
   19.22          <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
   19.23        </dbx_gdbdebugger>
   19.24 -      <gizmo_options version="3">
   19.25 -        <configurationname>GizmoSimple</configurationname>
   19.26 -      </gizmo_options>
   19.27        <nativedebugger version="1">
   19.28          <engine>gdb</engine>
   19.29        </nativedebugger>
   19.30 @@ -91,18 +85,22 @@
   19.31          </gdb_options>
   19.32          <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
   19.33        </dbx_gdbdebugger>
   19.34 -      <gizmo_options version="3">
   19.35 -        <configurationname>GizmoSimple</configurationname>
   19.36 -      </gizmo_options>
   19.37        <nativedebugger version="1">
   19.38          <engine>gdb</engine>
   19.39        </nativedebugger>
   19.40        <runprofile version="9">
   19.41          <runcommandpicklist>
   19.42            <runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
   19.43 +          <runcommandpicklistitem>"${OUTPUT_PATH}" 10 9x9.txt</runcommandpicklistitem>
   19.44 +          <runcommandpicklistitem>"${OUTPUT_PATH}" 10 config_files/9x9.txt</runcommandpicklistitem>
   19.45 +          <runcommandpicklistitem>"${OUTPUT_PATH}" 10 config_files/Matrix_Mult_config_files/ matrix_mult_config_size_9.txt</runcommandpicklistitem>
   19.46 +          <runcommandpicklistitem>"${OUTPUT_PATH}" 10  ./config_files/Matrix_Mult_config_files/ matrix_mult_config_size_9.txt</runcommandpicklistitem>
   19.47 +          <runcommandpicklistitem>"${OUTPUT_PATH}" 10  ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_9.txt</runcommandpicklistitem>
   19.48 +          <runcommandpicklistitem>"${OUTPUT_PATH}" 10  ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_8.txt</runcommandpicklistitem>
   19.49 +          <runcommandpicklistitem>"${OUTPUT_PATH}" 10  ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_16.txt</runcommandpicklistitem>
   19.50          </runcommandpicklist>
   19.51 -        <runcommand>"${OUTPUT_PATH}"</runcommand>
   19.52 -        <rundir>/home/kshalle/D/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/dist</rundir>
   19.53 +        <runcommand>"${OUTPUT_PATH}" 10  ./config_files/Matrix_Mult_config_files/matrix_mult_config_size_16.txt</runcommand>
   19.54 +        <rundir>/mnt/hgfs/2__Work/1__Development/0__Code/PR/PR__ML_lib__sharedMem/Projects/Reo_Opt1__matrix_mult/dist</rundir>
   19.55          <buildfirst>true</buildfirst>
   19.56          <terminal-type>0</terminal-type>
   19.57          <remove-instrumentation>0</remove-instrumentation>
    20.1 --- a/nb__Reo_matrix_mult/nbproject/private/private.xml	Sun Feb 02 17:58:41 2014 -0800
    20.2 +++ b/nb__Reo_matrix_mult/nbproject/private/private.xml	Wed Feb 19 09:27:10 2014 -0800
    20.3 @@ -4,4 +4,7 @@
    20.4          <activeConfTypeElem>1</activeConfTypeElem>
    20.5          <activeConfIndexElem>2</activeConfIndexElem>
    20.6      </data>
    20.7 +    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
    20.8 +        <group/>
    20.9 +    </open-files>
   20.10  </project-private>
    21.1 --- a/nb__Reo_matrix_mult/nbproject/project.xml	Sun Feb 02 17:58:41 2014 -0800
    21.2 +++ b/nb__Reo_matrix_mult/nbproject/project.xml	Wed Feb 19 09:27:10 2014 -0800
    21.3 @@ -27,6 +27,9 @@
    21.4                      <type>1</type>
    21.5                  </confElem>
    21.6              </confList>
    21.7 +            <formatting>
    21.8 +                <project-formatting-style>false</project-formatting-style>
    21.9 +            </formatting>
   21.10          </data>
   21.11      </configuration>
   21.12  </project>