locked
Multi Threaded Tasks RRS feed

  • Question

  • Hi

     

    If I submit a task that is multithreaded (example 6 threads that utililize 6 processors on a single machine 100%), will windows compute cluster automatically allocate these threads over the cluster (example if the cluste consists of a head node with 4 CPU's and one extra node with 2) if I specify that the task will utlize 6 CPU's ?

     

    Or Should I do something in my code to allow this to be done?

     

     

     

    Tuesday, March 11, 2008 2:04 PM

Answers

  •  

    When allocating, the scheduler will do the following:

    -It will allocate your job's requested number of resources to the job . . . so if you requested 6 Cores, and all your nodes are 4 Cores, you will get 6 Cores spread across 2 - 6 nodes (depending on job fragmentation).

    -If will then allocate allocate 6 processors to the task in your job

    -It will start a process on one of the nodes, and expect your job to start the rest of its processes (basically we assume it's an MPI job).

     

    I'm assuming from your question that you DO NOT want resources on multiple nodes.  In that case what I would recommend is to set your job's resource request to 1 Node (instead of X cores); this will ensure you get a whole node all to yourself.

     

    You can also set your job to only pick a node with at least X cores (of course this requires that you have at least 1 node with at least X number of processors).  So from the CLI, your job would look like:

     

    Code Snippet
    job submit /numnodes:1 /processorspernode:6 . . .

     

     

    Make sense?

     

    Thanks,

    Josh

    • Marked as answer by Don Pattee Wednesday, March 25, 2009 11:34 PM
    Friday, March 28, 2008 10:58 PM

All replies

  •  

    When allocating, the scheduler will do the following:

    -It will allocate your job's requested number of resources to the job . . . so if you requested 6 Cores, and all your nodes are 4 Cores, you will get 6 Cores spread across 2 - 6 nodes (depending on job fragmentation).

    -If will then allocate allocate 6 processors to the task in your job

    -It will start a process on one of the nodes, and expect your job to start the rest of its processes (basically we assume it's an MPI job).

     

    I'm assuming from your question that you DO NOT want resources on multiple nodes.  In that case what I would recommend is to set your job's resource request to 1 Node (instead of X cores); this will ensure you get a whole node all to yourself.

     

    You can also set your job to only pick a node with at least X cores (of course this requires that you have at least 1 node with at least X number of processors).  So from the CLI, your job would look like:

     

    Code Snippet
    job submit /numnodes:1 /processorspernode:6 . . .

     

     

    Make sense?

     

    Thanks,

    Josh

    • Marked as answer by Don Pattee Wednesday, March 25, 2009 11:34 PM
    Friday, March 28, 2008 10:58 PM
  • Josh do you know how to configure my task? (Pls. look below)

    I created job which runs .net app. with multiple threads in it. I assigned 4 nodes which allocated as resource for execution. But for some reason my app runs only at one node. I can force via setting to run on specific one but not on all on them. How can I enforce that my job run on all nodes.  3 out of 4 nodes located on VMs on same blade. I have 30 threads on 7 cores in total. Can one exe run on multiple nodes? If yes how can I achieve that?

    Monday, February 6, 2012 2:49 PM