Skip to content

Releases: zachshallbetter/cuda-compatibility

0.2.22

Choose a tag to compare

@zachshallbetter zachshallbetter released this 04 Nov 20:43

Faster training with no code changes on Maxwell (sm_52).

  • torch.optim.Adam and AdamW now choose the fused one-launch-per-parameter step by default when every parameter is float32 on one GPU (#257). An explicit fused or foreach setting is respected. Measured on a GTX TITAN X with default AdamW: a small MLP step goes from 7 to 4 ms, and a 7M-parameter GPT trains at 1.08x the CPU.
  • install.sh --uninstall now offers, at a terminal, to remove the PyTorch environment the installer itself created (#253).

Upgrade: curl -fsSL https://cudacompat.com/install.sh | sh, or brew upgrade cuda-legacy.

0.2.21

Choose a tag to compare

@zachshallbetter zachshallbetter released this 04 Nov 19:02

Less Python overhead per GPU operation on Maxwell (sm_52) (#243).

Native kernel launches and the adapter's dispatch path now do their routing work only when an operator actually needs it. They also pass launch arguments more cheaply, and same-shape elementwise ops skip broadcasting. Measured on a GTX TITAN X: the LSTM training step goes from 0.148 to 0.109 s, and a small CNN step to 28 ms. Results match the CPU across the reference suite.

Upgrade: curl -fsSL https://cudacompat.com/install.sh | sh, or brew upgrade cuda-legacy.

0.2.20

Choose a tag to compare

@zachshallbetter zachshallbetter released this 04 Nov 16:16

Faster training on Maxwell (sm_52).

  • Adam and AdamW with fused=True now run in one GPU launch per parameter (#246). On a small CNN, that is 84 fewer launches per step. Results match the CPU optimizer, including weight decay, maximize and amsgrad (amsgrad takes the CPU route).
  • The fused LSTM and GRU cells and their backward passes now run on the GPU (#243). They match the CPU, and LSTM host copies fall from 5.4 to 0.9 MiB per step.

Upgrade: curl -fsSL https://cudacompat.com/install.sh | sh, or brew upgrade cuda-legacy.

0.2.19

Choose a tag to compare

@zachshallbetter zachshallbetter released this 04 Nov 15:31

CNN training on Maxwell (sm_52) no longer goes through the CPU. ReLU(inplace=True) runs on the native kernel in place (PR 241), and mean over dimensions, which adaptive average pooling uses, runs natively (PR 242). The speed-sweep CNN now trains with no CPU fallbacks and no host copies. Its results match the CPU.

Upgrade: curl -fsSL https://cudacompat.com/install.sh | sh, or brew upgrade cuda-legacy.

0.2.18

Choose a tag to compare

@zachshallbetter zachshallbetter released this 04 Nov 14:22

torch.fft and torch.linalg now work on Maxwell (sm_52). The CUDA 13 cuFFT and cuSOLVER libraries have no sm_52 code, so these calls used to fail. They now fall back to the CPU and match it exactly: fft, rfft, ifft, inv, svdvals, det, slogdet and pinv (#234).

Upgrade: curl -fsSL https://cudacompat.com/install.sh | sh, or brew upgrade cuda-legacy.

0.2.17

Choose a tag to compare

@zachshallbetter zachshallbetter released this 04 Nov 13:59

Install or upgrade: curl -fsSL https://cudacompat.com/install.sh | sh.

  • Convolution on the GPU (#231): 2-D convolution and its backward (groups=1, float32) through GEMMs and strided copies. A CNN step goes from 194 to 126 ms at batch 64 on the reference host.
  • Installer: archive sha256 f254068bebf341b5d64ef204113163880e260adaf608d4d89467755935b598a1.

0.2.16

Choose a tag to compare

@zachshallbetter zachshallbetter released this 04 Nov 13:45

Install or upgrade: curl -fsSL https://cudacompat.com/install.sh | sh.

  • Batch norm on the GPU (#228): forward and backward, training and eval, through the native sum and elementwise kernels. A CNN step at 64x64 goes from 473 to 361 ms on the reference host.
  • ReLU backward on the GPU (#227).
  • Installer: archive sha256 70e0f9bbe3a2fbabf2809b58914b80af503aa3d177a72d6f7d9eaee3bda936c6.

0.2.15

Choose a tag to compare

@zachshallbetter zachshallbetter released this 04 Nov 13:17

Install or upgrade: curl -fsSL https://cudacompat.com/install.sh | sh.

  • Stopping a run (#217): Ctrl-C and Jupyter interrupts reach your program instead of killing it after 0.25 s. kill on cuda-legacy run (SIGTERM, SIGHUP) is passed on, so a training script can save its checkpoint. A signal death reports 128+N, as a shell does.
  • Installer: archive sha256 78ea4e023b40ad21a4e8dbc4612f9d7544e5e141d63cfc2832c0563aeed992c5.

0.2.14

Choose a tag to compare

@zachshallbetter zachshallbetter released this 04 Nov 13:02

Install or upgrade: curl -fsSL https://cudacompat.com/install.sh | sh.

  • No system CUDA needed (#204): without CUDA 12.4 headers, setup assembles them from NVIDIA's own wheels on PyPI (SHA-256 pinned, about 47 MB kept, removed by setup --remove).
  • cuda-legacy run -m MODULE, -c CODE and -i, like python (#214).
  • Installer: archive sha256 192b97c6b2b9be5e0faf2446c5b76007af5529321df6db35cfcc731e0d989a76.

0.2.13

Choose a tag to compare

@zachshallbetter zachshallbetter released this 04 Nov 12:20

Install or upgrade: curl -fsSL https://cudacompat.com/install.sh | sh.

  • No PyTorch yet? (#202): the installer offers to create ~/torch-cu130 with the official torch==2.14.0+cu130 wheel instead of stopping. A fresh account with only python3 reaches a GPU result.
  • foreach=False optimizers on the GPU (#208): single-tensor Adam and AdamW steps use the native kernels.
  • Ledger test (#209).
  • The user-space CUDA headers (#204) landed after this tag and ship in the next release.
  • Installer: archive sha256 e2a0c8306e66f50d4b16ce8e28431d7f36aa2de9f925217519d879bb31024c7d.