#pragma once
#include <string>
#include "task.h"
#include "xsched/xsched.h"
class VecAddTask : public OclTask
{
public:
VecAddTask(cl_device_type dev_type, int elem_cnt, int add_cnt, bool use_hal_api = false);
virtual ~VecAddTask();
virtual void Run() override;
void CheckResult();
private:
static const std::string kCode;
const int kElemCnt;
const int kVecSize;
const int kAddCnt;
const bool kUseHalApi;
XQueueHandle xq_;
HwQueueHandle hwq_;
int current_A = 0;
int current_C = 1;
int total_add_cnt = 0;
int *host_vec[2] = {nullptr, nullptr};
int *host_adder = nullptr;
cl_mem dev_vec[2] = {nullptr, nullptr};
cl_mem dev_adder = nullptr;
};