CuPy vs MLX in 2026
CuPy and MLX compared on what each tool does, what each costs, how each is installed and what to check before you pick one for array code in Python.
SayDeploy is published by LunarWerx, which makes some of the tools compared here.
This page sets out what the CuPy and MLX pages say and what PyOverdrive's approved claims say, so you can match them to your work. CuPy is an open-source array library for GPU-accelerated computing with Python [1]. MLX's page says its design is inspired by frameworks like PyTorch [2]. PyOverdrive uses faster paths for supported NumPy functions and falls back to standard NumPy when an input is outside its measured range [3].
| Option | Option | Price | Licence | Install | Platforms |
|---|---|---|---|---|---|
| CuPy | Not published | Not published | Not published | Precompiled wheels, ready-built install packages [1] | Linux and Windows [1] |
| MLX | Not published | Not published; documentation copyright Apple [2] | Not published | Not published | CPU and GPU device types [2] |
| PyOverdrive | Not published | MIT License [3] | Pip, straight from the GitHub repository [3] | OS independent [3]; Python 3.12 or newer [3] | Windows and Linux x86-64 tested [3] |
The short answer
Here is what each tool does for a developer, and which needs its sources say it meets. CuPy is built for GPU work in Python [1]. Its page says it can usually stand in for NumPy and SciPy [1].
MLX delays its calculations until a result needs them [2]. Its sources also describe a C++ interface [2].
For needs, CuPy's sources speak to GPU work and to ready-built packages for Linux and Windows [1]. MLX's sources speak to lazy calculation and a C++ interface. PyOverdrive's claims speak to existing NumPy code, with a check against standard NumPy on your own machine [3].
What CuPy and MLX are built for
CuPy's page calls it an open-source array library for GPU-accelerated computing with Python [1]. Its page says it provides wheels, which are precompiled binary packages, for Linux and Windows [1]. In most cases it can be used as a drop-in replacement for NumPy and SciPy [1].
MLX's page says its computations are lazy, so arrays are only materialized, meaning actually computed, when needed [2]. The design is inspired by frameworks like PyTorch [2]. It also has a C++ API, an interface for C++ programs, that closely follows the Python API [2].
What PyOverdrive is built for
PyOverdrive is made by the team that publishes this site.
One call switches on faster paths for supported NumPy functions, so existing code uses them, while calls it does not support run on standard NumPy [3].
A faster path runs only when a check confirms the input is in its measured range [3]. Anything else, or a faster path that raises an error, goes to standard NumPy [3].
A built-in check, run from the command line, compares every faster path with standard NumPy on your own machine [3]. A calibration run re-times the threaded paths on your processor and switches off any that do not pay off there [3].
An explain function reports which path a call would take and why, without running the call [3]. You can turn off one faster path, or restore the original NumPy functions [3].
Threaded paths cover the sine, cosine, tangent, exponential, logarithm and tanh functions on arrays stored in the usual row by row layout, with 64-bit or 32-bit decimal numbers [3]. They start above a size floor of 3e5 to 3e6 elements, set for each function and number type [3].
QR decomposition on large batches of 3 by 3 matrices, benchmarked at 10,000 of them, uses a vectorized closed-form formula. Eigenvalues of float batches of 2 by 2 and 3 by 3 matrices also have direct formulas above a size threshold [3].
Large einsum calls go to NumPy's own planner, which picks the order of the work, once they pass a measured size [3]. Membership tests with np.isin on one-dimensional text or object arrays can use a hash set, a fast lookup table, in place of the default method [3].
Pricing and fees
The facts given for CuPy and MLX state no price, so no price is published here for either.
CuPy's page describes it as open-source [1]. No price for it appears in the facts given here.
PyOverdrive is open source under the MIT License [3]. Its approved claims give no price for it, so no price is published here.
Read the license terms before you rely on the code in a commercial project.
Setting it up and daily use
CuPy's page says its wheels, ready-built install packages, cover Linux and Windows [1]. The facts given here do not describe its setup steps beyond that, so check its pages for the rest.
The facts given for MLX do not describe how it is installed or used day to day, so check its own pages before you start.
PyOverdrive installs with pip straight from its GitHub repository [3]. It needs Python 3.12 or newer [3]. It is at version 1.0.0 with status Beta [3].
Once installed, run the demo to time the main operations with standard NumPy and with PyOverdrive on your own machine, which takes about 20 seconds [3].
The self-check compares every faster path with standard NumPy [3]. The calibration run re-times the threaded paths on your processor [3].
If one faster path causes trouble, you can turn just that one off [3].
Things to check before you choose
Ask which hardware your code will run on, and check each tool's pages for the device types it supports.
Ask whether your code uses the NumPy functions PyOverdrive's claims list, since only supported functions use the faster paths [3].
Ask how much weight to give a Beta release at version 1.0.0 [3].
Ask whether the platform you need is covered. CuPy's wheels cover Linux and Windows [1]. PyOverdrive's test suite has been run on Windows and on Linux x86-64 [3].
Ask whether a drop-in replacement works for your code. CuPy's page says that holds in most cases, so run your own tests [1].
Ask what you can check on your own machine. PyOverdrive's self-check and demo cover that [3].
How to choose
If you want GPU array work in Python, CuPy's page describes that [1].
If you want lazy calculation, MLX's page describes that [2]. If you want a C++ interface that follows the Python one, MLX's page describes that [2].
If you want existing NumPy code to use faster paths with a check against standard NumPy, PyOverdrive's claims describe that [3].
If you want the same code to fall back to standard NumPy when an input is out of range, PyOverdrive's claims describe that too [3].
If price is your deciding factor, none of the three has a price in the facts given, so compare the license terms before you choose.
Frequently asked questions
Is CuPy free to use?
CuPy's page describes it as an open-source array library for GPU-accelerated computing with Python [1]. The facts given here state no price for it, so no price is published here. Check its own pages for licence terms before you rely on it in a project.
Is MLX free to use?
The facts given here state no price for MLX, so no price is published here. MLX's page says its computations are lazy, so arrays are only materialized when needed [2]. Check its own pages for terms of use before you adopt it, since those terms are not covered by the facts on this page.
Is PyOverdrive free and open source?
PyOverdrive is open source under the MIT License [3]. Its approved claims give no price for it, so no price is published here. Read the license text before you use the code in a commercial project, since the terms are set out there.
How do you install PyOverdrive?
You install it with pip straight from the GitHub repository [3]. It needs Python 3.12 or newer [3]. After installing, run the demo, which times the main operations with standard NumPy and with PyOverdrive in about 20 seconds [3].
Does CuPy work on Windows and Linux?
CuPy provides wheels, which are precompiled binary packages, for Linux and Windows [1]. Its page says that in most cases it can be used as a drop-in replacement for NumPy and SciPy [1]. Check your own code on it before you rely on that, since most cases is not every case.
It is open source under the MIT License. [3]
Try PyOverdriveSources
Related comparisons
- Best NumPy acceleration libraries in 2026
- Best NumPy acceleration libraries for data scientists in 2026
- Best NumPy acceleration libraries for quant analysts in 2026
- Best NumPy acceleration libraries for scientific Python users
- Bottleneck alternatives in 2026 for NumPy speed
- Bottleneck vs CuPy in 2026: Pricing, Setup and Features
- Bottleneck vs Cython in 2026: Pricing, Setup, Features
- Bottleneck vs Dask in 2026: NumPy Acceleration Compared
- Bottleneck vs dpnp in 2026: Pricing, Setup and Features
- Bottleneck vs JAX in 2026: Pricing, Setup and Features