X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=unifracweightedcommand.cpp;h=1c146ac4d1b1168093cc6df20a8d37a930e1d56b;hb=250e3b11b1c9c1e1ad458ab6c7e71ac2e67e11d9;hp=4883c48741717c677641c6b48bf7fe4ada0245f1;hpb=18ccb5ee181cc69d8f8e9cbf178d7751e6199da5;p=mothur.git diff --git a/unifracweightedcommand.cpp b/unifracweightedcommand.cpp index 4883c48..1c146ac 100644 --- a/unifracweightedcommand.cpp +++ b/unifracweightedcommand.cpp @@ -699,14 +699,16 @@ int UnifracWeightedCommand::runRandomCalcs(Tree* thisTree, vector usersS lines.clear(); //breakdown work between processors - int numPairs = namesOfGroupCombos.size(); - int numPairsPerProcessor = numPairs / processors; - - for (int i = 0; i < processors; i++) { - int startPos = i * numPairsPerProcessor; - if(i == processors - 1){ numPairsPerProcessor = numPairs - i * numPairsPerProcessor; } - lines.push_back(linePair(startPos, numPairsPerProcessor)); + int remainingPairs = namesOfGroupCombos.size(); + int startIndex = 0; + for (int remainingProcessors = processors; remainingProcessors > 0; remainingProcessors--) { + int numPairs = remainingPairs; //case for last processor + if (remainingProcessors != 1) { numPairs = ceil(remainingPairs / remainingProcessors); } + lines.push_back(linePair(startIndex, numPairs)); //startIndex, numPairs + startIndex = startIndex + numPairs; + remainingPairs = remainingPairs - numPairs; } + //get scores for random trees