MATLAB creates a local process pool with some default name. If you fire up a second copy of MATLAB on the same machine, it will use that same default pool so the two different copies will compete/conflict.

Here is a bit of MATLAB code that will create a pool whose info is stored in a specified directory and hence won't conflict:

mkdir('/tmp/fowlkes.1');
schd = findResource('scheduler', 'configuration', defaultParallelConfig);
schd.DataLocation = '/tmp/fowlkes.1'
matlabpool(schd);

It should be noted that when a process pool is started, each worker switches to single-threaded mode. Meaning workers will not be able to take advantage of multithreaded computations built into many of the MATLAB functions.

One way to get around this, is to run the command pctRunOnAll maxNumCompThreads(#). This command will be executed on all workers in the pool and specifies the max number of threads each worker is allowed to use. Using the function maxNumCompThreads is really just a stop gap measure as it is slated for removal in the future. A better solution might be to just create a process pool right before using parfor and then tearing it down right after finishing.