Enable HPC_CREATECONSOLE for GPGPU Jobs in Windows HPC Server 2008 R2

Updated: October 2010

Applies To: Windows HPC Server 2008 R2

This topic describes how a cluster administrator can configure a Windows® HPC Server 2008 R2 cluster to support automated creation of console sessions for jobs that run on graphics processor units (GPUs). General purpose computations on GPU (GPGPU) programs run faster when they use the additional processing power of the GPU. Depending on the type of GPU driver, job owners might have to run GPGPU jobs in a console session.

The HPC Node Manager starts applications in session 0. Session 0 is a non-interactive session that does not load display drivers. Many GPU drivers are display drivers, so they are not available in session 0, and they are only available in an active console session.

  • If the GPU drivers are display drivers (that is, they are not loaded in session 0), the job must run in a console session.

  • If the GPU drivers are device drivers (that is, they are loaded in session 0), the job does not need to run in a console session. Contact your GPU vendor to find out if the GPU driver runs in session 0.

  • If the GPGPU application uses DirectX calls to access the GPU, then the job must run in a console session regardless of the driver type.

Note
NVIDIA Tesla Compute Cluster (TCC) drivers run in session 0, and they do not require GPGPU jobs to run in a console session. For more information, see NVIDIA Drivers (https://go.microsoft.com/fwlink/?LinkId=194878). For an introduction to GPGPU computing, software development, and hardware, you can download the GPGPU Computing Horizons: Developing and Deploying for Microsoft Windows white paper.

In this topic:

  • How a job owner can run jobs in a console session

  • Enable the create console functionality on compute nodes

  • Additional references

How a job owner can run jobs in a console session

In Windows HPC Server 2008 R2, a job owner can enable their GPGPU jobs to run in a console session by setting one of the following job environment variables:

  • HPC_ATTACHTOCONSOLE. Specifies that the job should be started in an existing console session. If a console session exists that has the same owner as the user who submitted the job, the job starts. If there is no console session that is owned by the job owner, the job fails.

  • HPC_CREATECONSOLE. Specifies that HPC Node Manager Service should create a console session for the job owner before starting the job. When the job ends, the job owner is logged out.

Important
The HPC_CREATECONSOLE functionality is not enabled by default. The cluster administrator must enable this functionality on the compute nodes that will run the GPGPU jobs.

For more information, see Job or task environment variables for console or remote desktop sessions.

Enable the create console functionality on compute nodes

To enable the create console functionality, a cluster administrator must add the following values in the registry on the compute nodes that will run GPGPU jobs:

  • HpcConsoleSupport: This enables the HPC Node Manager Service to create a console session for the job owner.

  • SoftwareSASGeneration: This enables the software to simulate the secure attention sequence (SAS), which allows the HPC Node Manager Service to create a console session for the job owner.

Warnung
Durch eine fehlerhafte Bearbeitung der Registrierung können schwerwiegende Schäden am System verursacht werden. Sichern Sie alle Importanten Daten auf dem Computer, bevor Sie Änderungen an der Registrierung vornehmen.

After you run the commands to modify the registry on your compute nodes, you must reboot the compute nodes to apply the registry changes. You can also add a step to the node template so that if you redeploy, the registry settings are automatically applied. The following procedures describe how to perform these tasks.

  • Run commands on compute nodes to enable the create console functionality

  • Add tasks to a node template to enable the create console functionality

Run commands on compute nodes to enable the create console functionality

The following procedures describe how to use a Command Prompt window or HPC Cluster Manager to run commands that edit the registry, take the nodes offline, and then reboot them.

In a Command Prompt window

You can use clusrun to modify the registry and restart the compute nodes. For example, the following commands show how to enable console creation on nodes in a custom node group named “GPGPUnodes”:

clusrun /nodegroup:GPGPUnodes reg add HKLM\SYSTEM\CurrentControlSet\Services\HpcNodeManager /v HpcConsoleSupport /t REG_DWORD /d 1 /f
clusrun /nodegroup:GPGPUnodes reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v SoftwareSASGeneration /t REG_DWORD /d 1 /f
for /f ″usebackq tokens=1 skip=2″ %i in (‘node list /group:GPGPUnodes’) do node offline %i
clusrun /nodegroup:GPGPUnodes shutdown -r

In HPC Cluster Manager

Alternatively, you can perform the same steps in HPC Cluster Manager as described in the following procedure.

To enable the create console functionality on compute nodes

  1. In HPC Cluster Manager, in Node Management, select the nodes that you want to use to run the GPGPU jobs.

  2. Right-click your selection, and then click Run Command.

  3. In the Run Command dialog box, type or paste the following command to modify the registry:

    reg add HKLM\SYSTEM\CurrentControlSet\Services\HpcNodeManager /v HpcConsoleSupport /t REG_DWORD /d 1 /f & reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v SoftwareSASGeneration /t REG_DWORD /d 1 /f

  4. Click Run, verify in the command output that the command ran successfully, and then close the dialog box.

  5. Right-click the nodes, and then click Take Offline.

  6. Reboot the compute nodes: When the nodes are in the OfflineNode State, right-click the nodes and then click Reboot.

Add tasks to a node template to enable the create console functionality

The following procedure describes how to add a Run OS command task and a Restart task to the Deployment phase of a node template. For more information about each node task and its parameters, see Available node template tasks.

To add tasks to a node template to enable the create console functionality

  1. In HPC Cluster Manager, in Configuration, click Node Templates.

  2. In the views pane, double-click the node template to which you want to add tasks. The Node Template Editor appears.

  3. Click Add Task, click Deployment, and then click Run OS command. A Run OS command task appears in the list of Node template tasks.

  4. In the task list, select Run OS command, and then configure the task in the details pane as follows:

    1. In Command, type or paste the following command:

      reg add HKLM\SYSTEM\CurrentControlSet\Services\HpcNodeManager /v HpcConsoleSupport /t REG_DWORD /d 1 /f & reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v SoftwareSASGeneration /t REG_DWORD /d 1 /f

    2. In the Comment box, type: Enable create console for GPGPU.

      The description will appear in the node template task list the next time that you open the node template editor. The description also appears in the Node Template Tasks tab in the Details Pane.

  5. Click Add Task, click Deployment, and then click Restart.

  6. Select the Restart task, and in the Comment box, type: Restart the node to apply the registry settings.

  7. In Node Template Editor, verify that the Restart task is listed after the OS Command task, as shown in the following screenshot example:

  8. Click Save.

Additional references