I am trying to figure out how to call rocsolver_ssyevd to compute the eigenvalues of a symmetric matrix. If I run the code
using AMDGPU
import AMDGPU.rocBLAS: rocblas_int, handle
import AMDGPU.rocSOLVER: rocsolver_ssyevd, rocblas_evect_original
n = rocblas_int(5)
A = randn(Float32, n, n)
rA = ROCArray(copy(A))
evect = rocblas_evect_original
uplo = 'U'
lda = n
D = ROCVector{Float32}(undef, n)
E = ROCArray{Float32}(undef, n, n)
info = Ptr{rocblas_int}(0)
status = rocsolver_ssyevd(handle(), evect, uplo, n, rA, lda, D, E, info)
then I get an error from the final line:
ROCBLASError(code rocblas_status_invalid_pointer, invalid pointer parameter)
Looking at the source in src/solver/librocsolver.jl:8250 I see
function rocsolver_ssyevd(handle, evect, uplo, n, A, lda, D, E, info)
AMDGPU.prepare_state()
@check @ccall librocsolver.rocsolver_ssyevd(handle::rocblas_handle,
evect::rocblas_evect,
uplo::rocblas_fill, n::rocblas_int,
A::Ptr{Cfloat},
lda::rocblas_int, D::Ptr{Cfloat},
E::Ptr{Cfloat},
info::Ptr{rocblas_int})::rocblas_status
end
What am I doing wrong here?