Skip to content

Conversation

@ChrisRackauckas-Claude
Copy link

Summary

This PR fixes the ArrayInterfaceCUDSSExt to properly support CUDSS v0.5 and v0.6 by updating the extension code to use the modern CUDSS API.

Problem

PR #469 bumped the CUDSS compatibility to include v0.5 and v0.6, but the extension code itself was not updated to match the breaking API changes introduced in these versions. The extension was using CudssMatrix, which was removed in favor of standard CUDA.jl types (CuVector) in CUDSS v0.5+.

Breaking Changes in CUDSS v0.5/v0.6

According to the CUDSS v0.6.0 release notes:

  • Upgrade of CUDSS_jll from v0.6.0 to v0.7.0
  • API now uses standard CUDA.jl types instead of wrapper types
  • The CudssMatrix type is no longer available

The current CUDSS examples show the modern API pattern:

x_gpu = CuVector(x_cpu)  # Uses CuVector, not CudssMatrix
b_gpu = CuVector(b_cpu)  # Uses CuVector, not CudssMatrix

solver = CudssSolver(A_gpu, "G", 'F')
cudss("analysis", solver, x_gpu, b_gpu)

Changes

  1. Updated extension code (ext/ArrayInterfaceCUDSSExt.jl):

    • Replaced CudssMatrix(T, n) with CUDA.CuVector{T}(undef, n)
    • Added using CUDA to access the CuVector type
    • Improved code formatting
  2. Updated extension dependencies (Project.toml):

    • Changed ArrayInterfaceCUDSSExt = "CUDSS" to ArrayInterfaceCUDSSExt = ["CUDSS", "CUDA"]
    • This ensures the extension has access to both CUDSS and CUDA packages
  3. Updated compatibility bounds (Project.toml):

    • Added CUDSS v0.5 and v0.6 to the compatibility list
    • Bumped package version from 7.20.0 to 7.20.1

Testing

The changes follow the exact pattern used in the official CUDSS examples. The extension now uses the same API as CUDSS itself.

Related

  • Supersedes bump CUDSS compat #469 (which only bumped version numbers without fixing the code)
  • Related to CUDSS breaking changes in v0.5 and v0.6

🤖 Generated with Claude Code

Updates the ArrayInterfaceCUDSSExt to use the modern CUDSS API.
The deprecated CudssMatrix type has been replaced with standard
CUDA.CuVector types, which is the current API pattern in CUDSS v0.5+.

Changes:
- Replace CudssMatrix with CUDA.CuVector in lu_instance
- Add CUDA as explicit extension dependency
- Add CUDSS v0.5 and v0.6 to compatibility bounds
- Bump version to 7.20.1

Fixes the runtime incompatibility introduced by the breaking changes
in CUDSS v0.5 and v0.6 where CudssMatrix was removed in favor of
standard CUDA.jl types (CuVector).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas merged commit 2aa0fc0 into JuliaArrays:master Oct 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants