1) IOMMU support in CPU and motherboard required (IOMMU should be enabled in BIOS).

2) GPU PCI passthrough can be done only with all devices from the same IOMMU group. (more info)

3) Passed through GPU must be used exclusively (it is impossible to use the same GPU from host and from guest, as well as it can’t be used from multiple guests). So host-system should ignore passed through GPU (see here about “vfio-pci” and “Isolation of the guest GPU”).

4) External GPU connected to passed through GPU needed. Most monitors can be easily switched from one connected input cable to another, so this is not a big problem. You can also read about this here in comments by keyword “monitor”. But it is possible to have full OpenGL support with remote access via VNC without connecting external monitor - you can configure guest system with VirtualGL with these scripts (over TurboVNC you can run noVNC server, which makes possible to connect from any computer with browser).

Notes about NVidia Geforce and Titan:

5) Geforce driver doesn’t work if it detects virtualization. It checks hypervisor signature in CPUID. So kvm_hidden=on option required in case of KVM (see devtalk, askubuntu, detecting virtualization).

6) It is not allowed to use Geforce and Titan driver in datacenter (w.r.t. its EULA):

No Datacenter Deployment. The SOFTWARE is not licensed for datacenter deployment, except that blockchain processing in a datacenter is permitted.

What is a datacenter in NVidia opinion - still is unknown.