ECG-Kit 1.0

File: <base>/common/TaskPartition.m (1,280 bytes)
%% (Internal) Generate a PIDs work list
%   
% 
%   [pid_starts, pid_ends] = TaskPartition( task_size, cant_pid)
% 
% Arguments:
% 
%      + task_size: A positive integer with the size of the job
% 
%      + cant_pid: The amount of PIDs to work
% 
% Output:
% 
%      + pid_starts: An index array of size cant_pid x 1 with the starting
%      indexes for each PID
% 
%      + pid_ends: An index array of size cant_pid x 1 with the ending
%      indexes for each PID
% 
% Example:
% 
%       [pid_starts, pid_ends] = TaskPartition( 10, 2)
% 
%       pid_starts = [ 1 6 ] 
%       pid_ends =   [ 5 10 ] 
% 
% See also ECGwrapper
% 
% Author: Mariano Llamedo Soria llamedom@electron.frba.utn.edu.ar
% Version: 0.1 beta
% Last update: 14/5/2014
% Birthdate  : 21/4/2015
% Copyright 2008-2015
% 
function [pid_starts, pid_ends] = TaskPartition( task_size, cant_pid)

%no es recomendable hacerlo mas grande de cant_recs la particion.
cant_pid = min(cant_pid, task_size);

things2do = fix(task_size / cant_pid);

remainder = rem(task_size, cant_pid);

cantThingsXpid = repmat(things2do, cant_pid,1);

cantThingsXpid(1:remainder) = cantThingsXpid(1:remainder) + 1;

pid_ends = cumsum(cantThingsXpid);
pid_starts = [1;pid_ends(1:end-1)+1];