DEV Community

Cover image for How to Enable Ollama GPU Acceleration on Intel Arc in Windows
Federico Navarrete
Federico Navarrete

Posted on Edited on AI-assisted

How to Enable Ollama GPU Acceleration on Intel Arc in Windows

I recently encountered an interesting performance issue while running Ollama locally on my ASUS ZenBook with an Intel Arc 140T integrated GPU.

I was sure that I had enough GPU:

GPU Preview

However, every model I tested was extremely slow, including relatively small models such as Qwen3 4B.

After investigating, I discovered that Ollama was running entirely on the CPU instead of using the GPU.

Identifying the problem

Ollama provides a simple command to check where a model is running:

ollama ps
Enter fullscreen mode Exit fullscreen mode

Initially, the output showed:

NAME       SIZE     PROCESSOR   CONTEXT
qwen3:4b   3.9 GB   100% CPU    8192
Enter fullscreen mode Exit fullscreen mode

The GPU was not being used.

Enabling Intel Arc GPU acceleration

The solution was to enable two environment variables:

$env:OLLAMA_VULKAN = "1"
$env:OLLAMA_IGPU_ENABLE = "1"
Enter fullscreen mode Exit fullscreen mode

The first enables Ollama's experimental Vulkan backend, while the second allows integrated GPU detection.

After completely closing Ollama, I restarted the server:

ollama serve
Enter fullscreen mode Exit fullscreen mode

Then I loaded the model again:

ollama run qwen3:4b
Enter fullscreen mode Exit fullscreen mode

Checking the processor allocation:

ollama ps
Enter fullscreen mode Exit fullscreen mode

This time, the result was:

NAME       SIZE     PROCESSOR   CONTEXT
qwen3:4b   3.2 GB   100% GPU    4096
Enter fullscreen mode Exit fullscreen mode

Success! Ollama is now using the Intel Arc GPU.

Making the configuration permanent

To avoid setting the variables every time Ollama starts, configure them permanently in PowerShell:

[Environment]::SetEnvironmentVariable("OLLAMA_VULKAN", "1", "User")
[Environment]::SetEnvironmentVariable("OLLAMA_IGPU_ENABLE", "1", "User")
Enter fullscreen mode Exit fullscreen mode

Restart Ollama after applying these changes.

Final thoughts

This experiment was performed using:

  • GPU: Intel Arc 140T
  • Driver: 32.0.101.8860
  • OS: Windows 11 26H2
  • Ollama: 0.40.11
  • Model: Qwen3 4B

The interesting lesson is that having a GPU capable of running a model does not guarantee that your inference engine is actually using it.

Tools that estimate whether a model fits into memory are useful, but actual hardware utilization matters just as much.

I believe Ollama could improve the user experience by displaying GPU utilization directly in its interface and warning users when a compatible GPU is available, but inference is running on the CPU.

Until then, ollama ps is your friend!

Notes:

  • Vulkan acceleration remains experimental, and results may vary depending on your Intel GPU, drivers, and Ollama version.
  • I created this ticket on GitHub; maybe they could support it from the UI in the future.

Follow me on:

Personal LinkedIn YouTube Instagram Cyber Prophets Sharing Your Stories
Personal LinkedIn YouTube Instagram RedCircle Podcast RedCircle Podcast

sponsor me

Top comments (2)

Collapse
 
mrsaynothing profile image
Mr Say Nothing •

Useful lane — Arc adds one wrinkle to the VRAM math that CUDA guides never mention: the overhead band. The usual 0.6-1.2 GiB context-plus-buffers number is an NVIDIA shape; on SYCL/IPEX builds the driver and compute buffers take a bigger bite, and on 8-16 GB shared-memory chips that band decides the fit as much as the weights do. Did you capture idle-vs-loaded VRAM in the task manager while it ran? That delta is the honest overhead number on Arc, and it would make this guide the rare one that prints it.

Collapse
 
fanmixco profile image
Federico Navarrete •

That's a good point! I haven't captured the idle versus loaded GPU memory consumption during my current experiments. My main objective was to identify why Ollama was using the CPU despite having a compatible GPU.

One distinction worth mentioning is that my setup uses the experimental Vulkan backend rather than SYCL/IPEX.

I'll consider adding memory measurements in a follow-up test, particularly because the Arc 140T uses shared system memory. It would be interesting to compare the actual overhead against the model's reported size.

⌂ 换网址