-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharch.h
More file actions
111 lines (102 loc) · 2.8 KB
/
Copy patharch.h
File metadata and controls
111 lines (102 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#if defined(__x86_64__)
# define SSE // for Intel CPU
# undef NEON
# define FLOATASFLOAT // if not float as double
# define INTASINT // if not int as char, uint as uchar
# if defined(__APPLE__) // MacOS
# undef CLRESIZE
# define CVRESIZE
// on MacOS 10.12 (Qt) + OpenCV 3.2, cv::waitKey() in thread
// (THITERDISPREACT) fails. even only disp is threaded
// (THITERDISP) is 3% faster.
# if defined(USESDL)
# if defined(USEGL)
# define THITERDISPREACT // SDL is thread unsafe on SDL_PollEvents()
# undef THITERDISP
# else
# undef THITERDISPREACT // SDL is thread unsafe on SDL_PollEvents()
# define THITERDISP
# endif
# elif defined(USECV)
# undef THITERDISPREACT // cv::waitKey() thread unsafe???
# define THITERDISP
# endif
# endif
#endif
#if defined(__arm__) | defined(__ARM_ARCH)
# undef SSE
# define FLOATASFLOAT
# define INTASINT
# if defined(CUDA) | defined(NVCC) // ARM with CUDA. Jetson TK1 & TX1 tested.
# undef CLRESIZE
# define CVRESIZE
//# undef CUDARESIZE
# undef CUDALSOPT // slant add optimize
# define CUDABLOPT // block shared memory optimize
# undef CUDAMAP // map (u, v) to color using CUDA
# undef CUDAFMM // find min-max using CUDA
# define CUDA_BLOCKSIZE (32)
# define CUDA_MAXBLOCKSIZE (1024)
# undef NEON // neon optimization is not used with CUDA code,
// while nvcc don't understand some NEON typedef.
# undef CUDAINTERLEAVE
# if defined(USESDL)
# undef THITERDISPREACT
# undef THITERDISP
# elif defined(USECV)
// note: OpenCV (3.4.0) w/o GTHREAD donot allow THITERDISP/THITERDISPREACT
# define THITERDISPREACT
# undef THITERDISP
# define ANISTOP (250)
# define KEYBOARDWAITMS (50)
# endif
# else // ARM without CUDA. RasPi3 and Tinker tested.
# undef CLRESIZE
# define CVRESIZE
//# define NEON // for ARM CPU
# if defined(USECV)
# define THITERDISPREACT // iter and disp/react are pararelly done by thread
# undef THITERDISP // iter and disp are pararelly done by thread
# elif defined(USESDL)
# undef THITERDISPREACT
# undef THITERDISP
# endif
# endif
#endif
#if defined(SSE)
# include <xmmintrin.h>
#elif defined(NEON)
# include <arm_neon.h>
#endif
#if defined(CUDAMAP)
# include <cuda.h>
# undef CVRESIZE
# undef CLRESIZE
# if ! defined(CUDA)
# error CUDAMAP needs to define CUDA
# endif
#endif
#if defined(THREAD) | defined(THITERDISPREACT) | defined(THITERDISP)
# include <thread>
#endif
#if defined(FLOATASFLOAT)
typedef float Float;
# if defined(SSE)
typedef __attribute__((aligned(16))) float AFloat;
typedef __m128 M128;
# elif defined(NEON)
typedef float AFloat;
typedef float32x4_t M128;
# else
typedef float AFloat;
# endif
#else
typedef double Float;
#endif
#if defined(INTASINT)
typedef int Int; // fastest for most compiler
typedef int Int;
#else
typedef char Int;
typedef short Int;
#endif