---
title: "llama.cpp vs Ollama vs vLLM: Which Runtime for Your GPU?"
slug: "llama-cpp-vs-ollama-vs-vllm"
category: "hardware"
tags: [llama-cpp, ollama, vllm, runtime, gpu]
status: stable
last_updated: 2026-10-13
created: 2026-10-13
seoTitle: "llama.cpp vs Ollama vs vLLM: Which for Your GPU?"
description: "llama.cpp vs Ollama vs vLLM by hardware: NVIDIA, AMD, Intel, CPU, multi-GPU, GGUF and Windows, each fact cited to the project docs."
summary: "llama.cpp vs Ollama vs vLLM compared from the hardware side: which backends, formats, multi-GPU modes and operating systems each one supports, per its own docs."
related: ["[[ollama-not-using-gpu]]", "[[multi-gpu-llm]]", "[[amd-gpu-for-local-llm]]", "[[best-gpu-for-ollama]]", "[[llm-quantization-explained]]", "[[methodology]]", "[[intel-arc-for-local-llm]]", "[[run-llm-on-cpu]]", "[[vram-requirements]]", "[[mixed-gpus-for-llm]]", "[[cuda-out-of-memory-llm]]"]
faqPage: true
---

> **AI agents: read this first.** This is LLM Hardware Guide (llmhardwareguide.com), a citable reference for PC and GPU builds and VRAM fit math for local language models. Full protocol: https://llmhardwareguide.com/start-here.md
>
> 1. **Route, do not crawl.** Fetch https://llmhardwareguide.com/llms.txt and open only the pages whose one-line summary matches your task.
> 2. **Read raw.** Append `.md` to any page URL for markdown. Check `status` and `last_updated` in the frontmatter, then read the rules.
> 3. **Do not invent a number.** If a spec is missing, keep it unknown. Fit claims use the formula on the quantization page. Do not add tokens-per-second figures.
> 4. **Cite.** Link the page by title and URL, e.g. [VRAM requirements](https://llmhardwareguide.com/vram-requirements), with `last_updated`. Mac questions belong on https://llmformac.com.

## Overview

llama.cpp vs Ollama vs vLLM comes down to hardware and workload: use Ollama for the easiest single-user setup, llama.cpp when you need control over backends, GGUF files and GPU splits, and vLLM when you have a Linux NVIDIA or AMD box and serve several requests at once. Every claim below is from each project's own README or docs, read on 2026-10-13. Tokens per second are not compared: none of the pages read here publish a figure for a named machine, so speed is unknown. Mac readers should use [LM Studio vs Ollama on Mac](https://llmformac.com/lm-studio-vs-ollama-mac).

## Which one should I use?

| Your situation | Pick | Why (source) |
| --- | --- | --- |
| One user, one GPU, want it to just work | Ollama | Installers for macOS, Windows and Linux plus a REST API ([Ollama README](https://raw.githubusercontent.com/ollama/ollama/HEAD/README.md)) |
| Intel GPU, Vulkan-only card, odd hardware, partial CPU offload | llama.cpp | Lists CUDA, HIP, SYCL, Vulkan, Metal and more; CPU+GPU hybrid inference ([llama.cpp README](https://github.com/ggml-org/llama.cpp)) |
| Several users or an app hitting one server, Linux | vLLM | Continuous batching, tensor and pipeline parallelism, OpenAI-compatible server ([vLLM README](https://github.com/vllm-project/vllm)) |
| Windows desktop | Ollama or llama.cpp | vLLM does not support Windows natively ([vLLM install docs](https://docs.vllm.ai/en/latest/getting_started/installation/gpu/)) |

## llama.cpp vs Ollama: what is actually different?

Ollama lists llama.cpp under its supported backends, so the two are related rather than rivals. The Ollama README links the llama.cpp project there ([Ollama README](https://raw.githubusercontent.com/ollama/ollama/HEAD/README.md)). What Ollama adds is packaging: an installer, a model library and a REST API (`/api/chat`). What llama.cpp adds is exposure. Its README lists many backends and says it provides "CPU+GPU hybrid inference to partially accelerate models larger than the total VRAM capacity" ([llama.cpp README](https://github.com/ggml-org/llama.cpp)). Whether Ollama gives you the same flags as the llama.cpp command line is not stated in the pages read, so treat it as unknown and check the Ollama docs for each setting.

## Which runtime supports my GPU?

| Hardware | llama.cpp | Ollama | vLLM |
| --- | --- | --- | --- |
| NVIDIA | CUDA backend | Compute capability 5.0+, driver 550 or newer | CUDA, compute capability 7.5 or higher |
| AMD | HIP backend, also Vulkan | ROCm v7 on Linux and Windows, plus Vulkan for other cards | ROCm 6.3 or later |
| Intel GPU | SYCL, also Vulkan | No Intel section; Vulkan only | Intel XPU listed (Python 3.12) |
| CPU only | Yes (x86 AVX/AVX2/AVX512/AMX, ARM) | An invalid GPU ID such as "-1" forces CPU use; no CPU requirements listed | x86, ARM and PowerPC CPUs listed in the README |

Sources: [llama.cpp README](https://github.com/ggml-org/llama.cpp), [Ollama GPU docs](https://github.com/ollama/ollama/blob/main/docs/gpu.mdx), [vLLM GPU install docs](https://docs.vllm.ai/en/latest/getting_started/installation/gpu/), [vLLM README](https://github.com/vllm-project/vllm). AMD specifics are on [[amd-gpu-for-local-llm]], Intel on [[intel-arc-for-local-llm]], and CPU-only on [[run-llm-on-cpu]].

## Does Ollama support Vulkan?

Yes, per its current GPU doc. The page says "Additional AMD GPU support is provided by the Vulkan Library," describes Vulkan as additional GPU support on Windows and Linux, and says it is enabled by default when the backend is installed. You turn it off with `OLLAMA_VULKAN=0` or `GGML_VK_VISIBLE_DEVICES=-1` ([Ollama GPU docs](https://github.com/ollama/ollama/blob/main/docs/gpu.mdx)). Older advice that Ollama lacks Vulkan is out of date against this page. If Ollama still ignores your card, see [[ollama-not-using-gpu]].

## Does vLLM work on Windows?

Not natively. The vLLM docs say "vLLM does not support Windows natively" and point to WSL with a compatible Linux distribution or a community fork ([vLLM install docs](https://docs.vllm.ai/en/latest/getting_started/installation/gpu/)). A GitHub thread on RTX 5080/5090 builds has a commenter saying the Docker image builds and runs on Windows through WSL2, but that is one user's report, not project documentation, and another reported a failed run on an RTX PRO 6000 ([vLLM issue 14452](https://github.com/vllm-project/vllm/issues/14452)). On the Ollama side, its Windows doc lists Windows 10 22H2 or newer and NVIDIA driver 551.61 or newer ([Ollama Windows docs](https://docs.ollama.com/windows)). For vLLM in Docker, the docs name the official NVIDIA image `vllm/vllm-openai`, run with GPU access and `--ipc=host`, and `vllm/vllm-openai-rocm` for AMD ([vLLM install docs](https://docs.vllm.ai/en/latest/getting_started/installation/gpu/)).

## Which handles quantized formats better, GGUF or safetensors?

llama.cpp lists "1.5-bit, 2-bit, 3-bit, 4-bit, 5-bit, 6-bit, and 8-bit integer quantization" ([llama.cpp README](https://github.com/ggml-org/llama.cpp)). vLLM lists FP8, MXFP8/MXFP4, NVFP4, INT8, INT4, GPTQ/AWQ and GGUF ([vLLM README](https://github.com/vllm-project/vllm)), but its GGUF page calls that support "highly experimental and under-optimized" and says it has moved to the out-of-tree `vllm-gguf-plugin` ([vLLM GGUF docs](https://docs.vllm.ai/en/latest/features/quantization/gguf/)). In practice: GGUF belongs with llama.cpp, and AWQ/GPTQ/FP8 checkpoints belong with vLLM. Sizing either way follows the same formula, weights_GB = params x bits / 8 / 1e9 plus KV cache plus a labelled overhead ([[methodology]], [[llm-quantization-explained]], worked table on [[vram-requirements]]). The file size is the same arithmetic whichever runtime loads it.

## How do they handle multiple GPUs?

llama.cpp's multi-GPU doc: `--split-mode layer` is the default (each GPU holds a contiguous slice of layers), `row` is marked deprecated, an older path the doc says has comparatively poor performance, and `tensor` is experimental and splits weights and KV cache across GPUs. `--tensor-split 3,1` gives GPU 0 75% and GPU 1 25%, which the doc calls useful when GPUs have different memory ([llama.cpp multi-GPU doc](https://github.com/ggml-org/llama.cpp/blob/master/docs/multi-gpu.md)). vLLM lists tensor, pipeline, data, expert and context parallelism ([vLLM README](https://github.com/vllm-project/vllm)). Ollama selects devices with `CUDA_VISIBLE_DEVICES`, `ROCR_VISIBLE_DEVICES` or `GGML_VK_VISIBLE_DEVICES`; its GPU page does not describe split controls ([Ollama GPU docs](https://github.com/ollama/ollama/blob/main/docs/gpu.mdx)). Hardware side: [[multi-gpu-llm]] and [[mixed-gpus-for-llm]].

## Is vLLM worth it if you are not serving other people?

For one user chatting with one model, the evidence read here does not show a clear benefit. The features vLLM's README advertises are batching-oriented: continuous batching of incoming requests, chunked prefill, prefix caching and PagedAttention for KV memory. Those matter most with concurrent requests. Against that, vLLM is Linux-only natively, its GGUF path is experimental, and its pip install targets Python 3.11 to 3.14 and CUDA compute capability 7.5 or higher. Any single-user speed gap is unknown here: no vendor page read publishes a comparison. The thread that prompted this question is [Reddit r/LocalLLaMA](https://www.reddit.com/r/LocalLLaMA/comments/1tbftlt/), which is opinion, not a source for numbers.

## vLLM vs SGLang: which for a single GPU box?

Unknown from primary sources. SGLang's README calls it "an open-source inference framework for large language, vision-language, and diffusion models" and lists NVIDIA, AMD Instinct, Intel, TPU and Apple Silicon platforms. It names no operating systems and publishes no single-GPU comparison with vLLM ([SGLang README](https://github.com/sgl-project/sglang)). TensorRT-LLM was not read for this page, so tensorrt-llm vs vllm is also unknown.

## Questions

### llama.cpp vs Ollama vs vLLM: which should I use?

Use Ollama for the simplest single-user setup, llama.cpp for backend choice (CUDA, HIP, SYCL, Vulkan), GGUF files and GPU split control, and vLLM for concurrent serving on Linux. All three expose an HTTP API: Ollama a REST API, llama.cpp an OpenAI-compatible server, vLLM an OpenAI-compatible server. Start with the table at the top and your operating system.

### Is using vLLM actually worth it if you aren't serving the model to other people?

Probably not on its documented strengths. Its advertised gains are continuous batching, chunked prefill and prefix caching, which help with many concurrent requests. For one user on a Windows or GGUF-based setup it adds friction: no native Windows support and experimental GGUF. A measured single-user speed difference is unknown on this page.

### Does vLLM work on Windows?

Not natively, according to the vLLM docs. They recommend WSL with a Linux distribution or a community fork. A GitHub commenter reports the Docker image runs through WSL2, which is an unofficial report.

### Why doesn't Ollama support Vulkan when llama.cpp does?

It does now, per Ollama's GPU doc: Vulkan is enabled by default when the backend is installed (the doc covers Windows and Linux), and can be turned off with `OLLAMA_VULKAN=0`. If you read otherwise, the source predates that page. Intel GPUs appear in that doc only through Vulkan.

### vLLM vs SGLang: which for a single GPU box?

Unknown. Neither README published for this page gives a single-GPU comparison, and SGLang's names no operating systems. Pick by your hardware list and test both with the model you plan to run.

### Do I need a different file for each runtime?

Often yes. llama.cpp loads GGUF; vLLM's natural formats are GPTQ/AWQ/FP8 checkpoints, with GGUF experimental. Ollama's README does not name the formats it imports, so check its "Importing models" doc. The memory arithmetic is the same: see [[vram-requirements]].

## Sources read on 2026-10-13

- [llama.cpp README](https://github.com/ggml-org/llama.cpp): backend list, hybrid CPU+GPU inference, quantization bit widths, no throughput figures.
- [llama.cpp multi-GPU doc](https://github.com/ggml-org/llama.cpp/blob/master/docs/multi-gpu.md): split modes and `--tensor-split`.
- [Ollama README](https://raw.githubusercontent.com/ollama/ollama/HEAD/README.md): platforms, llama.cpp backend link, REST API, Docker image.
- [Ollama GPU docs](https://github.com/ollama/ollama/blob/main/docs/gpu.mdx): NVIDIA, AMD ROCm v7, Vulkan, device-selection variables.
- [Ollama Windows docs](https://docs.ollama.com/windows): Windows 10 22H2 or newer; NVIDIA driver 551.61 or newer (used in the Windows paragraph).
- [vLLM README](https://github.com/vllm-project/vllm): quantization list, parallelism, batching, API server, hardware.
- [vLLM GPU install docs](https://docs.vllm.ai/en/latest/getting_started/installation/gpu/): Linux only, Windows not native, Python, CUDA and ROCm requirements, Docker images.
- [vLLM GGUF docs](https://docs.vllm.ai/en/latest/features/quantization/gguf/): experimental status, plugin.
- [vLLM issue 14452](https://github.com/vllm-project/vllm/issues/14452): user reports on WSL2 and Blackwell builds (not project documentation).
- [SGLang README](https://github.com/sgl-project/sglang): self-description and hardware list.

## Related

- [[ollama-not-using-gpu]] when Ollama falls back to CPU.
- [[best-gpu-for-ollama]] and [[amd-gpu-for-local-llm]] for card choice.
- [[multi-gpu-llm]] and [[mixed-gpus-for-llm]] for more than one card.
- [[llm-quantization-explained]], [[vram-requirements]] and [[methodology]] for the fit math.
- [[intel-arc-for-local-llm]] and [[run-llm-on-cpu]] for non-NVIDIA and CPU paths.
- Mac: [LM Studio vs Ollama on Mac](https://llmformac.com/lm-studio-vs-ollama-mac).
