没有用于调用cl :: Program :: build()的匹配函数

时间:2016-11-24 10:53:32

标签: c++ opencl

我为OpenCL设备的设备,上下文和命令队列创建了一个类。但在我打电话和使用它的过程中,给了我一些问题。

这是我在oclenvironment.h中的课程:

class oclenvironment
{
 public:
 oclenvironment();
 oclenvironment(int& status, int dev_type);
 ~oclenvironment();

 const cl::Device* GetDevice();
 const cl::Context *GetContext();
 const cl::CommandQueue* GetQueue();

private:

 std::vector<cl::Platform> _platform;
 std::vector<cl::Device> _devices;
 cl::Context             _context;
 cl::CommandQueue        _queue;
};

我的cpp文件,函数声明:

clenvironment::oclenvironment(int& status,int dev_type)
{
   status = cl::Platform::get(&_platform);
   if(!_platform.empty())
   {
    auto err = _platform[0].getDevices(dev_type,&_devices);
    if(err!=0){
        status = err;
        return;
    }
    _context = new cl::Context(&_devices,NULL,0,0,&err);
    if(err!=0){
        status = err;
        return;
    }
    _queue = new  cl::CommandQueue(*_context,_devices[0],CL_QUEUE_PROFILING_ENABLE,&err);
    if(err!=0){
        status = err;
        return;
    }
  }
}



const cl::Device *oclenvironment::GetDevice()
{
   return &_devices[0];
}

const cl::Context *oclenvironment::GetContext()
{
return _context;}

const cl::CommandQueue *oclenvironment::GetQueue()
{
  return _queue;
}

现在在我的main.cpp中:

 int err = 0;
 oclenvironment env(err,CL_DEVICE_TYPE_GPU);

   auto devices = env.GetDevice();
   auto ctx = env.GetContext();
   auto queue = env.GetQueue();

    cl::Program::Sources source(1,std::make_pair(code.c_str(),strlen(code.c_str())));
    cl::Program prg(*ctx,source);
    err = prg.build(*devices,nullptr,0,0);  // I am getting error here

在构建期间,我收到错误,因为&#34;没有匹配函数来调用cl :: Program :: build(const cl :: Device&amp;,std :: nullptr_t,int,int)&# 34;

在致电或宣布或定义期间,一定是一些愚蠢的错误。

0 个答案:

没有答案