Skip to content

Releases

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 01 Oct 18:24

wgpu-nufft 0.3.2

A Julia package; see CHANGELOG.md.

Added:

  • WgpuNufft (julia/WgpuNufft): a Julia package over the C interface, with
    one-call transforms nufft1d1 to nufft3d3, which keep their plans, and a
    Plan with setpts! and execute for batches and any dimension, on Float64
    and Float32 arrays. Options (backend, precision, mode order, threads,
    upsampling) are keywords; library errors are thrown as WgpuNufftError.

Known limitations:

  • The MATLAB interface compiles and links but has not yet run in MATLAB.
  • On DX12 with FXC, Df64 plans take minutes to create; on Windows, prefer
    Vulkan for Df64 plans.
  • 7D and 8D plans are practical only on small grids at tolerances near
    1e-3.
  • Metal has not been tested.

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 01 Oct 18:21

wgpu-nufft 0.3.1

C, Fortran, and MATLAB interfaces, and a first transform of a session as
quick as in 0.2.0; see CHANGELOG.md.

Added:

  • wgpu-nufft-c (capi/): a C library declared by capi/include/wgpu_nufft.h.
    Plans of type 1, 2 and 3 in one to eight dimensions take host arrays, set
    their points once and run batches; one-call functions (wgpu_nufft1d1 to
    wgpu_nufft3d3) keep their plans for reuse. Double-precision arrays run in
    native f64 where the GPU supports it and in Df64 elsewhere, single-
    precision arrays in f32, and plans fall back to the CPU backend without a
    usable GPU.
  • A Fortran module (fortran/wgpu_nufft.f90) over the C library, tested
    with gfortran and Intel ifx.
  • A MATLAB interface (matlab/): one-call functions wgpunufft1d1 to
    wgpunufft3d3, the wgpunufft_plan class, and a MEX gateway for MATLAB
    R2018a or later, which build_wgpu_nufft compiles.

Fixed:

  • Type-1 plans compile their spreading shaders when an execution first
    needs them, for the bin geometry it uses. 0.3.0 compiled two variants at
    plan creation, which made the first transform of a session slower than in
    0.2.0.

Known limitations:

  • The MATLAB interface compiles and links but has not yet run in MATLAB.
  • On DX12 with FXC, Df64 plans take minutes to create; on Windows, prefer
    Vulkan for Df64 plans.
  • 7D and 8D plans are practical only on small grids at tolerances near
    1e-3.
  • Metal has not been tested.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 18:19

wgpu-nufft 0.3.0

GPU plans in up to eight dimensions, and one deterministic spreader for
every type-1 plan, faster in every rank and for sparse and clustered
points; see CHANGELOG.md.

Highlights:

  • Type 1, 2 and 3 GPU plans in six to eight dimensions, in all three
    precisions; the 4D and 5D paths are rewritten.
  • Every type-1 plan spreads through one rank-generic block spreader with
    bitwise-repeatable sums. It bins points by the first cell of their kernel
    support, chooses its bins per execution from the point density, and
    splits crowded blocks across many workgroups.
  • Large bins sort several times faster, and F64 kernel weights evaluate
    faster.
  • F64 and Df64 type-2 plans in one to three dimensions interpolate binned
    points.
  • F32 plans reject tolerances their rounding would miss
    (NufftError::F32ToleranceUnreachable).
  • A standalone browser build, wgpu_web.js, is attached to this release.

Fixed:

  • The rank-generic spreader compiles with FXC on DX12.

Known limitations:

  • On DX12 with FXC, Df64 plans take minutes to create, mostly in the Df64
    FFT shaders; on Windows, prefer Vulkan for Df64 plans.
  • 7D and 8D plans are practical only on small grids at tolerances near
    1e-3; see "Higher dimensions" in the README.
  • Metal has not been tested.