A native Windows desktop application for seeing and managing the graphics adapters in a PC: which GPUs are present and usable, how busy they are and with what, which GPU an application prefers, and — experimentally — whether two dissimilar GPUs can usefully share real work.
GPU Fusion reports only what the hardware and drivers actually expose. Metrics that cannot be read are shown as Unsupported or Unavailable, never as zero, and no performance gain is claimed without a benchmark that measured it.
Status: version 1.0.1 — all nine planned phases complete. Live monitoring of every physical GPU (including WDDM 1.x GPUs Task Manager cannot show), per-application GPU usage, adapter details, the Windows per-app GPU preference (set safely and verified with a probe), a diagnostics page with an exportable, privacy-safe report, a benchmark framework (warm-up + repeated runs, output checked bit-exactly, JSON + CSV, comparisons only between equivalent runs), and a Workload Lab that measures whether both GPUs together beat the best single one. On the reference PC: splitting a compute workload by measured speed is 1.14–1.19× faster than the GT 730 alone; decoding one video stream per GPU is 2.2× slower than decoding both on the Intel GPU — see docs/MULTI_GPU_RESEARCH.md and docs/PHASE_PLAN.md.
- Windows 10 (22H2 tested) 64-bit. Windows 11 is expected to work but is untested.
- Development and testing hardware: Intel Core i5-2400S, 12 GB RAM, NVIDIA GeForce GT 730 (GF108 Fermi, driver 391.35) and Intel HD Graphics 2000 (driver 9.17.10.4459). Verified capabilities are recorded in docs/COMPATIBILITY.md.
From the Releases page:
| File | Use |
|---|---|
GPUFusion-Windows-x64.zip |
Portable. Extract anywhere and run GPUFusion\GPUFusion.exe. Settings, logs and results are kept in a data folder next to it. |
GPUFusion-Setup.exe |
Installer, per user, no administrator rights: installs to %LOCALAPPDATA%\Programs\GPU Fusion, adds a Start-menu entry (desktop shortcut optional) and an uninstaller. |
SHA256SUMS.txt |
Checksums: Get-FileHash -Algorithm SHA256 <file> must match. |
GPU Fusion installs no services or drivers, needs no internet connection and changes no system settings by itself. The only setting it can change is a program's Windows GPU preference, and only when you apply one on the GPU Preferences page (journalled, undoable).
Requirements: MSVC 2022 toolset (14.3x), Windows 10 SDK, CMake ≥ 3.28, Ninja, Qt 6.5+ (msvc2022_64)
with the Core, Gui, Widgets and Test modules plus windeployqt.
On the reference machine everything lives on G: and is activated per session:
. G:\GPUFusion\scripts\env.ps1 # session-only: compiler, CMake, Ninja, Qt, TEMP on G:
G:\GPUFusion\scripts\build.ps1 # configure + build + run tests (release preset)or step by step:
cmake --preset release
cmake --build --preset release
ctest --preset releaseThe result, build\release\bin\GPUFusion.exe, runs directly from Explorer: the Qt runtime and
the MSVC runtime are deployed next to it during the build.
On another machine, adjust scripts\env.ps1 (or set GPUFUSION_ENV=1, GPUFUSION_QT_PREFIX
and put cl, cmake and ninja on PATH from a Visual Studio developer prompt — this is what the
GitHub Actions workflow in .github/workflows/build.yml does).
Release artifacts (portable folder, launcher, ZIP, installer, checksums — each verified by launching
it) are produced by scripts\package.ps1; see docs/RELEASE.md.
Launch GPU Fusion.bat in the repository root starts the packaged build (or the development build).
GPUFusion.exe [--data-dir <path>] [--page <id>] [--smoke-test[=<ms>]] [--screenshot <file>]
| Option | Purpose |
|---|---|
--data-dir |
Store settings, logs and benchmarks in <path> |
--page |
Open on dashboard, gpus, applications, preferences, workloads, benchmarks, diagnostics or settings |
--smoke-test |
Start, show the window, exit with code 0 (automated launch check) |
--screenshot |
Save a PNG of the window and exit (waits for adapter detection) |
--screenshot-full |
With --screenshot: capture the page's whole scrollable content |
--screenshot-after |
With --screenshot: wait this many ms after adapter detection |
--verify-gpu-preferences |
Run the GPU preference verification (probe only, restored), save the report, exit |
--export-diagnostics <file> |
Write <file>.md and <file>.json (personal identifiers removed) and exit |
--run-benchmarks <preset> |
Run every available benchmark at size quick, standard or heavy, save the session, exit (0 = all completed with correct output) |
--run-lab <name> |
Run Workload Lab experiment split, decode or all, save the session(s), print the verdicts to the log, exit (0 = every mode completed with correct output) |
--lab-size <preset> |
With --run-lab: hash workload size for the split experiment (default standard) |
| Build | Data folder |
|---|---|
| Development build | G:\GPUFusion\data (via the GPUFusion.datadir file the build writes next to the exe) |
| Portable release | data\ next to GPUFusion.exe |
| Location not writable | per-user %LOCALAPPDATA%\GPUFusion (reported in the status bar and Diagnostics) |
Inside it: config\settings.json (versioned), logs\gpufusion.log (rotated, size-capped),
benchmarks\, reports\, and temp\ (GPU Fusion's own TEMP, so graphics-driver shader caches
stay off the system drive). Nothing is written to the registry, and GPU Fusion installs no
services or startup entries.
ctest --preset release runs the automated tests: unit tests (-L unit) and tests on the real
GPUs, drivers and registry (-L hardware). See docs/TESTING.md.
- Architecture · Phase plan · Testing
- Compatibility · Storage policy · Troubleshooting
- GPU selection · Multi-GPU research
- Per-process usage for GPUs on drivers older than WDDM 2.0 (here: Intel HD 2000) covers only the current user's processes unless GPU Fusion runs as administrator; it never asks for elevation.
- Intel HD Graphics 2000 uses a WDDM 1.2 driver, so Windows performance counters (and Task Manager) cannot show it. GPU Fusion reads its utilization and memory through D3DKMT kernel statistics (verified against a real load). It exposes no temperature, fan, power or clock sensors.
- GT 730 (Fermi, driver 391.35): temperature, fan and performance state via NVML; power draw and clocks are not supported by the driver and are shown as Unsupported.
- Monitoring cost on an i5-2400S: about 0.15 % of the CPU at the default 1-second interval.
- On the reference PC the Windows "Power saving"/"High performance" preference does not change which GPU programs use (verified with a probe); GPU Fusion says so before you apply one.
- The Workload Lab's gains apply to GPU Fusion's own test workloads. GPU Fusion does not (and cannot, without patching other programs) make games or other applications use both GPUs.
- Benchmark results are for this machine's state at the time (other programs, temperature and driver all matter). GPU Fusion compares a result only with an earlier run of the same benchmark, workload size, GPU model and driver, and calls a change faster/slower only when it exceeds the measured run-to-run variation. Measured numbers for the reference PC are in docs/COMPATIBILITY.md.
- "Usable" on a GPU card means a Direct3D 11 device was created on it, not that any application is using it.
GPU Fusion is released under the MIT License. Third-party components keep their own licenses: Qt 6 (LGPL v3, used as unmodified shared libraries) and the Microsoft Visual C++ runtime (redistributable) — see third_party/THIRD-PARTY-NOTICES.txt.