Skip to content

Commit d325a8c

Browse files
committed
tests pass
1 parent 8880ad4 commit d325a8c

File tree

4 files changed

+18
-32
lines changed

4 files changed

+18
-32
lines changed

src/host/random.jl

+2-4
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,12 @@ function next_rand(state::NTuple{4, T}) where {T <: Unsigned}
3131
end
3232

3333
function gpu_rand(::Type{T}, threadid, randstate::AbstractVector{NTuple{4, UInt32}}) where T
34-
threadid = GPUArrays.threadidx(ctx)
3534
stateful_rand = next_rand(randstate[threadid])
3635
randstate[threadid] = stateful_rand[1]
3736
return make_rand_num(T, stateful_rand[2])
3837
end
3938

4039
function gpu_rand(::Type{T}, threadid, randstate::AbstractVector{NTuple{4, UInt32}}) where T <: Integer
41-
threadid = GPUArrays.threadidx(ctx)
4240
result = zero(T)
4341
if sizeof(T) >= 4
4442
for _ in 1:sizeof(T) >> 2
@@ -86,7 +84,7 @@ end
8684
function Random.rand!(rng::RNG, A::AnyGPUArray{T}) where T <: Number
8785
@kernel function rand!(a, randstate)
8886
idx = @index(Global, Linear)
89-
@inbounds a[idx] = gpu_rand(T, idx, randstate)
87+
@inbounds a[idx] = gpu_rand(T, ((idx-1)%length(randstate)+1), randstate)
9088
end
9189
rand!(get_backend(A))(A, rng.state, ndrange = size(A))
9290
A
@@ -108,7 +106,7 @@ function Random.randn!(rng::RNG, A::AnyGPUArray{T}) where T <: Number
108106
end
109107
end
110108
kernel = randn!(get_backend(A))
111-
kernel(A, rng.states; ndrange=threads)
109+
kernel(A, rng.state; ndrange=threads)
112110
A
113111
end
114112

src/host/uniformscaling.jl

+14-26
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,16 @@ const unittriangularwrappers = (
1212
(:UnitLowerTriangular, :LowerTriangular)
1313
)
1414

15-
@kernel function kernel_generic(ctx, B, J, min_size)
15+
@kernel function kernel_generic(B, J)
1616
lin_idx = @index(Global, Linear)
17-
if lin_idx <= min_size
18-
@inbounds diag_idx = diagind(B)[lin_idx]
19-
@inbounds B[diag_idx] += J
20-
end
17+
@inbounds diag_idx = diagind(B)[lin_idx]
18+
@inbounds B[diag_idx] += J
2119
end
2220

23-
@kernel function kernel_unittriangular(ctx, B, J, diagonal_val, min_size)
21+
@kernel function kernel_unittriangular(B, J, diagonal_val)
2422
lin_idx = @index(Global, Linear)
25-
if lin_idx <= min_size
26-
@inbounds diag_idx = diagind(B)[lin_idx]
27-
@inbounds B[diag_idx] = diagonal_val + J
28-
end
23+
@inbounds diag_idx = diagind(B)[lin_idx]
24+
@inbounds B[diag_idx] = diagonal_val + J
2925
end
3026

3127
for (t1, t2) in unittriangularwrappers
@@ -34,17 +30,15 @@ for (t1, t2) in unittriangularwrappers
3430
B = similar(parent(A), typeof(oneunit(T) + J))
3531
copyto!(B, parent(A))
3632
min_size = minimum(size(B))
37-
kernel = kernel_unittriangular(get_backend(B))
38-
kernel(B, J, one(eltype(B)), min_size; ndrange=min_size)
33+
kernel_unittriangular(get_backend(B))(B, J, one(eltype(B)); ndrange=min_size)
3934
return $t2(B)
4035
end
4136

4237
function (-)(J::UniformScaling, A::$t1{T, <:AbstractGPUMatrix}) where T
4338
B = similar(parent(A), typeof(J - oneunit(T)))
4439
B .= .- parent(A)
4540
min_size = minimum(size(B))
46-
kernel = kernel_unittriangular(get_backend(B))
47-
kernel(B, J, -one(eltype(B)), min_size; ndrange=min_size)
41+
kernel_unittriangular(get_backend(B))(B, J, -one(eltype(B)); ndrange=min_size)
4842
return $t2(B)
4943
end
5044
end
@@ -56,17 +50,15 @@ for t in genericwrappers
5650
B = similar(parent(A), typeof(oneunit(T) + J))
5751
copyto!(B, parent(A))
5852
min_size = minimum(size(B))
59-
kernel = kernel_generic(get_backend(B))
60-
kernel(B, J, min_size; ndrange=min_size)
53+
kernel_generic(get_backend(B))(B, J; ndrange=min_size)
6154
return $t(B)
6255
end
6356

6457
function (-)(J::UniformScaling, A::$t{T, <:AbstractGPUMatrix}) where T
6558
B = similar(parent(A), typeof(J - oneunit(T)))
6659
B .= .- parent(A)
6760
min_size = minimum(size(B))
68-
kernel = kernel_generic(get_backend(B))
69-
kernel(B, J, min_size; ndrange=min_size)
61+
kernel_generic(get_backend(B))(B, J; ndrange=min_size)
7062
return $t(B)
7163
end
7264
end
@@ -77,17 +69,15 @@ function (+)(A::Hermitian{T,<:AbstractGPUMatrix}, J::UniformScaling{<:Complex})
7769
B = similar(parent(A), typeof(oneunit(T) + J))
7870
copyto!(B, parent(A))
7971
min_size = minimum(size(B))
80-
kernel = kernel_generic(get_backend(B))
81-
kernel(B, J, min_size; ndrange=min_size)
72+
kernel_generic(get_backend(B))(B, J; ndrange=min_size)
8273
return B
8374
end
8475

8576
function (-)(J::UniformScaling{<:Complex}, A::Hermitian{T,<:AbstractGPUMatrix}) where T
8677
B = similar(parent(A), typeof(J - oneunit(T)))
8778
B .= .-parent(A)
8879
min_size = minimum(size(B))
89-
kernel = kernel_generic(get_backend(B))
90-
kernel(B, J, min_size; ndrange=min_size)
80+
kernel_generic(get_backend(B))(B, J; ndrange=min_size)
9181
return B
9282
end
9383

@@ -96,16 +86,14 @@ function (+)(A::AbstractGPUMatrix{T}, J::UniformScaling) where T
9686
B = similar(A, typeof(oneunit(T) + J))
9787
copyto!(B, A)
9888
min_size = minimum(size(B))
99-
kernel = kernel_generic(get_backend(B))
100-
kernel(B, J, min_size; ndrange=min_size)
89+
kernel_generic(get_backend(B))(B, J; ndrange=min_size)
10190
return B
10291
end
10392

10493
function (-)(J::UniformScaling, A::AbstractGPUMatrix{T}) where T
10594
B = similar(A, typeof(J - oneunit(T)))
10695
B .= .-A
10796
min_size = minimum(size(B))
108-
kernel = kernel_generic(get_backend(B))
109-
kernel(B, J, min_size; ndrange=min_size)
97+
kernel_generic(get_backend(B))(B, J; ndrange=min_size)
11098
return B
11199
end

test/testsuite.jl

-2
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ macro testsuite(name, ex)
8686
end
8787

8888
include("testsuite/construction.jl")
89-
#=
9089
include("testsuite/indexing.jl")
9190
include("testsuite/base.jl")
9291
#include("testsuite/vector.jl")
@@ -98,7 +97,6 @@ include("testsuite/random.jl")
9897
include("testsuite/uniformscaling.jl")
9998
include("testsuite/statistics.jl")
10099

101-
=#
102100
"""
103101
Runs the entire GPUArrays test suite on array type `AT`
104102
"""

test/testsuite/broadcasting.jl

+2
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,8 @@ Base.size(A::WrapArray) = size(A.data)
201201
Adapt.adapt_structure(to, s::WrapArray) = WrapArray(Adapt.adapt(to, s.data))
202202
# For broadcast support
203203
Broadcast.BroadcastStyle(::Type{WrapArray{T,N,P}}) where {T,N,P} = Broadcast.BroadcastStyle(P)
204+
KernelAbstractions.get_backend(a::WA) where WA <: WrapArray = get_backend(a.data)
205+
204206

205207
function unknown_wrapper(AT, eltypes)
206208
for ET in eltypes

0 commit comments

Comments
 (0)