Forum Discussion

okramer's avatar
okramer
Icon for Occasional Contributor rankOccasional Contributor
6 years ago
Solved

OpenCL host code getting compile error: ‘clCreatePipe’ was not declared in this scope

I'm including CL/cl.hpp. However, I see that 'clCreatePipe' is defined in CL/cl.h. In the comments section of cl.hpp, it explicitely says,

* The interface is contained with a single C++ header file \em cl.hpp and all
 * definitions are contained within the namespace \em cl. There is no additional
 * requirement to include \em cl.h and to use either the C++ or original C
 * bindings it is enough to simply include \em cl.hpp.

However, cl.hpp does not declare "clCreatePipe". I will need to include cl.h even though the header says I don't. Is it OK then to also include cl.h (before cl.hpp)?

In my code, I tried also adding the cl:: namespace (cl::clCreatePipe), but got the same error.

  • It looks like I have to do

    #define CL_TARGET_OPENCL_VERSION 200

    #include <CL/opencl.h>

    in my host code, per Appendix 3 in the OpenCL programmers guide. It now compiles.

2 Replies

  • okramer's avatar
    okramer
    Icon for Occasional Contributor rankOccasional Contributor

    It looks like I have to do

    #define CL_TARGET_OPENCL_VERSION 200

    #include <CL/opencl.h>

    in my host code, per Appendix 3 in the OpenCL programmers guide. It now compiles.

  • MEIYAN_L_Intel's avatar
    MEIYAN_L_Intel
    Icon for Frequent Contributor rankFrequent Contributor

    Hi,

    Yes, you have to define CL_TARGET_OPENCL_VERSION 200 in order to used OpenCL 2.0 features.

    Thanks