Skip to content

CPU Benchmarks

Performance benchmarks on CPU.

Metadata

  • Date: 2026-07-07T15:40:00.292841
  • Commit: 671c312
  • Working tree: clean
  • PyTorch: 2.10.0+cu128
  • CUDA: 12.8
  • GPU: NVIDIA GeForce RTX 3090
  • Python: 3.10.16
  • OS: Linux
  • Threads: 12

ArrayToBlocks 3D

Operation Size Library Mean Median IQR Peak Memory
ArrayToBlocks forward 32x32x32 torchlinops 4.09 ms 4.10 ms 23.81 us —
ArrayToBlocks forward 32x32x32 torchlinops (linop) 4.08 ms 4.08 ms 46.88 us —
ArrayToBlocks forward 32x32x32 sigpy 174.82 us 172.87 us 2.37 us —
ArrayToBlocks forward 64x64x64 torchlinops 36.82 ms 36.83 ms 145.81 us —
ArrayToBlocks forward 64x64x64 torchlinops (linop) 37.29 ms 37.12 ms 387.94 us —
ArrayToBlocks forward 64x64x64 sigpy 2.54 ms 2.54 ms 29.63 us —
ArrayToBlocks forward 128x128x128 torchlinops 328.16 ms 328.42 ms 1.37 ms —
ArrayToBlocks forward 128x128x128 torchlinops (linop) 328.95 ms 328.87 ms 1.33 ms —
ArrayToBlocks forward 128x128x128 sigpy 35.01 ms 34.90 ms 181.22 us —
BlocksToArray forward 32x32x32 torchlinops 5.33 ms 5.32 ms 43.42 us —
BlocksToArray forward 32x32x32 torchlinops (linop) 5.36 ms 5.36 ms 33.58 us —
BlocksToArray forward 32x32x32 sigpy 1.38 ms 1.37 ms 22.87 us —
BlocksToArray forward 64x64x64 torchlinops 49.62 ms 49.52 ms 255.76 us —
BlocksToArray forward 64x64x64 torchlinops (linop) 49.73 ms 49.75 ms 92.88 us —
BlocksToArray forward 64x64x64 sigpy 12.25 ms 12.24 ms 34.66 us —
BlocksToArray forward 128x128x128 torchlinops 429.15 ms 428.59 ms 1.54 ms —
BlocksToArray forward 128x128x128 torchlinops (linop) 428.77 ms 427.73 ms 4.12 ms —
BlocksToArray forward 128x128x128 sigpy 125.04 ms 125.13 ms 3.25 ms —

Interpolate 2D

Operation Size Library Mean Median IQR Peak Memory
Interpolate forward 2D 64x64 torchlinops 1.70 ms 1.70 ms 11.45 us —
Interpolate forward 2D 64x64 torchlinops (linop) 1.72 ms 1.71 ms 10.60 us —
Interpolate forward 2D 64x64 sigpy 728.06 us 723.51 us 4.80 us —
Interpolate forward 2D 128x128 torchlinops 4.19 ms 4.18 ms 32.47 us —
Interpolate forward 2D 128x128 torchlinops (linop) 4.31 ms 4.31 ms 19.26 us —
Interpolate forward 2D 128x128 sigpy 2.94 ms 2.93 ms 56.89 us —
Interpolate forward 2D 256x256 torchlinops 20.70 ms 20.71 ms 49.39 us —
Interpolate forward 2D 256x256 torchlinops (linop) 20.91 ms 20.93 ms 156.30 us —
Interpolate forward 2D 256x256 sigpy 11.51 ms 11.48 ms 44.52 us —
Interpolate adjoint 2D 64x64 torchlinops 1.92 ms 1.91 ms 10.42 us —
Interpolate adjoint 2D 64x64 torchlinops (linop) 1.95 ms 1.95 ms 26.58 us —
Interpolate adjoint 2D 64x64 sigpy 736.88 us 731.33 us 14.93 us —
Interpolate adjoint 2D 128x128 torchlinops 5.17 ms 5.16 ms 54.45 us —
Interpolate adjoint 2D 128x128 torchlinops (linop) 5.26 ms 5.27 ms 37.38 us —
Interpolate adjoint 2D 128x128 sigpy 2.93 ms 2.93 ms 22.43 us —
Interpolate adjoint 2D 256x256 torchlinops 23.35 ms 23.35 ms 64.35 us —
Interpolate adjoint 2D 256x256 torchlinops (linop) 23.37 ms 23.37 ms 75.39 us —
Interpolate adjoint 2D 256x256 sigpy 11.55 ms 11.55 ms 25.84 us —

Interpolate 3D

Operation Size Library Mean Median IQR Peak Memory
Interpolate forward 3D 32x32x32 torchlinops 7.54 ms 7.54 ms 45.70 us —
Interpolate forward 3D 32x32x32 torchlinops (linop) 7.61 ms 7.60 ms 48.88 us —
Interpolate forward 3D 32x32x32 sigpy 3.33 ms 3.32 ms 10.10 us —
Interpolate forward 3D 64x64x64 torchlinops 88.35 ms 88.43 ms 3.65 ms —
Interpolate forward 3D 64x64x64 torchlinops (linop) 95.45 ms 95.86 ms 755.61 us —
Interpolate forward 3D 64x64x64 sigpy 26.56 ms 26.50 ms 187.97 us —
Interpolate forward 3D 128x128x128 torchlinops 645.15 ms 644.93 ms 17.68 ms —
Interpolate forward 3D 128x128x128 torchlinops (linop) 654.87 ms 654.16 ms 8.83 ms —
Interpolate forward 3D 128x128x128 sigpy 269.09 ms 269.45 ms 13.09 ms —
Interpolate adjoint 3D 32x32x32 torchlinops 9.01 ms 9.01 ms 31.10 us —
Interpolate adjoint 3D 32x32x32 torchlinops (linop) 9.03 ms 9.04 ms 39.59 us —
Interpolate adjoint 3D 32x32x32 sigpy 3.32 ms 3.32 ms 13.89 us —
Interpolate adjoint 3D 64x64x64 torchlinops 101.29 ms 101.88 ms 4.62 ms —
Interpolate adjoint 3D 64x64x64 torchlinops (linop) 102.08 ms 100.76 ms 4.40 ms —
Interpolate adjoint 3D 64x64x64 sigpy 26.21 ms 26.12 ms 178.03 us —
Interpolate adjoint 3D 128x128x128 torchlinops 738.49 ms 742.32 ms 15.24 ms —
Interpolate adjoint 3D 128x128x128 torchlinops (linop) 722.81 ms 720.72 ms 20.69 ms —
Interpolate adjoint 3D 128x128x128 sigpy 258.42 ms 258.22 ms 1.71 ms —

NUFFT 2D

Operation Size Library Mean Median IQR Peak Memory
NUFFT forward 2D 64x64 torchlinops 2.52 ms 2.52 ms 29.98 us —
NUFFT forward 2D 64x64 torchlinops (linop) 2.41 ms 2.41 ms 27.14 us —
NUFFT forward 2D 64x64 sigpy 2.30 ms 2.30 ms 14.52 us —
NUFFT forward 2D 128x128 torchlinops 6.49 ms 6.50 ms 70.74 us —
NUFFT forward 2D 128x128 torchlinops (linop) 6.05 ms 6.04 ms 56.90 us —
NUFFT forward 2D 128x128 sigpy 8.89 ms 8.88 ms 88.27 us —
NUFFT forward 2D 256x256 torchlinops 26.65 ms 26.61 ms 340.37 us —
NUFFT forward 2D 256x256 torchlinops (linop) 24.75 ms 24.63 ms 405.54 us —
NUFFT forward 2D 256x256 sigpy 34.92 ms 34.85 ms 174.68 us —
NUFFT adjoint 2D 64x64 torchlinops 2.32 ms 2.24 ms 112.41 us —
NUFFT adjoint 2D 64x64 torchlinops (linop) 2.08 ms 2.07 ms 15.21 us —
NUFFT adjoint 2D 64x64 sigpy 2.36 ms 2.36 ms 6.46 us —
NUFFT adjoint 2D 128x128 torchlinops 5.85 ms 5.83 ms 49.16 us —
NUFFT adjoint 2D 128x128 torchlinops (linop) 5.46 ms 5.42 ms 56.81 us —
NUFFT adjoint 2D 128x128 sigpy 9.12 ms 9.07 ms 122.15 us —
NUFFT adjoint 2D 256x256 torchlinops 30.05 ms 30.03 ms 117.36 us —
NUFFT adjoint 2D 256x256 torchlinops (linop) 28.42 ms 28.42 ms 416.30 us —
NUFFT adjoint 2D 256x256 sigpy 36.14 ms 36.10 ms 457.85 us —

NUFFT 3D

Operation Size Library Mean Median IQR Peak Memory
NUFFT forward 3D 32x32x32 torchlinops 8.72 ms 8.72 ms 12.74 us —
NUFFT forward 3D 32x32x32 torchlinops (linop) 8.21 ms 8.20 ms 62.20 us —
NUFFT forward 3D 32x32x32 sigpy 9.94 ms 9.91 ms 42.77 us —
NUFFT forward 3D 64x64x64 torchlinops 95.13 ms 94.52 ms 4.14 ms —
NUFFT forward 3D 64x64x64 torchlinops (linop) 92.91 ms 92.98 ms 2.26 ms —
NUFFT forward 3D 64x64x64 sigpy 79.94 ms 79.99 ms 296.03 us —
NUFFT forward 3D 128x128x128 torchlinops 720.71 ms 719.49 ms 8.74 ms —
NUFFT forward 3D 128x128x128 torchlinops (linop) 685.79 ms 688.60 ms 13.39 ms —
NUFFT forward 3D 128x128x128 sigpy 769.09 ms 769.55 ms 2.07 ms —
NUFFT adjoint 3D 32x32x32 torchlinops 10.06 ms 10.06 ms 55.60 us —
NUFFT adjoint 3D 32x32x32 torchlinops (linop) 9.57 ms 9.51 ms 27.02 us —
NUFFT adjoint 3D 32x32x32 sigpy 10.20 ms 10.20 ms 18.03 us —
NUFFT adjoint 3D 64x64x64 torchlinops 104.69 ms 104.32 ms 1.99 ms —
NUFFT adjoint 3D 64x64x64 torchlinops (linop) 100.67 ms 99.74 ms 5.61 ms —
NUFFT adjoint 3D 64x64x64 sigpy 82.57 ms 82.18 ms 705.11 us —
NUFFT adjoint 3D 128x128x128 torchlinops 895.67 ms 896.05 ms 6.28 ms —
NUFFT adjoint 3D 128x128x128 torchlinops (linop) 865.36 ms 865.02 ms 8.78 ms —
NUFFT adjoint 3D 128x128x128 sigpy 836.79 ms 837.94 ms 6.62 ms —

Bar Charts

Small

Timing bar chart (small)

Medium

Timing bar chart (medium)

Large

Timing bar chart (large)

Scaling Curves

Timing scaling