# HG changeset patch # User Nina Engelhardt # Date 1334593632 -7200 # Node ID 233fe8a5208f0870aa2c8f0376b8cabef40f54f1 # Parent 5671f96e0b5f8bcc6295b337a9c754c703bfea76 better load balance diff -r 5671f96e0b5f -r 233fe8a5208f SSR_Matrix_Mult/Divide_Pr.c --- a/SSR_Matrix_Mult/Divide_Pr.c Mon Mar 19 10:29:43 2012 -0700 +++ b/SSR_Matrix_Mult/Divide_Pr.c Mon Apr 16 18:27:12 2012 +0200 @@ -196,7 +196,7 @@ DEBUG__printf(dbgAppFlow,"**create result Pr**") resultPr = - SSR__create_procr_with( &gatherResults, resultsParams, animPr); + SSR__create_procr_with_affinity( &gatherResults, resultsParams, animPr,0); //Make the sub-matrices, and pair them up, and make processor to // calc product of each pair. @@ -261,7 +261,7 @@ idealNumWorkUnits = SSR__giveIdealNumWorkUnits(); idealSizeOfSide2 = leftMatrix->numRows / rint(cbrt( idealNumWorkUnits )); - idealSizeOfSide2 *= 0.6; //finer granularity to help load balance + idealSizeOfSide2 *= 0.4; //finer granularity to help load balance if( idealSizeOfSide1 > idealSizeOfSide2 ) idealSizeOfSide = idealSizeOfSide1; @@ -367,10 +367,10 @@ numCores = SSR__give_number_of_cores_to_schedule_onto(); - numToPutOntoEachCore = numRowIdxs*numColIdxs/numCores; + numToPutOntoEachCore = numRowIdxs*numColIdxs/(numCores-1); leftOverFraction = 0; numVecOnCurrCore = 0; - coreToAssignOnto = 0; + coreToAssignOnto = 1; for( resRowIdx = 0; resRowIdx < numRowIdxs; resRowIdx++ ) { @@ -412,7 +412,7 @@ //Move to next core, max core-value to incr to is numCores -1 coreToAssignOnto += 1; - if( coreToAssignOnto >= numCores ) coreToAssignOnto = 0; + if( coreToAssignOnto >= numCores ) coreToAssignOnto = 1; } //if } //for( vecIdx } //for( resColIdx