-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathMaxPooling.cl
More file actions
28 lines (24 loc) · 896 Bytes
/
MaxPooling.cl
File metadata and controls
28 lines (24 loc) · 896 Bytes
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
__kernel void Pooling(__global float* inImage,
float poolCoef,
float poolBias,
__global float* outImage) {
int outImgWidth = get_global_size(0),
coef = convert_int(1 / poolCoef),
inImgWidth = coef * outImgWidth,
i = get_global_id(0),
j = get_global_id(1),
m = coef * i,
n = coef * j;
float a, b, c, d, fst_max, snd_max;
for (int ch = 0; ch < 3; ++ch) {
a = inImage[3 * (m + inImgWidth * n) + ch];
/*b = inImage[3 * ((m + 1) + inImgWidth * n) + ch];
c = inImage[3 * (m + inImgWidth * (n + 1)) + ch];
d = inImage[3 * ((m + 1) + inImgWidth * (n + 1)) + ch];
fst_max = ((a > b) ? a : b);
snd_max = ((c > d) ? c : d);
float tmp = (((fst_max > snd_max) ? fst_max : snd_max) + poolBias);*/
float tmp = a + poolBias;
outImage[3 * (i + outImgWidth * j) + ch] = tmp > 0 ? tmp : 0;
}
}