#pragma once

#include <CL/cl.h>

class OclTask
{
public:
    OclTask(cl_device_type dev_type, const char *kern_name, const char *kern_code);
    virtual ~OclTask();
    cl_command_queue GetCommandQueue() { return cmdq_; }

    virtual void Run() = 0;

protected:
    cl_platform_id   plat_;
    cl_device_id     dev_;
    cl_context       ctx_;
    cl_program       prog_;
    cl_kernel        kern_;
    cl_command_queue cmdq_;
};