Create a virtual GPU-accelerated Windows workstation


This tutorial shows how to create a virtual Windows workstation running Windows Server 2022 with an attached display-capable GPU. Google Cloud offers four display-capable GPUs: NVIDIA L4, NVIDIA T4, NVIDIA P4, and NVIDIA P100.

To create a Linux workstation, see the tutorial for Creating a virtual GPU-accelerated Linux workstation.

After you create the virtual workstation, you learn how to remotely access it using HP Anyware (formerly Teradici CAS), using PC-over-IP (PCoIP®) technology, a remote desktop protocol widely used in the media and entertainment, game development, architecture, and engineering industries. PCoIP offers features essential to these types of workloads, such as color accuracy, support for multiple monitors, lossless display, and tablet pressure sensitivity.

This tutorial assumes you are familiar with Microsoft Windows and the PowerShell command line.

Objectives

  • Create a Compute Engine instance with a GPU. This instance serves as the foundation for a virtual workstation.
  • Install NVIDIA drivers on the virtual workstation.
  • Install HP Anyware software on the virtual workstation.
  • Connect to the virtual workstation using a PCoIP software client.

Costs

This tutorial uses the following billable component of Google Cloud:

You can use the pricing calculator to generate a cost estimate based on your projected usage. As of October 2023, the approximate cost for the workstation configuration shown in this tutorial is US$1.08 per hour.

The resources that make up the virtual workstation and the factors that affect cost in this tutorial are:

Internet data transfer represents data that streams from your virtual workstation to your local display client and is billed at internet outbound data transfer costs. Variables that affect data transfer during a PCoIP session are bandwidth, screen resolution, number of display monitors, applications used, and the type of activity on each monitor. The HP Anyware Session Planning Guide can help you understand different workload requirements.

Before you begin

This tutorial uses the Google Cloud CLI, which you can run from a Cloud Shell instance launched from the Google Cloud console . If you want to use gcloud CLI on your local workstation, install the Google Cloud CLI. The tutorial shows you how to run commands in Cloud Shell; if you use the gcloud CLI on your workstation, adjust the instructions accordingly.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

In addition, make sure you have the following:

  • A Google Cloud project with quota for NVIDIA L4 Virtual Workstation GPUs in your selected zone. You can get a list of GPU availability by using the gcloud compute accelerator-types list command.
  • A Google Chrome browser to access the Google Cloud console.
  • An RDP client to initially connect to the Windows instance.
  • The latest PCoIP Client software for Windows, Mac, or Linux to access the virtual workstation.
  • An account on help.teradici.com to download the HP Anyware software. Account registration is free.
  • An HP Anyware software license. You can request a trial license, or contact your HP Teradici representative and ask for a trial registration code to use for this virtual workstation.

Architecture

The following diagram shows the components used in this tutorial to deploy a single virtual workstation. Optional components shown in the diagram include different ways to connect to your virtual workstation, shared storage, an additional instance for serving third-party licenses, and additional infrastructure representing a render or compute farm.

Virtual workstation architecture.

Choose a region

An important factor when you deploy a virtual workstation is the latency between your location and the instance you create. The lower the latency, the better the experience. Therefore, you want to work in a region that's geographically closest to you. To learn more about where the different GPUs are available, see GPU regions and zones availability.

  1. Open Cloud Shell. (If you're using the gcloud CLI, open a terminal window on your computer.)

    Go to Cloud Shell

  2. Get a list of the zones in which GPUs are available:

    gcloud compute accelerator-types list

    Take note of the region and zone that's physically closest to you.

  3. Set the zone that you want to work with:

    gcloud config set compute/zone ZONE

    Replace ZONE with the name of the zone you're using, such as us-west1-b.

Choose a machine type

NVIDIA L4 GPUs are attached to the G2 machine type. Virtual machines with one or more GPUs have a maximum number of vCPUs for each GPU you add to the instance. For example, each NVIDIA L4 GPU lets you have up to 32 vCPUs and up to 128 GB of memory in your instance machine type. To see the available vCPU and memory ranges for different GPU configurations, see the GPUs list.

The example in this tutorial consists of an 8 vCPU G2 virtual workstation, which is well under the limit of 32 vCPUs for a single L4 GPU.

Create the virtual workstation

  1. In Cloud Shell, create the Compute Engine virtual workstation instance:

    gcloud compute instances create NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=ACCELERATOR,count=NUM-GPUS \
        --maintenance-policy="TERMINATE" \
        --image-project=windows-cloud \
        --image-family=windows-2022 \
        --boot-disk-size=SIZE \
        --boot-disk-type=TYPE \
        --network=NETWORK
    

    Replace the following:

    • NAME is the name of your workstation.
    • ZONE is the zone in which to create the VM.
    • MACHINE_TYPE is the predefined or custom machine configuration.
    • ACCELERATOR is the type of GPU you want to attach, such as nvidia-tesla-t4-vws.
    • NUM-GPUS is the number of GPUs to attach to the VM.
    • SIZE is the size of the boot disk, in gigabytes.
    • TYPE is the type of boot disk. To get a list of available disk types, run gcloud compute disk-types list.
    • NETWORK is the network in which to create the VM.

    For example:

    gcloud compute instances create test-workstation \
        --zone=us-west1-b \
        --machine-type=g2-standard-8 \
        --accelerator=type=nvidia-l4-vws,count=1 \
        --maintenance-policy="TERMINATE" \
        --image-project=windows-cloud \
        --image-family=windows-2022 \
        --boot-disk-size=100 \
        --boot-disk-type=pd-ssd \
        --network=default
    

    After the virtual workstation is created, the machine status is displayed. The output is similar to the following:

    NAME: test-workstation
    ZONE: us-west1-b
    MACHINE_TYPE: g2-standard-8
    PREEMPTIBLE:
    INTERNAL_IP: 10.138.XX.XXX
    EXTERNAL_IP: XX.XXX.XXX.XXX
    STATUS: RUNNING
    

    Note the virtual workstation's external IP address. You will use it later in the tutorial.

    You can retrieve the external IP address of your virtual workstation at any time using the Google Cloud console.

Create a Windows password

You use RDP to access the Windows virtual workstation to install NVIDIA graphics drivers. To sign in with RDP, you need to create a Windows password for the user.

  1. In Cloud Shell, run the following command:

    gcloud compute reset-windows-password VM_NAME

    Replace VM_NAME with the name of the VM to change the password for.

  2. Review the information in the confirmation prompt:

    This command creates an account and sets an initial password for the
    user [username] if the account does not already exist.
    If the account already exists, resetting the password can cause the
    LOSS OF ENCRYPTED DATA secured with the current password, including
    files and stored passwords.
    
    For more information, see:
    https://cloud.google.com/compute/docs/operating-systems/windows#reset
    
    Would you like to set or reset the password for [username] (Y/n)?
    
  3. After confirming the previous prompt, review the confirmation of new credentials, which appears as follows:

    Resetting and retrieving password for [username] on [instance-name]
    Updated [https://www.googleapis.com/compute/v1/projects/project-name/zones/zone/instances/instance-name].
    ip_address: ip-address
    password:   password
    username:   username
    
  4. You can now connect to the VM instance by using the new credentials.

Sign in to your virtual workstation

After you create the virtual workstation, sign into the machine so you can configure it.

  1. On your local workstation, use your RDP client to connect to your virtual workstation using its external IP address.
  2. When you're prompted to enter your credentials, enter the username and password you generated earlier.
  3. If you see a certificate warning, ignore it and click Continue.

The virtual workstation desktop appears. Close the Windows Server Manager after it finishes launching.

Install Google Chrome

The next step is to install Chrome on the VM instance.

  1. In your RDP session, click the Start button on the Windows taskbar, type Windows PowerShell.
  2. Right-click on Windows PowerShell and select Run as administrator.
  3. At the PowerShell prompt, enable HTTPS requests:

    [Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
    
  4. Download and run the Chrome installer:

    $installer = "$env:TEMP\chrome_installer.exe";
    Write-Host 'Downloading Chrome.'
    Invoke-WebRequest `
    'https://dl.google.com/chrome/install/latest/chrome_installer.exe' `
      -OutFile $installer
    Write-Host 'Installing Chrome.'
    & $installer /silent /install | Out-Default
    Remove-Item $installer
    
  5. When the command has completed, close PowerShell.

Install the NVIDIA driver

NVIDIA L4, NVIDIA T4, NVIDIA P4, and NVIDIA P100 GPUs work on Google Cloud only with qualified NVIDIA RTX Virtual Workstation (vWS) drivers for both compute and display workloads.

You can download these drivers from a public Google Cloud storage bucket.

  1. On the Windows desktop of your virtual workstation, open Windows PowerShell.
  2. Get a listing of the latest drivers:

    gcloud storage ls gs://nvidia-drivers-us-public/GRID
  3. Access the latest graphics drivers that are available as of October, 2023:

    vGPU 16.1 Windows driver (537.13_grid_win10_win11_server2019_server2022_dch_64bit_international.exe)

    You can always find the latest qualified driver under the GRID directory that has the highest version number; if you find a newer driver, use that one.

  4. In PowerShell, download and install the driver. If you're using a version of the driver that's more recent than 537.13, change the command accordingly.

    gcloud storage cp `
    gs://nvidia-drivers-us-public/GRID/vGPU16.1/537.13_grid_win10_win11_server2019_server2022_dch_64bit_international.exe `
    $HOME/Downloads
    
  5. Open Windows File Explorer and go to the Downloads directory for your user.

  6. In the directory, double-click the NVIDIA driver to run the installer.

    Follow the prompts to install the driver in the default location:

    1. If you accept the terms of the NVIDIA license, click AGREE AND CONTINUE.
    2. Select Express (Recommended) as the installation type.
    3. When the installation is finished, close the NVIDIA installer.
  7. Verify that the driver is working. In PowerShell, run the command:

    nvidia-smi
    

    The output is similar to the following:

    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 537.13       Driver Version: 537.13       CUDA Version: 12.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name           TCC/WDDM  | Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp Perf  Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  NVIDIA L4          WDDM  | 00000000:00:03.0 Off |                    0 |
    | N/A   44C    P8    13W /  72W |     94MiB / 23034MiB |      5%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI       PID   Type   Process name                   GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A     6696   C+G   ...CBS_cyewy\TextInputHost.exe    N/A      |
    +-----------------------------------------------------------------------------+
    

Install HP Anyware software

HP Anyware software provides a graphics agent that runs on your virtual workstation, delivering the desktop to your hardware or software client.

  1. On the Windows instance, open Google Chrome and go to the PCoIP Hosts section on the Teradici support page.
  2. Download Graphics Agent for Windows.
  3. If not already logged in, click Log in to download.
  4. Click Downloads and scripts.
  5. Complete the agent installation process and choose the option to run the downloaded graphics agent executable. Follow the prompts to install the graphics agent in the default location.

Register the PCoIP Graphics Agent

When the installation process is complete, you're prompted for a registration code.

  1. In the License Registration window, enter the registration code you received during the trial sign-up process.

  2. After you've entered the registration code, reboot the Windows instance.

Create a firewall rule

The PCoIP client communicates with your virtual workstation using several ports. You must set firewall rules that allow traffic to your virtual workstation.

  • In Cloud Shell, on your local computer (not on the virtual workstation), create a firewall rule that opens the required ports:

    gcloud compute firewall-rules create allow-pcoip \
        --action=ALLOW \
        --rules=tcp:443,tcp:4172,udp:4172 \
        --source-ranges=0.0.0.0/0
    

Sign in to your virtual workstation using the PCoIP client

  1. On your local computer, go to the PCoIP Clients section on the HP Anyware support page, and then download, install, and launch the PCoIP Software Client application for your operating system.

  2. In the Host Address or Registration Code field, enter the external IP address of your virtual workstation. If you want, you can enter a name for the connection.

  3. When you are connected, authenticate by entering the username and password that you created earlier for the virtual workstation.

    In a few seconds, your Windows desktop appears.

Activate audio on your virtual workstation

To activate audio on your virtual workstation, enable the Teradici Virtual Audio Driver as the default playback device.

  1. On the Windows VM, click the Start button on the Windows taskbar and type mmsys.cpl to open the Sound control panel and initialize the Teradici Virtual Audio Driver.

  2. Click Yes. Windows verifies that the audio driver is working.

Test your virtual workstation

After you've deployed your virtual workstation, you can test performance and interactivity using a number of tools:

You can also learn more about PCoIP Performance Optimization based on your workload.

Clean up

To avoid incurring charges to your Google Cloud account for the resources used in this tutorial, either delete the project that contains the resources, or keep the project and delete the individual resources.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. If the project that you plan to delete is attached to an organization, expand the Organization list in the Name column.
  3. In the project list, select the project that you want to delete, and then click Delete.
  4. In the dialog, type the project ID, and then click Shut down to delete the project.

Delete all the components

  1. Delete the virtual workstation.
  2. Delete the firewall rule.

What's next