summaryrefslogtreecommitdiff
path: root/src/clpp11.hpp
diff options
context:
space:
mode:
authorGian-Carlo Pascutto <gcp@sjeng.org>2016-07-11 09:24:40 +0200
committerGian-Carlo Pascutto <gcp@sjeng.org>2016-07-13 15:59:02 +0200
commite0ba59c0ac964340b3706233862a2ca98e345823 (patch)
treec6b519418163df7642712b2b70afa1d63e65bc58 /src/clpp11.hpp
parentc87e877bf23d2fe38a7da2898e1734a3cdeaf48c (diff)
Make sure the passed types are large enough.
Make sure all out parameters that are passed to functions such as clGetDeviceInfo are large enough to contain the replies.
Diffstat (limited to 'src/clpp11.hpp')
-rw-r--r--src/clpp11.hpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/clpp11.hpp b/src/clpp11.hpp
index fcb71e38..9f924a4f 100644
--- a/src/clpp11.hpp
+++ b/src/clpp11.hpp
@@ -194,7 +194,7 @@ class Device {
}
size_t MaxWorkGroupSize() const { return GetInfo<size_t>(CL_DEVICE_MAX_WORK_GROUP_SIZE); }
size_t MaxWorkItemDimensions() const {
- return GetInfo(CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS);
+ return GetInfo<cl_uint>(CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS);
}
std::vector<size_t> MaxWorkItemSizes() const {
return GetInfoVector<size_t>(CL_DEVICE_MAX_WORK_ITEM_SIZES);
@@ -205,8 +205,8 @@ class Device {
std::string Capabilities() const { return GetInfoString(CL_DEVICE_EXTENSIONS); }
size_t CoreClock() const { return GetInfo(CL_DEVICE_MAX_CLOCK_FREQUENCY); }
size_t ComputeUnits() const { return GetInfo(CL_DEVICE_MAX_COMPUTE_UNITS); }
- size_t MemorySize() const { return GetInfo(CL_DEVICE_GLOBAL_MEM_SIZE); }
- size_t MaxAllocSize() const { return GetInfo(CL_DEVICE_MAX_MEM_ALLOC_SIZE); }
+ size_t MemorySize() const { return GetInfo<cl_ulong>(CL_DEVICE_GLOBAL_MEM_SIZE); }
+ size_t MaxAllocSize() const { return GetInfo<cl_ulong>(CL_DEVICE_MAX_MEM_ALLOC_SIZE); }
size_t MemoryClock() const { return 0; } // Not exposed in OpenCL
size_t MemoryBusWidth() const { return 0; } // Not exposed in OpenCL
@@ -250,7 +250,7 @@ class Device {
size_t GetInfo(const cl_device_info info) const {
auto bytes = size_t{0};
CheckError(clGetDeviceInfo(device_, info, 0, nullptr, &bytes));
- auto result = cl_uint(0);
+ auto result = cl_ulong(0);
CheckError(clGetDeviceInfo(device_, info, bytes, &result, nullptr));
return static_cast<size_t>(result);
}