MCPcopy Create free account
hub / github.com/XpuOS/xsched / VecAddTask

Method VecAddTask

platforms/example/test/src/vecadd.cpp:14–45  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12)";
13
14VecAddTask::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
47VecAddTask::~VecAddTask()
48{

Callers

nothing calls this directly

Calls 2

OpenclQueueCreateFunction · 0.85
XQueueCreateFunction · 0.85

Tested by

no test coverage detected