The feature you’re looking for is called Single Root I/O Virtualization (SR-IOV). Or at least, that is the name of the version standardized by PCI-SIG.
Allegedly, Intel Iris Pro integrated GPUs support SR-IOV (branded as “GVT-d”). This would really be the only affordable option at your given price limit. However, I’m not sure if the work has been done in Linux or libvirt to expose the feature. Linux does support SR-IOV for many server network adapters.
SR-IOV is also supported by at least the following AMD cards (branded “MxGPU”)):
- Radeon Instinct MI25
- Radeon Instinct MI8
- Radeon Instinct MI6
- FirePro S7150
- FirePro S7150 X2
It’s difficult to be sure that this is an exhaustive list. Nvidia has cards which offer similar features, which at least used to be branded “GRID,” but I think the older Kepler-based ones used a proprietary technology instead of SR-IOV, and I cannot confirm either way for the newer ones. Here are lists anyway:
https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units#Grid_GPUs 172
https://www.nvidia.com/object/nvidia-grid-buy.html 90
Some of these cards can be found on Ebay for less than 2000 USD. They all have passive cooling designs which require a server chassis or similar environment. Additionally, I don’t think any of them have display adapters so you will still need integrated graphics or a separate card to attach your monitors. These cards are meant to be used with enterprise hypervisors (VMware, Citrix, etc.), so I’m not sure if the work has been done in open source code to enable them in Linux. Also, the intent in this case is to share the GPU between multiple guests, not between the host and a guest. I’m not sure if that makes a difference in implementation.