GPU acceleration on Mac and Windows
Aubora runs its AI models on your computer, never on a server. By default they run on the processor (CPU): it works on every machine and gives the reference results. On an Apple Silicon Mac, or on a Windows PC with a DirectX 12 graphics card, you can move the search model to the graphics processor (GPU) instead. This page explains what that changes, how to turn it on, and how Aubora makes sure the results stay correct.
GPU acceleration is experimental during the beta and off by default.
In short
- Mac with Apple Silicon (M1 and later): the GPU runs the search model through Apple's Core ML. Indexing takes about as long, but uses far less of your processor, so the Mac stays responsive, cooler, and quieter during a big import.
- Windows PC with a DirectX 12 graphics card: the GPU runs the search model through Microsoft's DirectML. With a dedicated graphics card, indexing should be faster than on the processor; we're measuring it on real hardware during the beta.
- Intel Macs and Windows on ARM: not available yet. Aubora runs on the processor, which is fully supported.
What runs on your computer
| Task | What does it | Where it runs |
|---|---|---|
| Content search ("beach at sunset", "red car") | The search model (CLIP): turns each photo, and each search you type, into a vector of numbers | CPU by default, GPU if you turn it on |
| Finding and grouping faces | Face detection and recognition models | CPU, always |
| Map and dates | No AI: read from each photo's EXIF data (or Google Takeout JSON files) | CPU |
All models run through ONNX Runtime, the same engine on every platform. ONNX Runtime hands the work to an execution provider: the CPU, Core ML on a Mac, or DirectML on Windows. GPU acceleration only moves the search model, the heaviest part of indexing. Faces stay on the processor whatever you choose.
Should you turn it on?
- Yes, to try it, if you're about to index a large library (thousands of photos) and want to keep using your computer meanwhile, or want less fan noise and battery drain.
- No need for small libraries or day-to-day scans: after the first index, Aubora only reads new photos, and the processor handles that quickly.
- Turn it off if anything looks wrong. The processor path is the reference.
On a Mac: Core ML
Which Macs
Macs with Apple Silicon (M1, M2, M3, M4 and later). On Intel Macs the option is disabled: the GPU version of the model must be compiled and cached on disk, and the ONNX Runtime build available for Intel Macs can't keep that cache, so it would recompile at every launch.
Turn it on
- Open Settings → Advanced → Acceleration.
- Turn on Use GPU acceleration (CoreML).
- Aubora downloads the GPU version of the search model once (about 600 MB, in 16-bit precision), then compiles it for your Mac's GPU. That takes a few minutes; a progress note shows each step, and you can keep using Aubora meanwhile.
- The compiled model is cached on disk, so later launches skip the compile.
What to expect
- Speed: about the same as the processor. In our tests on an M4, both took about 170 ms per photo for the search model.
- Load on your Mac: much lower. On the processor, indexing keeps several cores busy; on the GPU it drops to roughly one core. The rest of the Mac stays responsive, and the fans and battery are under less load.
- Only for large scans: loading the model onto the GPU takes a moment at the start of a scan (the status shows "Loading AI models (CoreML…)"). So Aubora uses the GPU only for scans of at least 2,000 photos by default; smaller scans stay on the processor. You can change the threshold right under the toggle: Use the GPU only for scans of at least … photos.
Why not the Neural Engine?
Apple's Neural Engine gave wrong results for this model on some Macs during our tests, without any error message. Aubora therefore asks Core ML to use the GPU and CPU only, in the "ML Program" format with fixed input sizes: the configuration that matched the processor's results on every photo we tested.
On Windows: DirectML
Which PCs
An x64 PC running Windows 11 (what Aubora supports; DirectML itself works from Windows 10 version 1903) with a DirectX 12 graphics card. According to Microsoft, that covers:
- NVIDIA GeForce GTX 600 series and newer;
- AMD Radeon HD 7000 series (GCN) and newer;
- Intel integrated graphics from 4th-generation Core (Haswell) and newer.
On Windows on ARM (Snapdragon laptops) the option is disabled: there's no DirectML build of ONNX Runtime for ARM yet. Support for these PCs' graphics and AI chips is planned. In a virtual machine there's usually no DirectX 12 graphics card visible, so Aubora stays on the processor.
Turn it on
- Open Settings → Advanced → Acceleration.
- Turn on Use GPU acceleration (DirectML).
- Aubora downloads the GPU version of the search model once, then checks it on your graphics card against the processor (see below).
- It applies from the next scan, whatever its size.
What to expect
- Speed: with a dedicated graphics card, the search model should run faster than on the processor. Integrated graphics gain less. We're measuring it on real hardware during the beta.
- Laptops with two graphics chips (an integrated one and a dedicated one): DirectML uses Windows' default adapter, usually the one driving the main display. Aubora doesn't let you pick the other one yet.
How Aubora keeps the results correct
A GPU computes with 16-bit numbers where the processor uses 32-bit ones, and GPU drivers sometimes compute a model wrongly without reporting an error. Aubora guards against both:
- Checked against the processor. When it loads the model on the GPU, Aubora runs the same input on the GPU and on the processor and compares the two results. If they don't match closely (a cosine similarity under 0.99), it drops the GPU and stays on the processor, and tells you.
- 16-bit is enough for search. On a real library, the 16-bit model's results matched the 32-bit model's (cosine similarity 1.0) and returned the same top 10 for every search tested. Your search results don't change.
- Automatic fallback. If the download, the compile, or the check fails, Aubora keeps working on the processor. Nothing is lost, and your index stays valid.
Turn it off
Turn off the toggle in Settings → Advanced → Acceleration. On a Mac, Aubora offers to also delete the cached GPU model to free the disk space it uses; if you keep it, turning the GPU back on is instant. Scans then run on the processor again.
Messages you may see
| Message | What it means |
|---|---|
| "Not available on this Mac" | An Intel Mac, or a build without GPU support. Aubora runs on the processor. |
| "Not available on this PC" | No DirectX 12 graphics card, or Windows on ARM. Aubora runs on the processor. |
| "GPU acceleration didn't apply… (fell back to CPU…)" | The GPU couldn't run the model or its results didn't match the processor's. Aubora stays on the processor. |
| "Couldn't download the GPU model" | No internet connection during the download. Connect and try again. |
| "GPU acceleration compiled but couldn't cache on this Mac" | Seen on Intel Macs: without a cache it would recompile at every launch, so Aubora stays on the processor. |
Questions
Does the GPU make my searches different?
No. The GPU check and the 16-bit tests above show the same results as the processor. If a search ever looks odd after you turn the GPU on, turn it off and tell us.
Does it speed up face recognition?
No. Face detection and recognition always run on the processor. Only the search model moves.
Why is the processor the default?
It works on every computer, gives the reference results, and indexing is mostly limited by downloading photos from your cloud anyway. The GPU option is there for large imports, where the load on your computer matters.
How do I know which one was used?
Export the logs (Settings → Advanced → About → Export logs): each scan notes whether the search model ran on CoreML, DirectML, or the CPU.
Sources: ONNX Runtime: Core ML execution provider, ONNX Runtime: DirectML execution provider.
Still stuck? What to do if you're stuck
Try Aubora on your own library
Free public beta for Mac and Windows. Indexing and search run on your computer.
Download Aubora