ae2f_docs
Mlp.h
1#ifndef Mlp_h
2#define Mlp_h
3
4#include "./Slp.auto.h"
5#include "./mac.h"
6
7/**
8 * @brief
9 * delta to delta
10 * Bwd
11 *
12 * @inp aka out_then
13 * @deltaseed
14 * */
15ae2f_MAC() clMlpRvrse(
16 ae2f_float_t v_tmp,
17
18 ae2f_float_t* const r_delta_then,
19
20 const size_t i_oidx,
21 const size_t i_iidx,
22 const size_t i_isz,
23
24 ae2f_AnnActFFN_t i_actderiv_then,
25
26 const ae2f_float_t* const i_inp,
27 const ae2f_float_t* const i_deltaseed
28 )
29{
30 if((i_iidx) < (i_isz) && !(i_oidx)) {
31 i_actderiv_then(&(v_tmp), (i_inp), i_iidx, i_isz);
32 (r_delta_then)[i_iidx] = (v_tmp) * (i_deltaseed)[i_iidx];
33 }
34}
35
36
37#define _clMlpGetHD1_t _clAtomAddF_t
38
40typedef _clMlpGetHD1_t(__global, host_float_t) clMlpGetHD1_t;
41#endif
42
43ae2f_MAC(__global, ) clMlpGetHD1(
44 clMlpGetHD1_t v_mem,
45
46 ae2f_float_t* const r_delta_then,
47
48 const ae2f_float_t* const i_weight,
49 const ae2f_float_t* const i_delta,
50
51 const size_t i_iidx,
52 const size_t i_isz,
53 const size_t i_oidx,
54 const size_t i_osz
55 )
56{
57 if((i_oidx) < (i_osz) && (i_iidx) < (i_isz)) {
58 unless((i_oidx)) (r_delta_then)[i_iidx] = 0;
59 _clAtomAddF(__global
60 , (v_mem)
61 , &(r_delta_then)[(i_iidx)]
62 , (i_weight)[(i_isz) * (i_oidx) + (i_iidx)] * (i_delta)[i_oidx]
63 );
64 }
65}
66
67#endif
#define unless(...)
Invokes when condition is false.
Definition Cast.h:103
#define __ae2f_MACRO_GENERATED
Definition Conv.auto.h:2
#define __global
Definition addrspec.h:8
#define size_t
Definition mac.h:20
#define host_float_t
Definition mac.h:9
#define ae2f_MAC(...)
Definition mac.h:28
#define _clMlpGetHD1_t
Definition Mlp.auto.h:43
#define _clAtomAddF(__global, v_mem, prm_dst, prm_val)
Definition Slp.auto.h:42
#define _clAtomAddF_t(__global, host_float_t)
Definition Slp.auto.h:24