| 12 | )"; |
| 13 | |
| 14 | VecAddTask::VecAddTask(cl_device_type dev_type, int elem_cnt, int add_cnt, bool use_hal_api) |
| 15 | : OclTask(dev_type, "VecAdd", kCode.c_str()) |
| 16 | , kElemCnt(elem_cnt), kVecSize(elem_cnt * sizeof(int)), kAddCnt(add_cnt) |
| 17 | , kUseHalApi(use_hal_api) |
| 18 | { |
| 19 | host_vec[0] = new int[elem_cnt]; |
| 20 | host_vec[1] = new int[elem_cnt]; |
| 21 | host_adder = new int[elem_cnt]; |
| 22 | |
| 23 | for (int i = 0; i < kElemCnt; ++i) { |
| 24 | host_vec[0][i] = 0; |
| 25 | host_vec[1][i] = 0; |
| 26 | host_adder[i] = 1; |
| 27 | } |
| 28 | |
| 29 | dev_vec[0] = clCreateBuffer(ctx_, CL_MEM_READ_WRITE, kVecSize, NULL, NULL); |
| 30 | dev_vec[1] = clCreateBuffer(ctx_, CL_MEM_READ_WRITE, kVecSize, NULL, NULL); |
| 31 | dev_adder = clCreateBuffer(ctx_, CL_MEM_READ_ONLY, kVecSize, NULL, NULL); |
| 32 | |
| 33 | OCL_ASSERT(clEnqueueWriteBuffer(cmdq_, dev_vec[0], CL_FALSE, 0, kVecSize, host_vec[0], 0, NULL, NULL)); |
| 34 | OCL_ASSERT(clEnqueueWriteBuffer(cmdq_, dev_vec[1], CL_FALSE, 0, kVecSize, host_vec[1], 0, NULL, NULL)); |
| 35 | OCL_ASSERT(clEnqueueWriteBuffer(cmdq_, dev_adder, CL_FALSE, 0, kVecSize, host_adder, 0, NULL, NULL)); |
| 36 | OCL_ASSERT(clFinish(cmdq_)); |
| 37 | |
| 38 | OCL_ASSERT(clSetKernelArg(kern_, 1, sizeof(cl_mem), &dev_adder)); |
| 39 | OCL_ASSERT(clSetKernelArg(kern_, 3, sizeof(int), &elem_cnt)); |
| 40 | |
| 41 | if (kUseHalApi) { |
| 42 | OpenclQueueCreate(&hwq_, cmdq_); |
| 43 | XQueueCreate(&xq_, hwq_, kPreemptLevelBlock, kQueueCreateFlagNone); |
| 44 | } |
| 45 | } |
| 46 | |
| 47 | VecAddTask::~VecAddTask() |
| 48 | { |
nothing calls this directly
no test coverage detected