ECG-Kit 1.0
(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];