MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / susan

Function susan

src/backend/opencl/kernel/susan.hpp:32–62  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

30
31template<typename T>
32void susan(cl::Buffer* out, const cl::Buffer* in, const unsigned in_off,
33 const unsigned idim0, const unsigned idim1, const float t,
34 const float g, const unsigned edge, const unsigned radius) {
35 const size_t LOCAL_MEM_SIZE =
36 (SUSAN_THREADS_X + 2 * radius) * (SUSAN_THREADS_Y + 2 * radius);
37
38 std::vector<TemplateArg> targs = {
39 TemplateTypename<T>(),
40 TemplateArg(radius),
41 };
42 std::vector<std::string> compileOpts = {
43 DefineKeyValue(T, dtype_traits<T>::getName()),
44 DefineValue(LOCAL_MEM_SIZE),
45 DefineKeyValue(BLOCK_X, SUSAN_THREADS_X),
46 DefineKeyValue(BLOCK_Y, SUSAN_THREADS_Y),
47 DefineKeyValue(RADIUS, radius),
48 DefineKey(RESPONSE),
49 };
50 compileOpts.emplace_back(getTypeBuildDefinition<T>());
51
52 auto susan = common::getKernel("susan_responses", {{susan_cl_src}}, targs,
53 compileOpts);
54
55 cl::NDRange local(SUSAN_THREADS_X, SUSAN_THREADS_Y);
56 cl::NDRange global(divup(idim0 - 2 * edge, local[0]) * local[0],
57 divup(idim1 - 2 * edge, local[1]) * local[1]);
58
59 susan(cl::EnqueueArgs(getQueue(), global, local), *out, *in, in_off, idim0,
60 idim1, t, g, edge);
61 CL_DEBUG_FINISH(getQueue());
62}
63
64template<typename T>
65unsigned nonMaximal(cl::Buffer* x_out, cl::Buffer* y_out, cl::Buffer* resp_out,

Callers

nothing calls this directly

Calls 5

TemplateArgClass · 0.85
getNameFunction · 0.85
EnqueueArgsClass · 0.85
getKernelFunction · 0.50
getQueueFunction · 0.50

Tested by

no test coverage detected