Skip to content

Commit 4be457c

Browse files
committed
Show memory back-end in versioninfo.
1 parent 1c7c11e commit 4be457c

File tree

2 files changed

+35
-24
lines changed

2 files changed

+35
-24
lines changed

lib/cl/state.jl

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -162,27 +162,29 @@ abstract type AbstractMemoryBackend end
162162
struct SVMBackend <: AbstractMemoryBackend end
163163
struct USMBackend <: AbstractMemoryBackend end
164164

165-
function memory_backend()
166-
return get!(task_local_storage(), :CLMemoryBackend) do
167-
dev = device()
165+
function default_memory_backend(dev::Device)
166+
# determine if USM is supported
167+
usm = if usm_supported(dev)
168+
caps = usm_capabilities(dev)
169+
caps.host.access && caps.device.access
170+
else
171+
false
172+
end
168173

169-
# determine if USM is supported
170-
usm = if usm_supported(dev)
171-
caps = usm_capabilities(dev)
172-
caps.host.access && caps.device.access
173-
else
174-
false
174+
# determine if SVM is available (if needed)
175+
if !usm
176+
caps = svm_capabilities(dev)
177+
if !caps.coarse_grain_buffer
178+
error("Device $dev does not support USM or coarse-grained SVM, either of which is required by OpenCL.jl")
175179
end
180+
end
176181

177-
# determine if SVM is available (if needed)
178-
if !usm
179-
caps = svm_capabilities(dev)
180-
if !caps.coarse_grain_buffer
181-
error("Device $dev does not support USM or coarse-grained SVM, either of which is required by OpenCL.jl")
182-
end
183-
end
182+
usm ? USMBackend() : SVMBackend()
183+
end
184184

185-
usm ? USMBackend() : SVMBackend()
185+
function memory_backend()
186+
return get!(task_local_storage(), :CLMemoryBackend) do
187+
default_memory_backend(device())
186188
end
187189
end
188190

src/util.jl

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,28 @@ function versioninfo(io::IO=stdout)
6464
for device in cl.devices(platform)
6565
print(io, " · $(device.name)")
6666

67-
## list some relevant extensions
68-
extensions = []
67+
# show a list of tags
68+
tags = []
69+
## memory back-end
70+
backend = cl.default_memory_backend(device)
71+
if backend == cl.SVMBackend()
72+
push!(tags, "svm")
73+
elseif backend == cl.USMBackend()
74+
push!(tags, "usm")
75+
end
76+
## relevant extensions
6977
if in("cl_khr_fp16", device.extensions)
70-
push!(extensions, "fp16")
78+
push!(tags, "fp16")
7179
end
7280
if in("cl_khr_fp64", device.extensions)
73-
push!(extensions, "fp64")
81+
push!(tags, "fp64")
7482
end
7583
if in("cl_khr_il_program", device.extensions)
76-
push!(extensions, "il")
84+
push!(tags, "il")
7785
end
78-
if !isempty(extensions)
79-
print(io, " (", join(extensions, ", "), ")")
86+
## render
87+
if !isempty(tags)
88+
print(io, " (", join(tags, ", "), ")")
8089
end
8190
println(io)
8291
end

0 commit comments

Comments
 (0)