24
24
KA. allocate (:: POCLBackend , :: Type{T} , dims:: Tuple ) where {T} = Array {T} (undef, dims)
25
25
26
26
function KA. zeros (backend:: POCLBackend , :: Type{T} , dims:: Tuple ) where {T}
27
- arr = allocate (backend, T, dims)
27
+ arr = KA . allocate (backend, T, dims)
28
28
kernel = init_kernel (backend)
29
29
kernel (arr, zero, T, ndrange = length (arr))
30
30
return arr
31
31
end
32
32
function KA. ones (backend:: POCLBackend , :: Type{T} , dims:: Tuple ) where {T}
33
- arr = allocate (backend, T, dims)
33
+ arr = KA . allocate (backend, T, dims)
34
34
kernel = init_kernel (backend)
35
35
kernel (arr, one, T; ndrange = length (arr))
36
36
return arr
@@ -56,26 +56,28 @@ KA.functional(::POCLBackend) = true
56
56
KA. pagelock! (:: POCLBackend , x) = nothing
57
57
58
58
KA. get_backend (:: Array ) = POCLBackend ()
59
- KA. synchronize (:: POCLBackend ) = nothing
59
+ KA. synchronize (:: POCLBackend ) = nothing
60
60
KA. supports_float64 (:: POCLBackend ) = true
61
61
62
62
63
63
# # Kernel Launch
64
64
65
65
function KA. mkcontext (kernel:: KA.Kernel{POCLBackend} , _ndrange, iterspace)
66
- KA. CompilerMetadata {KA.ndrange(kernel), KA.DynamicCheck} (_ndrange, iterspace)
66
+ return KA. CompilerMetadata {KA.ndrange(kernel), KA.DynamicCheck} (_ndrange, iterspace)
67
67
end
68
- function KA. mkcontext (kernel:: KA.Kernel{POCLBackend} , I, _ndrange, iterspace,
69
- :: Dynamic ) where Dynamic
70
- KA. CompilerMetadata {KA.ndrange(kernel), Dynamic} (I, _ndrange, iterspace)
68
+ function KA. mkcontext (
69
+ kernel:: KA.Kernel{POCLBackend} , I, _ndrange, iterspace,
70
+ :: Dynamic
71
+ ) where {Dynamic}
72
+ return KA. CompilerMetadata {KA.ndrange(kernel), Dynamic} (I, _ndrange, iterspace)
71
73
end
72
74
73
75
function KA. launch_config (kernel:: KA.Kernel{POCLBackend} , ndrange, workgroupsize)
74
76
if ndrange isa Integer
75
77
ndrange = (ndrange,)
76
78
end
77
79
if workgroupsize isa Integer
78
- workgroupsize = (workgroupsize, )
80
+ workgroupsize = (workgroupsize,)
79
81
end
80
82
81
83
# partition checked that the ndrange's agreed
@@ -84,7 +86,7 @@ function KA.launch_config(kernel::KA.Kernel{POCLBackend}, ndrange, workgroupsize
84
86
end
85
87
86
88
iterspace, dynamic = if KA. workgroupsize (kernel) <: KA.DynamicSize &&
87
- workgroupsize === nothing
89
+ workgroupsize === nothing
88
90
# use ndrange as preliminary workgroupsize for autotuning
89
91
KA. partition (kernel, ndrange, ndrange)
90
92
else
@@ -103,13 +105,13 @@ function threads_to_workgroupsize(threads, ndrange)
103
105
end
104
106
end
105
107
106
- function (obj:: KA.Kernel{POCLBackend} )(args... ; ndrange= nothing , workgroupsize= nothing )
108
+ function (obj:: KA.Kernel{POCLBackend} )(args... ; ndrange = nothing , workgroupsize = nothing )
107
109
ndrange, workgroupsize, iterspace, dynamic =
108
110
KA. launch_config (obj, ndrange, workgroupsize)
109
111
110
112
# this might not be the final context, since we may tune the workgroupsize
111
113
ctx = KA. mkcontext (obj, ndrange, iterspace)
112
- kernel = @opencl launch= false obj. f (ctx, args... )
114
+ kernel = @opencl launch = false obj. f (ctx, args... )
113
115
114
116
# figure out the optimal workgroupsize automatically
115
117
if KA. workgroupsize (obj) <: KA.DynamicSize && workgroupsize === nothing
0 commit comments