Skip to content

GPU Module Changelog

This page documents the version history of the KDB-X GPU module, including released versions, fixes, and improvements.

2.8.0

Release date: 2026-09-01

Exec form of .gpu.select.

Fixes and improvements

  • .gpu.select now supports exec forms: the shapes of the by and phrase arguments choose between select and exec semantics, as in native q.
  • Fixed some incorrect temporal casts.

2.7.0

Release date: 2026-08-26

Runtime configuration with .gpu.config, fby and .gpu.ungroup support, and sort, allocation, and comparison fixes.

Fixes and improvements

  • Added .gpu.config to get or set runtime configuration.
  • Added the alloc setting to .gpu.config, choosing power-of-two device allocations (`buddy, the default and previous behavior) or exact-size ones (`tight). `tight cuts VRAM for data that isn't appended to, at the cost of every append reallocating.
  • Added .gpu.ungroup.
  • Added support for fby in .gpu.select and .gpu.update.
  • Added support for .gpu.append taking a symbol atom naming a global as its first argument. It appends to that global and returns the symbol, similar to `t upsert y.
  • Added support in .gpu.select for comparing an enumerated symbol column (type 20h) to a symbol atom (type 11h) with = and <>. For example:
q)T:.gpu.to ([]s:`sym$`AAPL`MSFT`AAPL;p:150 300 152)
q).gpu.from .gpu.select[T;enlist(=;`s;enlist`AAPL);0b;()]
  • Deprecated .gpu.setMemRelThres and .gpu.getMemRelThres in favor of the memRelThres setting of .gpu.config.
  • Fixed .gpu.asc, .gpu.xasc and two-key .gpu.aj failing with an allocation error on empty input.
  • Fixed .gpu.asc sorting against a null buffer, and .gpu.to failing silently, on an allocation failure.
  • Fixed a comparison against a scalar returning wrong values in its last rows.
  • Fixed incorrect sort order in .gpu.xasc, .gpu.asc, and .gpu.iasc when sorting on an enumerated symbol column with a large enumeration domain.
  • Fixed incorrect sort order in .gpu.xasc, .gpu.asc, and .gpu.iasc when sorting on an enumerated symbol column whose enumeration domain has more entries than the table has rows.
  • Fixed copy-on-write semantics of .gpu.append.
  • Fixed a GPU_LAUNCH_FAIL error when sorting on multiple columns, seen on some GPU architectures.

2.6.2

Release date: 2026-08-14

Where clauses rework.

Fixes and improvements

  • Reworked how where clauses are applied to improve performance for highly selective queries.

2.6.1

Release date: 2026-08-12

Blackwell sm_120 architecture support.

Fixes and improvements

  • Added support for the sm_120 architecture of Blackwell.

To find the correct version for your GPU, run nvidia-smi --query-gpu=compute_cap and multiply by 10 (for example, 10.0100, 12.0120).

2.6.0

Release date: 2026-08-12

Inner join, window join, covariance, correlation, and update support, additional .gpu.select operations, and .gpu.select fixes.

Fixes and improvements

  • Added support for inner join .gpu.ij.
  • Added support for window joins .gpu.wj and .gpu.wj1, with sum, min, max, count, avg, first, and last aggregations.
  • Added support for covariance, sample covariance, and correlation with .gpu.cov, .gpu.scov, and .gpu.cor for GPU-resident float vectors.
  • Added support for rank and xrank in .gpu.select.
  • Added support for iasc with a by clause in .gpu.select.
  • Added support for .gpu.update.
  • Fixed iasc under a where clause in .gpu.select to match native q.
  • Fixed a bug in .gpu.select that caused some operations to fail on boolean expressions.

2.5.0

Release date: 2026-07-28

This release adds support for Blackwell, additional .gpu.select operations, and .gpu.lj; it also improves performance and allocation-failure handling.

Fixes and improvements

  • Added support for left join .gpu.lj.
  • Added support for ema in .gpu.select.
  • Improved group-by sort performance in .gpu.select.
  • Fixed a bug that terminated the process after an allocation failure instead of returning a recoverable error.
  • Fixed a crash on an empty input to .gpu.select.
  • Added Blackwell (sm_100) support.

2.4.0

Release date: 2026-07-16

Additional .gpu.select operation support and a groupby fix.

Fixes and improvements

  • Added support for fill (^) and fills (^\) in .gpu.select.
  • Added support for ratios and deltas in .gpu.select.
  • Added support for prev, xprev, and next in .gpu.select.
  • Fixed a bug in .gpu.select that manifested as missing results in a groupby operation.

2.3.0

Release date: 2026-06-30

Windowed scan operations & Sort performance improvements.

Fixes and improvements

  • Added support for msum, mmin, mmax and mdev in .gpu.select.
  • Improved multi-column sort performance in .gpu.xasc, .gpu.asc, and .gpu.iasc.

2.2.0

Release date: 2026-06-15

Scan operations, keyed tables, and performance improvements.

Fixes and improvements

  • Added support for prds, mins, and maxs in .gpu.select.
  • Added support for keyed tables, which are now returned from .gpu.select with a by clause.
  • Improved .gpu.select performance by avoiding casts with bit-identical input and output.

2.1.0

Release date: 2026-06-02

Scan operation support and fixes.

Fixes and improvements

  • Added support for sums and xexp in .gpu.select.
  • Allowed non-GPU-resident columns in .gpu.xasc. Sorting on such columns (that is, the lhs arguments) remains unsupported.
  • Fixed .gpu.select to broadcast atomic results to match the size of other columns.
  • Fixed a crash in .gpu.take when trying to create very large tables.
  • Fixed .gpu.gather handling of null indices to match q semantics. Null indices now produce null output values instead of incorrectly reading from index 0.

2.0.0

Release date: 2026-05-19

Nested data and richer .gpu.select.

Fixes and improvements

  • Added support for columns of lists (1 level deep only). This enables mavg inside a .gpu.select with a by clause.
  • Improved sorting performance.
  • Improved aggregate performance in .gpu.select.
  • Added greater operator support in .gpu.select: casting, dev, first, iasc, in, last, mavg, sqrt, var, wavg, within, and xbar.
  • Removed the requirement for an aggregate in the select phrase when using .gpu.select with a by clause.
  • Fixed integer-sum overflow.
  • Exposed GPU memory pool configuration through .gpu.setMemRelThres and .gpu.getMemRelThres. For more information, refer to CUDA memory pool documentation.
  • Exposed cudaProfilerStart and cudaProfilerStop through .gpu.profiler.start and .gpu.profiler.stop.
  • Renamed device management functions: ndev to cntDev, gdev to getDev, sdev to setDev, and mdev to memDev.

1.0.1

Release date: 2026-04-30

Release fix.

Fixes and improvements

  • Support for CUDA 12 alongside CUDA 13.
  • Fixed build issue with some 1.0.0 packages.

1.0.0

Release date: 2026-03-31

Initial Release

Fixes and improvements

N/A