-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathmodels.jl
More file actions
43 lines (38 loc) · 1.6 KB
/
models.jl
File metadata and controls
43 lines (38 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
for (elty, ext) in ((:Float32, :s),
(:Float64, :d))
for (matA, matb, sym) in ((:Matrix, :Matrix, "_"),
(:DistMatrix, :DistMatrix, "Dist_"),
(:SparseMatrix, :Matrix, "Sparse_"),
(:DistSparseMatrix, :DistMultiVec, "DistSparse_"))
@eval begin
function lav!(A::$matA{$elty}, b::$matb{$elty}, x::$matb{$elty})
ElError(ccall(($(string("ElLAV", sym, ext)), libEl), Cuint,
(Ptr{Cvoid}, Ptr{Cvoid}, Ptr{Cvoid}),
A.obj, b.obj, x.obj))
return x
end
function lav!(A::$matA{$elty}, b::$matb{$elty}, x::$matb{$elty}, ctrl::LPAffineCtrl{$elty})
ElError(ccall(($(string("ElLAVX", sym, ext)), libEl), Cuint,
(Ptr{Cvoid}, Ptr{Cvoid}, Ptr{Cvoid}, LPAffineCtrl{$elty}),
A.obj, b.obj, x.obj, ctrl))
return x
end
end
end
end
function lav(A::Matrix{T}, b::Matrix{T}) where {T<:Union{Float32,Float64}}
x = Matrix(T)
return lav!(A, b, x)
end
function lav(A::DistMatrix{T}, b::DistMatrix{T}) where {T<:Union{Float32,Float64}}
x = DistMatrix(T, MC, MR, A.g)
return lav!(A, b, x)
end
function lav(A::DistSparseMatrix{T}, b::DistMultiVec{T}) where {T<:Union{Float32,Float64}}
x = DistMultiVec(T, A.grid)
return lav!(A, b, x)
end
function lav(A::DistSparseMatrix{T}, b::DistMultiVec{T}, ctrl::LPAffineCtrl{T}) where {T<:Union{Float32,Float64}}
x = DistMultiVec(T, A.grid)
return lav!(A, b, x, ctrl)
end