Enabling "cl_khr_fp64" in order to visit OpenCL code with doubles


I’m working in a project about source-to-source code transformations and I’ve just programmed a tool using Clang libraries (it’s a program I’ve written in C++, it doesn’t use Clang command-line tools at all) that visits the code of some given “for” loops and apply some optimization transformations (now, only loop unrolling).

Till today I’ve been testing the tool with OpenCL kernels that operate with integers or floats, but now I’m trying to process a kernel that operates with doubles, and, unfortunately the tool crashed. First, I tried to dump the CompoundStmt that represents the body of a visited “for” loop, and I discovered that it’s empty when the visited code contains any reference to double variables. After this shocking problem, I replaced the “double” variables with “float” ones and all went smooth. Considering that workaround, I also tried to emit the LLVM representation of my OpenCL kernel with doubles, and clang gave me this error: “error: use of type ‘double’ requires cl_khr_fp64 extension to be enabled”.

So, is there any method or flag in the classes of the libraries in order to enable this extension?

Thanks so much in advance,


Sorry, I forgot to tell you the Clang and LLVM revisions I’m using:

Clang: r130668
LLVM: r130661

I’m using them because they were the latest ones when I started with my project in July 2011.

Thanks so much again!

Hi Jorge,

As it defined by the OpenCL spec, one should use:

#pragma OPENCL EXTENSION cl_khr_fp64 : enable

in order to enable this OpenCL extension. This pragma works fine in Clang.



It works perfectly!

I’m a bit newbie in OpenCL and I didn’t know that it was possible to enable this extension directly in the source code, it’s really very simple, :wink:

Thank you so much!

2012/3/13 Benyei, Guy <guy.benyei@intel.com>