title: Running parallel jobs on multicore using GNU parallel
body: <p>I need to run multiple jobs on a multicore (and multithreaded) machine. I am using the <a href="http://www.gnu.org/software/parallel/" rel="nofollow">GNU Parallel utility</a> to distribute jobs across the cores to speed up the task.
  The commands to be executed are available in a file called 'commands'. I use the following command to run the GNU Parallel.</p>
  
  <p>cat commands | parallel -j +0</p>
  
  <p>As per the guidance at this location- <a href="http://www.admin-magazine.com/HPC/Articles/GNU-Parallel-Multicore-at-the-Command-Line-with-GNU-Parallel" rel="nofollow">gnu parallel</a>, this command is supposed to use all the cores to run this task. My machine has 2 cores and 2 threads per core. The system monitor however shows 4 CPUs (CPU1 and CPU2 belong to core1, CPU3 and CPU4 belong to core2). 
  Each job (simulation) takes about 20 seconds to run on a single core. I ran 2 jobs in parallel using this GNU parallel utility with the command above. I observe in the system monitor that, if the 2 jobs are assigned to cpu1 and cpu2 (that is the same core), there is obviously no speed-up. They take about 40seconds to finish, which is about the time they would take if run sequentially. However, sometimes the tool distributes the 2 jobs to CPU1 and CPU3 or CPU4 (which means, 2 jobs are assigned to 2 different cores). In this case, both jobs finish parallely in 20 seconds.</p>
  
  <p>Now, I want to know if there is a way in which I can force the tool to run on different "cores" and not on different "threads" on the same core. Any help is appreciated.
  Thanks!</p>