When "Each code individually takes 1 day to be completed" is the case, that probably includes the automatic parallelization that MATLAB does for "large enough" mathematical operations that fit into some of the patterns that can be handled by BLAS or LAPACK or similar highly optimized parallel libraries. You do not need the Parallel Processing Toolbox for that to happen.
A MATLAB program that detects that it can use those parallelized libraries will call into the libraries, using up to MaxNumCompThreads which in turn probably depends upon your environment variables If you run a bunch of independent MATLAB sessions all of which are trying to access the full set of processors, then you get contention amongst the processors which slows things down even further than the difficulty that a limited resource is being split among multiple programs.
If you run code that uses automatic parallelization while you are in a parpool but not within an explicitly parallel section, then the maximum number of processors uses is determined by the size of the parpool.
If you run code that uses automatic parallelization while you are in a particular worker of a parpool (because of an explicit parallel programming call such as parfor or spmd) then the code is restricted to a single CPU.
The official route to assigning tasks to individual processors for MATLAB is to use the Distributed Computing Server and set up multiple profiles each with a different core reservation, and then to submit your tasks to the different server profiles.
Best Answer