https://wiki.egi.eu/w/index.php?title=GPGPU-WG_KnowledgeBase_-_Batch_Schedulers_-_SchedulerScenarios_-_GPUOnlyQueue&feed=atom&action=history
GPGPU-WG KnowledgeBase - Batch Schedulers - SchedulerScenarios - GPUOnlyQueue - Revision history
2024-03-28T08:35:24Z
Revision history for this page on the wiki
MediaWiki 1.37.1
https://wiki.egi.eu/w/index.php?title=GPGPU-WG_KnowledgeBase_-_Batch_Schedulers_-_SchedulerScenarios_-_GPUOnlyQueue&diff=107988&oldid=prev
imported>Krakow: moved GPGPU-WG:GPGPU Working Group KnowledgeBase:Batch Schedulers:SchedulerScenarios:GPUOnlyQueue to GPGPU-WG KnowledgeBase - Batch Schedulers - SchedulerScenarios - GPUOnlyQueue
2015-01-22T13:56:41Z
<p>moved <a href="/wiki/GPGPU-WG:GPGPU_Working_Group_KnowledgeBase:Batch_Schedulers:SchedulerScenarios:GPUOnlyQueue" class="mw-redirect" title="GPGPU-WG:GPGPU Working Group KnowledgeBase:Batch Schedulers:SchedulerScenarios:GPUOnlyQueue">GPGPU-WG:GPGPU Working Group KnowledgeBase:Batch Schedulers:SchedulerScenarios:GPUOnlyQueue</a> to <a href="/wiki/GPGPU-WG_KnowledgeBase_-_Batch_Schedulers_-_SchedulerScenarios_-_GPUOnlyQueue" title="GPGPU-WG KnowledgeBase - Batch Schedulers - SchedulerScenarios - GPUOnlyQueue">GPGPU-WG KnowledgeBase - Batch Schedulers - SchedulerScenarios - GPUOnlyQueue</a></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:56, 22 January 2015</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>
imported>Krakow
https://wiki.egi.eu/w/index.php?title=GPGPU-WG_KnowledgeBase_-_Batch_Schedulers_-_SchedulerScenarios_-_GPUOnlyQueue&diff=75815&oldid=prev
Krakow: moved GPGPU-WG:GPGPU Working Group KnowledgeBase:Batch Schedulers:SchedulerScenarios:GPUOnlyQueue to GPGPU-WG KnowledgeBase - Batch Schedulers - SchedulerScenarios - GPUOnlyQueue
2015-01-22T13:56:41Z
<p>moved <a href="/wiki/GPGPU-WG:GPGPU_Working_Group_KnowledgeBase:Batch_Schedulers:SchedulerScenarios:GPUOnlyQueue" class="mw-redirect" title="GPGPU-WG:GPGPU Working Group KnowledgeBase:Batch Schedulers:SchedulerScenarios:GPUOnlyQueue">GPGPU-WG:GPGPU Working Group KnowledgeBase:Batch Schedulers:SchedulerScenarios:GPUOnlyQueue</a> to <a href="/wiki/GPGPU-WG_KnowledgeBase_-_Batch_Schedulers_-_SchedulerScenarios_-_GPUOnlyQueue" title="GPGPU-WG KnowledgeBase - Batch Schedulers - SchedulerScenarios - GPUOnlyQueue">GPGPU-WG KnowledgeBase - Batch Schedulers - SchedulerScenarios - GPUOnlyQueue</a></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:56, 22 January 2015</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>
Krakow
https://wiki.egi.eu/w/index.php?title=GPGPU-WG_KnowledgeBase_-_Batch_Schedulers_-_SchedulerScenarios_-_GPUOnlyQueue&diff=75814&oldid=prev
Krakow at 13:56, 22 January 2015
2015-01-22T13:56:16Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:56, 22 January 2015</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">{{Template:Op menubar}} {{TOC_right}} </ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">[[Category:Task_forces]]</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">'''[[GPGPU_Working_Group| << GPGPU Working Group main page]]'''</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Single GPGPU per node ==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Single GPGPU per node ==</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>A simple batch setup that assumes a physical node and its componenent GPGPU card expose a single '''Job Slot''' would simplify Resource Centre setup. Each GPGPU node could be partitioned from the non-GPGPU nodes using an access-control-list. However, most modern physical nodes contain and expose multiple CPU-cores to the batch system. If the physical system supports '''Virtualisation''', a CPU-core could be allocated to the GPU on the phsical node, and a single virtual machine could expose the remainder of the job slots. For example: Assume the physical host (wn1) has 8-cores, we can configure the node to declare (in torque) "np=1" to the batch system. If we create a VM with "np=7", then all cores can be allocated to the batch system.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>A simple batch setup that assumes a physical node and its componenent GPGPU card expose a single '''Job Slot''' would simplify Resource Centre setup. Each GPGPU node could be partitioned from the non-GPGPU nodes using an access-control-list. However, most modern physical nodes contain and expose multiple CPU-cores to the batch system. If the physical system supports '''Virtualisation''', a CPU-core could be allocated to the GPU on the phsical node, and a single virtual machine could expose the remainder of the job slots. For example: Assume the physical host (wn1) has 8-cores, we can configure the node to declare (in torque) "np=1" to the batch system. If we create a VM with "np=7", then all cores can be allocated to the batch system.</div></td></tr>
</table>
Krakow
https://wiki.egi.eu/w/index.php?title=GPGPU-WG_KnowledgeBase_-_Batch_Schedulers_-_SchedulerScenarios_-_GPUOnlyQueue&diff=68552&oldid=prev
Walshj1: /* JDL Example 1 */
2014-07-17T14:28:45Z
<p><span dir="auto"><span class="autocomment">JDL Example 1</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 15:28, 17 July 2014</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l28">Line 28:</td>
<td colspan="2" class="diff-lineno">Line 28:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>StdError = "std.err";</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>StdError = "std.err";</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>InputSandbox = {"myScript.sh"};</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>InputSandbox = {"myScript.sh"};</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Requirements = ( RegExp("*gpgpu$", other.GlueCEUniqueID) && Member("CUDA", other.GlueHostApplicationSoftwareRunTimeEnvironment);</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Requirements = ( RegExp("<ins style="font-weight: bold; text-decoration: none;">.</ins>*gpgpu$", other.GlueCEUniqueID) && Member("CUDA", other.GlueHostApplicationSoftwareRunTimeEnvironment);</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td></tr>
</table>
Walshj1
https://wiki.egi.eu/w/index.php?title=GPGPU-WG_KnowledgeBase_-_Batch_Schedulers_-_SchedulerScenarios_-_GPUOnlyQueue&diff=68548&oldid=prev
Emanouil: /* JDL Example 3 JDL - multiple GPGPU per node */
2014-07-17T13:10:46Z
<p><span dir="auto"><span class="autocomment">JDL Example 3 JDL - multiple GPGPU per node</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:10, 17 July 2014</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l81">Line 81:</td>
<td colspan="2" class="diff-lineno">Line 81:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>StdError = "std.err";</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>StdError = "std.err";</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>InputSandbox = {"myScript.sh"};</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>InputSandbox = {"myScript.sh"};</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Requirements = ( RegExp("*gpgpu$", other.GlueCEUniqueID) && Member("CUDA", other.GlueHostApplicationSoftwareRunTimeEnvironment);</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Requirements = ( RegExp("<ins style="font-weight: bold; text-decoration: none;">.</ins>*gpgpu$", other.GlueCEUniqueID) && Member("CUDA", other.GlueHostApplicationSoftwareRunTimeEnvironment);</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td></tr>
</table>
Emanouil
https://wiki.egi.eu/w/index.php?title=GPGPU-WG_KnowledgeBase_-_Batch_Schedulers_-_SchedulerScenarios_-_GPUOnlyQueue&diff=68547&oldid=prev
Emanouil: /* JDL Example 2 */
2014-07-17T13:10:34Z
<p><span dir="auto"><span class="autocomment">JDL Example 2</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 14:10, 17 July 2014</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l46">Line 46:</td>
<td colspan="2" class="diff-lineno">Line 46:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>StdError = "std.err";</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>StdError = "std.err";</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>InputSandbox = {"myScript.sh"};</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>InputSandbox = {"myScript.sh"};</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Requirements = ( RegExp("*gpgpu$", other.GlueCEUniqueID) && Member("CUDA", other.GlueHostApplicationSoftwareRunTimeEnvironment);</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Requirements = ( RegExp("<ins style="font-weight: bold; text-decoration: none;">.</ins>*gpgpu$", other.GlueCEUniqueID) && Member("CUDA", other.GlueHostApplicationSoftwareRunTimeEnvironment);</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td></tr>
</table>
Emanouil
https://wiki.egi.eu/w/index.php?title=GPGPU-WG_KnowledgeBase_-_Batch_Schedulers_-_SchedulerScenarios_-_GPUOnlyQueue&diff=65195&oldid=prev
Walshj1: Created page with "== Single GPGPU per node == A simple batch setup that assumes a physical node and its componenent GPGPU card expose a single '''Job Slot''' would simplify Resource Centre setup. ..."
2014-02-27T23:11:31Z
<p>Created page with "== Single GPGPU per node == A simple batch setup that assumes a physical node and its componenent GPGPU card expose a single '''Job Slot''' would simplify Resource Centre setup. ..."</p>
<p><b>New page</b></p><div>== Single GPGPU per node ==<br />
A simple batch setup that assumes a physical node and its componenent GPGPU card expose a single '''Job Slot''' would simplify Resource Centre setup. Each GPGPU node could be partitioned from the non-GPGPU nodes using an access-control-list. However, most modern physical nodes contain and expose multiple CPU-cores to the batch system. If the physical system supports '''Virtualisation''', a CPU-core could be allocated to the GPU on the phsical node, and a single virtual machine could expose the remainder of the job slots. For example: Assume the physical host (wn1) has 8-cores, we can configure the node to declare (in torque) "np=1" to the batch system. If we create a VM with "np=7", then all cores can be allocated to the batch system.<br />
<br />
<br />
The major drawback of taking the gpgpu queue approach is that:<br />
* There is a direct relationship between the number of available CPU cores to the number of GPGPUs.<br />
** This hinders jobs that require more CPUs than there are GPGPUs<br />
** It cannot deal with jobs requiring a mixture of just CPU and CPU/GPU pairs "-lnodes=1+nodes=2:ppn=2:gpus=2" without the risk or wasting/blocking resources.<br />
<br />
<br />
=== Options for RC ===<br />
* Define a queue with name tagged '''gpgpu'''<br />
* Apply the usual VO restrictions on the queue<br />
* Define an ACL that partitions these nodes from non-GPGPU nodes<br />
* Publish basic SoftwareEnvironment (eg. CUDA, CUDA-5, CUDA-5.5)<br />
* Ensure the WN environment is configured with all relevant GPGPU Software development kit installed.<br />
<br />
=== JDL Example 1 ===<br />
This example simply requests 1 job slots from any queue matching '''"*gpgpu$"'''. This is equivalent to the PBS '''-l nodes=1'''<br />
<br />
<pre><br />
[<br />
Type="Job";<br />
<br />
JobType="Normal";<br />
Executable = "myScript.sh";<br />
StdOutput = "std.out";<br />
StdError = "std.err";<br />
InputSandbox = {"myScript.sh"};<br />
Requirements = ( RegExp("*gpgpu$", other.GlueCEUniqueID) && Member("CUDA", other.GlueHostApplicationSoftwareRunTimeEnvironment);<br />
]<br />
</pre><br />
<br />
=== JDL Example 2 ===<br />
<br />
This example simply requests 2 job slots from any queue matching '''"*gpgpu$"'''. The allocated cores may be on distinct hosts, so we cannot assume that the the GPGPU application will see or can enumerate both GPGPU cards. This is equivalent to the PBS '''-l nodes=2'''<br />
<br />
<pre><br />
[<br />
Type="Job";<br />
JobType="Normal";<br />
CPUnumber=2;<br />
# myScript.sh must take responsibility for executing the GPGPU application on both the allocated core/GPGPU pairs!<br />
Executable = "myScript.sh"; <br />
StdOutput = "std.out";<br />
StdError = "std.err";<br />
InputSandbox = {"myScript.sh"};<br />
Requirements = ( RegExp("*gpgpu$", other.GlueCEUniqueID) && Member("CUDA", other.GlueHostApplicationSoftwareRunTimeEnvironment);<br />
]<br />
</pre><br />
<br />
== Multiple GPGPUs per Physical Node ==<br />
Similar to the Virtualisation example above, a physical node with '''N'''-gpgpu cards could be configured with: <br />
<br />
''np=#NUM_OF_GPGPUS''<br />
<br />
A virtual machine could the remaining number of cores:<br />
<br />
''np=#NUM_OF_CORES-#NUM_OF_GPGPUS'' job slots<br />
<br />
<br />
The drawback of this scheme is that we need to develop a scheme to ensure that jobs from distinct users cannot interfere with each other. User code could try to enumerate and use all the GPGPUs on the node. This will have (potentially job-catastrophic) unintended side-effects, so we need some mechanism to ensure that a user-job does not consume more than its allocation. <br />
<br />
The VT '''must''' investigate ways of mitigating cross-job contamination, such as linux cgroups and cpusets.<br />
<br />
<br />
<br />
=== JDL Example 3 JDL - multiple GPGPU per node ===<br />
<br />
This example should ensure 2 GPGPUs on the same host. Again, if there are more than 2 GPGPUs on the node, we need to ensure that other user processes do no interfere with each other. This is equivalent to the PBS '''-l nodes=1:ppn=2'''. In reality 2 cores are actually allocated to the job, so there is a potential waste of resources.<br />
<br />
<pre><br />
[<br />
Type="Job";<br />
JobType="Normal";<br />
CPUnumber=2;<br />
SMPgranularity=2;<br />
# We assume that the GPGPU application will take responsibilty for enumerating both GPGPU devices<br />
Executable = "myScript.sh"; <br />
StdOutput = "std.out";<br />
StdError = "std.err";<br />
InputSandbox = {"myScript.sh"};<br />
Requirements = ( RegExp("*gpgpu$", other.GlueCEUniqueID) && Member("CUDA", other.GlueHostApplicationSoftwareRunTimeEnvironment);<br />
]<br />
</pre></div>
Walshj1