Skip to content

Commit e61e088

Browse files
authored
[ROCSOLVER] Interface gesvd and gebrd (#699)
1 parent f7483ac commit e61e088

File tree

4 files changed

+260
-148
lines changed

4 files changed

+260
-148
lines changed

src/solver/base.jl

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
function version()
2+
len_ref = Ref{Csize_t}()
3+
rocsolver_get_version_string_size(len_ref)
4+
len = len_ref[]
5+
6+
buf = Vector{Cchar}(undef, len)
7+
rocsolver_get_version_string(buf, len)
8+
str = unsafe_string(reinterpret(Cstring, pointer(buf)))
9+
10+
VersionNumber(join(split(str, '.')[1:3], '.'))
11+
end
12+
13+
function Base.convert(::Type{rocblas_svect}, job::Char)
14+
if job == 'N'
15+
return rocblas_svect_none
16+
elseif job == 'A'
17+
return rocblas_svect_all
18+
elseif job == 'O'
19+
return rocblas_svect_overwrite
20+
elseif job == 'S'
21+
return rocblas_svect_singular
22+
else
23+
throw(ArgumentError("Unknown job $job."))
24+
end
25+
end
26+
27+
function Base.convert(::Type{rocblas_workmode}, mode::Char)
28+
if mode == 'O'
29+
return rocblas_outofplace
30+
elseif mode == 'I'
31+
return rocblas_inplace
32+
else
33+
throw(ArgumentError("Unknown workmode $mode."))
34+
end
35+
end
36+
37+
function Base.convert(::Type{rocblas_storev}, storev::Char)
38+
if storev == 'C'
39+
rocblas_column_wise
40+
elseif storev == 'R'
41+
rocblas_row_wise
42+
else
43+
throw(ArgumentError("Unknown storage mode $storev."))
44+
end
45+
end
46+
47+
function Base.convert(::Type{rocblas_direct}, direct::Char)
48+
if direct == 'F'
49+
rocblas_forward_direction
50+
elseif direct == 'B'
51+
rocblas_backward_direction
52+
else
53+
throw(ArgumentError("Unknown direction mode $direct."))
54+
end
55+
end

0 commit comments

Comments
 (0)