what’s the cheapest solution without compromising user experience or the best price-performance-ratio solution must be tested during a PoC, because different users, differwsent applications , different wokloads and different workstyles of users can lead to a significantly changed result.
But apart from that discussion
From what I know (for the time being) you can only pass one GPU ( passthrough whole GPU or a vGPU profile into a VM ) which means you are limited to 1 GPU per XenApp Server as long as you need a supported environment ( all other dirty tricks and hacks on your own risk). If you install http://support.citrix.com/proddocs/topic/xenapp65-admin/hd-opengl-gpu-sharing.html ( Patch XA650W2K8R2X64038 ) you can use OpenGL 4.x based applications and share the GPU resource for OpenGL 4.x and DirectX 9 ( because XA 6.5 is WS08R2 ) accelerated apps between multiple user sessions. There is no classic IMA based XA 6.5 for WS12R2, but all the functionality is built-in into Server VDA >7.x ( for FMA based XenApps / Server VDAs) and because of WS12R2 you get DirectX 11.1 ( DirectX 11 for WS12 ) acceleration as well. Citrix XenApp leverages GPU support for DirectX apps running in RDS sessions from the Microsoft implementation.
AFAIK Citrix recommends to only use one more powerful GPU per XenApp Server instead of multiple low-end GPUs. For DirectX applications, only one GPU will be used. By default, Citrix is leveraging the Microsoft DirectX support which always uses the same GPU for all RDS sessions. It seems that all DirectX based accelerated applications are processed on same GPU where the first accelerated session has been started on. There is an undocumented and UNSUPPORTED registry key to spread the load across all available GPUS ( i.e. bare-metal installations),
For DirectX applications, only one GPU is used by default. That GPU is shared by multiple users. The allocation of sessions across multiple GPUs with DirectX is experimental and requires registry changes. Contact Citrix Support for more information
For OpenGL applications, you should see more than one GPU being used, but the GPUs may not be evenly distributed among sessions.
The is even experimental GPU acceleration for CUDA or OpenCL applications
Never… never … never install the OpenGL Software Accelerator http://support.citrix.com/proddocs/topic/xenapp-xendesktop-75/hd-opengl-accelerator.html ( MESA based OpenGL 2.1 software renderer ) on a Server which has a GPU attached ( baremetal, vGPU or paathrough). This will break OpenGL acceleration.
Dependent on your OS you may need to set a policy for the adapter which should be used for rendering DirectX content in RDS/XenApp Sessions as well
Remote Desktop Services (RDS) sessions on the RD Session Host server use the Microsoft Basic Render Driver as the default adapter. To use the GPU in RDS sessions on Windows Server 2012, enable the Use the hardware default graphics adapter for all Remote Desktop Services sessions setting in the group policy Local Computer Policy > Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment.