Citrix XenApp 6.5 OpenGL GPU Sharing Feature Add-on
Citrix have released an amazing new feature to Citrix XenApp 6.5, it’s OpenGL GPU sharing “tadaaa”.
Derek Thorslund have written a great blog post about this new feature on their Citrix Blog
I have been testing this new feature and its truly amazing to see how powerfull this new feature works. You are now able to run multiple users that use 2D/3D CAD,CAM,CAE application on either bare metal attached with a GPU or with VM’s attached with a GPU with GPU pass-through (Citrix XenServer 6.x or VmWare vSphere 5.1) This lowers the cost dramatically and removes some load from the CPU, which some 2D/3D applications used if they supported software rasterizeof OpenGL and most important it delivers an amazing user experience for the user on any device on even poor bandwidth. Citrix XenDesktop HDX 3D Pro is still the top of the flagship when it comes to local user experience, because of the high frame rate it delivers and the deep compression codecs that works great over high latency connections and most important if customers requires 3DConnexion SpaceMouse, this special mouse is working with USB redirection with Citrix XenDesktop and this does not work with Citrix XenApp you have this requirement.
You can now build solutions with XenApp & NVIDIA GRID K1/K2 and increase the user density for the 2D/3D app workloads. Imagine you have 1 server with typically 2 NVIDIA GRID K2 cards. Virtualize the server with either Citrix XenServer 6.x or VmWare vSphere 5.1 and create 4 VM’s with Citrix XenApp 6.5 and attach each Citrix XenApp 6.5 VM’s to a GPU with GPU pass-through. So total 4 Virtual machines and the beauti comes here. Instead its 4 users accessing 4 VM’s you can max out the GPU and in many cases its the CPU cores thats the limitation or the memory or even more important the iOPS. Cause iOPS will be the bottleneck many times in these new solutions, so remember to design this properly. To measure the GPU, Memory, CPU, iOPS, Network load i recommend you use Microsoft Process Explorer this great tool can give you the numbers realtime.
I have made a video of the user experience with different OpenGL applications running on a virtualized Citrix XenApp 6.5 with Citrix XenServer 6.1 GPU pass-through to a NVIDIA GRID K2. I can tell you its truly amazing to see how powerfull this GPU is, the GRID K1/K2 are the GPU’s that will supports the upcoming VGX hypervisor from NVIDIA.
Comments from Citrix early Tech Preview participants have been very positive and informative:
- I tested ten OpenGL applications including some Tier 2 apps/games with OpenGL GPU Sharing on XenApp 6.5 and it works brilliantly.
- On a system with two NVIDIA Q4000 cards we ran 18 users (ten in one XenApp VM and eight in another VM) using a test app that works with ESRI ArcGIS, and we still had space for more.
- Our customer purchased a new dedicated Dell server with an NVIDIA Quadro 6000 and we installed XenApp 6.5 with the OpenGL GPU Sharing feature add-on to test Dassault SolidWorks. The customer said this is “AWESOME”! They said it makes a huge difference; it looks and responds just like at the console. In some cases it performs better than their dedicated desktop systems! They are really impressed.
- Running Dassault SolidWorks, Ansys Workbench and Fluent, our tests indicate that customers will hit a CPU limitation before they hit a GPU processing limit or GPU RAM issues. We first tested using an NVIDIA Quadro 4000 card. We got good performance numbers per GPU as the models are not overly complex. Scalability was 6 to 10 users per Q4000. With the new NVIDIA GRID K2 card it seems that the CPU will be the limiting factor. Currently our test XenApp servers have eight cores and around 16-32GB of RAM depending on the application.
- We tested on the NVIDIA Quadro 6000 card (448 CUDA cores) with four users all running our most complex animation. The animation runs for 166 seconds with one user. With four users it took just three seconds longer! Considering our timing is manual stopwatch, the margin for error basically says no slowdown with four users. In fact, the Quadra 6000 was able to support 30 users running Dassault 3DVIA Composer Player with only minor slowdown. At 33 users a few users started to experience jerky motion, but the app was still usable. 40 sessions seems to be the limit. The GPU was maxed, not the video memory. My test case was users running the animation non-stop, whereas in real world usage the animation is like a training video and it has forced pause points, so real users would stop at times to read or do work. The point is that the test was harder on the graphics card than the real world is, yet we could run about 30 concurrent users on a Q6000.
I am attending NVIDIA GTC, so if you are in the area stop by my session on the topic Successfully Delivering 3D Graphics Solutions for Your Business and hear my experience, I have with implementing Citrix XenApp HDX 3D & XenDesktop HDX 3D Pro solutions at customers. I will share amazing customer stories never told before. I recommend that you see Derek Thorslund session Delivering 3D Graphics from the Cloud with XenApp and XenDesktop VDI.
More about the Citrix XenApp 6.5 OpenGL GPU Sharing Feature Add-on
OpenGL GPU sharing is a feature add-on to XenApp 6.5 to enable graphics processing unit (GPU) hardware rendering of OpenGL applications in Remote Desktop sessions. This functionality can be used on bare metal or virtual machines to increase application scalability and performance. The Citrix XenApp 6.5 OpenGL GPU Sharing Feature Add-on is available for download from http://www.citrix.com/downloads. Select Product > XenApp and Download Type > Components
HDX 3D allows graphics-heavy applications running on XenApp to render on the server’s GPU. By moving OpenGL rendering to the server’s GPU, the server’s central processing unit (CPU) is not slowed by graphics rendering. In addition, the server is able to process more graphics because the workload is split between the CPU and GPU. The XenApp 6.5 OpenGL GPU Sharing Feature Add-on requires no special settings, but is available only on servers with a GPU that supports a display driver interface (DDI) version of 9ex, 10, or 11.
You can install multiple GPUs on a XenApp server, either by installing a graphics card with more than one GPU, or by installing multiple graphics cards with one or more GPUs each. Mixing heterogenous graphics cards on the server is not recommended.
Note: Virtual machines require direct passthrough access to a GPU, which is available with Citrix XenServer or VMware vSphere. When HDX 3D is used in conjunction with GPU passthrough, each GPU in the server supports one multi-user XenApp virtual machine.
Most users do not require the rendering performance of a dedicated GPU, so OpenGL GPU Sharing enables multiple concurrent sessions to share GPU resources. This functionality does not depend any specific graphics card. When running on a hypervisor, select a hardware platform and graphics cards that are compatible with your hypervisor’s GPU passthrough implementation. The list of hardware that has passed certification testing with XenServer GPU Passthrough is available at hcl.vmd.citrix.com/GPUPass-throughDeviceList.aspx. When running on bare metal, XenApp distributes the user sessions across eligible GPUs; to guarantee that all installed GPUs are eligible, use identical GPUs. Scalability using OpenGL GPU Sharing depends on the applications being run, the amount of video RAM they consume, and the graphics card’s processing power. For example, scalability figures in the range of 8-10 users have been reported on NVIDIA Q6000 and M2070Q cards running applications such as ESRI ArcGIS. These cards offer 6 GB of video RAM. Newer NVIDIA GRID cards offer 8 GB of video RAM and significantly higher processing power (more CUDA cores). Other applications may scale much higher, achieving 32 concurrent users on a high-end GPU.
Note: Some applications handle video RAM shortages better than others. If the hardware becomes extremely overloaded, this could cause instability or a crash of the graphics card driver. Limit the number of concurrent users to avoid hitting the ceiling on resource allocation.
To install OpenGL GPU Sharing on a XenApp 6.5 server
The XenApp 6.5 OpenGL GPU Sharing Feature Add-on can be installed on any XenApp 6.5 system, regardless of which hotfixes are already installed. However, Citrix recommends that you install Hotfix Rollup Pack 1 or above before installing OpenGL GPU Sharing. This feature add-on is packaged with Microsoft Windows Installer 3.0 as a .msp file.
For more information about deploying .msp files, see Microsoft article 884016 or visit the Microsoft Web site and search on keyword msiexec. This installer program complies with Microsoft User Account Control (UAC). If UAC is enabled, you must run the installer program in elevated mode; that is, with administrative privileges enabled. For more information about UAC, see Microsoft TechNet or visit the Microsoft Web site and search on keyword UAC. To install this feature add-on successfully, servers must not have registry modification restrictions in place.
Citrix XenApp 6.5 OpenGL GPU Sharing Feature Add-on uses the Hotfix Rollup Pack Installation Wizard to install the feature add-on.
- Copy the feature add-on package to an empty folder on the hard drive of the XenApp server.
- Close all applications.
- Run the executable
The following files are copied to your system:
XenApp 6.5 OpenGL GPU Sharing Feature Add-on
- %PROGRAMFILES(X86)%\Citrix\System32\CtxGraphicsHelper.dll
- %PROGRAMFILES(X86)%\Citrix\System32\CtxGraphicsHelper64.dll
The following Registry entries are automatically created:
[HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\Graphics Helper]
“Flag”=dword:00000014 “FilePathName”=”C:\\Program Files (x86)\\Citrix\\system32\\CtxGraphicsHelper64.dll”
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_Dlls\Graphics Helper] “Flag”=dword:00000014 “FilePathName”=”C:\\Program Files(x86)\\Citrix\\system32\\CtxGraphicsHelper.dll”
4. Restart the server.
To try experimental GPU acceleration for CUDA or OpenCL applications
Citrix XenApp 6.5 OpenGL GPU Sharing Feature Add-on also provides experimental support for GPU acceleration of CUDA and OpenCL applications running in a user session. This support is disabled by default, but you can enable it for testing and evaluation purposes.
To use the experimental CUDA acceleration features, enable the following Registry
setttings:
[HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\Graphics Helper]
“CUDA”=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_Dlls
\Graphics Helper] “CUDA”=dword:00000001
To use the experimental OpenCL acceleration features, enable the following
Registry setttings:
[HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\Graphics Helper]
“OpenCL”=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_Dlls
\Graphics Helper] “OpenCL”=dword:00000001
Source
Download OpenGL GPU Sharing Feature Add-on for Citrix XenApp 6.5 here (Require MyCitrix ID)
Read the documentation of the OpenGL GPU Sharing Feature Add-on for Citrix XenApp 6.5
Thomas
More videos will come this week, where I will show NVIDIA K’ GPUs performance with XenApp 6.5 OpenGL GPU Sharing Feature Add-on