From 3bb92747ba56cf1ab282a8317eaef066e780e807 Mon Sep 17 00:00:00 2001 From: Tom Deakin Date: Fri, 31 Jul 2015 16:54:11 +0100 Subject: [PATCH] Check for double support in OpenCL --- common.h | 8 ++++++++ ocl-stream.cpp | 3 +++ 2 files changed, 11 insertions(+) diff --git a/common.h b/common.h index 6b881a5..4e15ed6 100644 --- a/common.h +++ b/common.h @@ -93,6 +93,14 @@ struct badmemsize : public std::exception } }; +struct nodouble : public std::exception +{ + virtual const char * what () const throw () + { + return "Device does not support double precision, please use --float"; + } +}; + template < typename T > void check_solution(void* a_in, void* b_in, void* c_in) { diff --git a/ocl-stream.cpp b/ocl-stream.cpp index 822db7b..7ebe3be 100644 --- a/ocl-stream.cpp +++ b/ocl-stream.cpp @@ -165,6 +165,9 @@ int main(int argc, char *argv[]) std::string name = getDeviceName(device); std::cout << "Using OpenCL device " << name << std::endl; + // Check device can do double precision if requested + if (!useFloat && !device.getInfo()) throw nodouble(); + // Check buffers fit on the device status = "Getting device memory sizes"; cl_ulong totalmem = device.getInfo();