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

Function scan

src/backend/cpu/scan.cpp:25–70  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

23
24template<af_op_t op, typename Ti, typename To>
25Array<To> scan(const Array<Ti>& in, const int dim, bool inclusive_scan) {
26 const dim4& dims = in.dims();
27 Array<To> out = createEmptyArray<To>(dims);
28
29 if (inclusive_scan) {
30 switch (in.ndims()) {
31 case 1:
32 kernel::scan_dim<op, Ti, To, 1, true> func1;
33 getQueue().enqueue(func1, out, 0, in, 0, dim);
34 break;
35 case 2:
36 kernel::scan_dim<op, Ti, To, 2, true> func2;
37 getQueue().enqueue(func2, out, 0, in, 0, dim);
38 break;
39 case 3:
40 kernel::scan_dim<op, Ti, To, 3, true> func3;
41 getQueue().enqueue(func3, out, 0, in, 0, dim);
42 break;
43 case 4:
44 kernel::scan_dim<op, Ti, To, 4, true> func4;
45 getQueue().enqueue(func4, out, 0, in, 0, dim);
46 break;
47 }
48 } else {
49 switch (in.ndims()) {
50 case 1:
51 kernel::scan_dim<op, Ti, To, 1, false> func1;
52 getQueue().enqueue(func1, out, 0, in, 0, dim);
53 break;
54 case 2:
55 kernel::scan_dim<op, Ti, To, 2, false> func2;
56 getQueue().enqueue(func2, out, 0, in, 0, dim);
57 break;
58 case 3:
59 kernel::scan_dim<op, Ti, To, 3, false> func3;
60 getQueue().enqueue(func3, out, 0, in, 0, dim);
61 break;
62 case 4:
63 kernel::scan_dim<op, Ti, To, 4, false> func4;
64 getQueue().enqueue(func4, out, 0, in, 0, dim);
65 break;
66 }
67 }
68
69 return out;
70}
71
72#define INSTANTIATE_SCAN(ROp, Ti, To) \
73 template Array<To> scan<ROp, Ti, To>(const Array<Ti>& in, const int dim, \

Callers 2

operator()Method · 0.50
operator()Method · 0.50

Calls 4

getQueueFunction · 0.50
dimsMethod · 0.45
ndimsMethod · 0.45
enqueueMethod · 0.45

Tested by

no test coverage detected