ae2f_docs
Mlp.core.h
1#ifndef ae2fVK_Ann_Mlp_core_h
2#define ae2fVK_Ann_Mlp_core_h
3
4#include <ae2f/Ann/Mlp.h>
5
6#include "./Slp.core.h"
7
8#include <ae2f/Cast.h>
9#include <ae2f/errGlob.h>
10#include <vulkan/vulkan.h>
11
12#include <ae2f/Pack/Beg.h>
13
14ae2f_enumdef(ae2fVK_eAnnMlpDescLayouts, {
15 ae2fVK_eAnnMlpDescLayouts_ONLY,
16 ae2fVK_eAnnMlpDescLayouts_LEN
17 });
18
19ae2f_enumdef(ae2fVK_eAnnMlpPipeLayouts, {
20 ae2fVK_eAnnMlpPipeLayouts_kPredict,
21 ae2fVK_eAnnMlpPipeLayouts_kTrain,
22 ae2fVK_eAnnMlpPipeLayouts_LEN
23 });
24
25ae2f_enumdef(ae2fVK_eAnnMlpPipes, {
26 ae2fVK_eAnnMlpPipes_kPredict,
27 ae2fVK_eAnnMlpPipes_kPredictStream,
28 ae2fVK_eAnnMlpPipes_kFollow,
29 ae2fVK_eAnnMlpPipes_kTrainAuto,
30 ae2fVK_eAnnMlpPipes_LEN
31 });
32
33ae2f_enumdef(ae2fVK_eAnnMlpDescPools, {
34 ae2fVK_eAnnMlpDescPools_ONLY,
35 ae2fVK_eAnnMlpDescPools_LEN
36 });
37
38ae2f_structdef(struct, ae2fVK_AnnMlp);
39
40ae2f_structdef(struct, ae2fVK_AnnMlpMkU0Swap_t) {
41 /**
42 * @brief
43 * Maximum output count among all layers.
44 */
45 size_t m_outc;
46 size_t m_weightc;
47
48 /**
49 * @brief
50 * Loop counter.
51 */
52 size_t m_i;
53 /**
54 * @brief
55 * Union for pointer manipulation during creation.
56 */
57 ae2f_AnnMlpInitMkPtr_t m_mkptr;
58 /**
59 * @brief
60 * Base pointer to the created MLP.
61 */
62 ae2fVK_AnnMlp* ae2f_restrict m_mkbase;
63};
64
65ae2f_structdef(union, ae2fVK_AnnMlpMkU0_t) {
66 ae2f_AnnMlpMk_t m_mk;
67 ae2fVK_AnnMlpMkU0Swap_t m_mkswap;
68 /** END OF DEFINITION */
69};
70
71ae2f_structdef(union, ae2fVK_AnnMlpMkU1_t) {
72 size_t m_i;
73 VkBufferCreateInfo m_vkbufcreatinfo;
74 VkMemoryAllocateInfo m_vkmemallocinfo;
75 VkDescriptorSetLayoutBinding m_vkdescsetlayoutbind[ae2fVK_eAnnMlpDescLayouts_LEN];
76 VkPushConstantRange m_vkpushconstrange;
77 ae2fVK_AnnSlpMapRangedGeneric_t m_map;
78 ae2fVK_AnnSlpUnMap_t m_unmap;
79
80 const char* m_clsrc;
81 void* m_clsrc_v;
82
83 VkComputePipelineCreateInfo m_vkcomputepipecreatinfo[ae2fVK_eAnnMlpPipes_LEN];
84};
85
86ae2f_structdef(union, ae2fVK_AnnMlpMkU2_t) {
87 VkMemoryRequirements m_vkmemreqs;
88 VkDescriptorSetLayoutCreateInfo m_vkdescsetlayoutcreatinfo;
89 VkPipelineLayoutCreateInfo m_vkpipelayoutcreatinfo;
90 VkDeviceSize m_i;
91 VkShaderModuleCreateInfo m_vkshadermodcreatinfo;
92};
93
94ae2f_structdef(union, ae2fVK_AnnMlpMkU3_t) {
95 size_t m_vkmemtypeidx;
96 ae2f_float_t* m_mapped;
97
98 char* m_cllog;
99};
100
101
102ae2f_structdef(struct, ae2fVK_AnnMlpMkU4_t) {
103 ClspvError m_clspverror;
104};
105
106ae2f_structdef(struct, ae2fVK_AnnMlpMkRet_t) {
107 ae2f_err_t m_err;
108};
109ae2f_structdef(struct, ae2fVK_AnnMlpMk_t) {
110 ae2fVK_AnnMlpMkRet_t m_ret;
111 ae2fVK_AnnMlpMkU0_t m_U0;
112 ae2fVK_AnnMlpMkU1_t m_U1;
113 ae2fVK_AnnMlpMkU2_t m_U2;
114 ae2fVK_AnnMlpMkU3_t m_U3;
115 ae2fVK_AnnMlpMkU4_t m_U4;
116};
117
118#include <ae2f/Pack/End.h>
119
120typedef ae2fVK_AnnSlpUnMap_t ae2fVK_AnnMlpUnMap_t;
121typedef VkMappedMemoryRange ae2fVK_AnnMlpUnMap_t, ae2fVK_AnnMlpMapRangedGeneric_t;
122typedef ae2fVK_AnnSlpDescPoolCmdMk_t ae2fVK_AnnMlpDescPoolCmdMk_t;
123
124
125#define __ae2fVK_AnnMlpMdlSz(i_depth, ...)
126 ((sizeof(uint32_t) * (i_depth)))
127
128#define __ae2fVK_AnnMlpMdlOff(...) 0
129
130#define __ae2fVK_AnnMlpOutStreamSz(i_depth, i_outc, i_weightc)
131 ((sizeof(ae2f_float_t)) * (i_depth) * (i_outc)) /** outstream */
132
133#define __ae2fVK_AnnMlpOutStreamOff(i_depth, i_outc, i_weightc)
134 (__ae2fVK_AnnMlpMdlOff(i_depth, i_outc, i_weightc) + __ae2fVK_AnnMlpMdlSz(i_depth, i_outc, i_weightc))
135
136#define __ae2fVK_AnnMlpWeightSz(i_depth, i_outc, i_weightc)
137 ((sizeof(ae2f_float_t)) * ((i_depth) - 1) * (i_weightc)) /** weight */
138
139#define __ae2fVK_AnnMlpWeightOff(i_depth, i_outc, i_weightc)
140 (__ae2fVK_AnnMlpOutStreamOff(i_depth, i_outc, i_weightc) + __ae2fVK_AnnMlpOutStreamSz(i_depth, i_outc, i_weightc))
141
142#define __ae2fVK_AnnMlpBiasSz(i_depth, i_outc, i_weightc)
143 (sizeof(ae2f_float_t)) * ((i_depth) - 1) * (i_outc) /** bias */
144
145#define __ae2fVK_AnnMlpBiasOff(i_depth, i_outc, i_weightc)
146 (__ae2fVK_AnnMlpWeightOff(i_depth, i_outc, i_weightc) + __ae2fVK_AnnMlpWeightSz(i_depth, i_outc, i_weightc))
147
148#define __ae2fVK_AnnMlpDeltaStreamSz(i_depth, i_outc, i_weightc)
149 (((sizeof(ae2f_float_t)) * ((i_depth) - 1) * (i_outc))) /** deltastream */
150
151#define __ae2fVK_AnnMlpDeltaStreamOff(i_depth, i_outc, i_weightc)
152 (__ae2fVK_AnnMlpBiasSz(i_depth, i_outc, i_weightc) + __ae2fVK_AnnMlpBiasOff(i_depth, i_outc, i_weightc))
153
154#define __ae2fVK_AnnMlpGoalSz(i_depth, i_outc, i_weightc)
155 (sizeof(ae2f_float_t)) * (i_outc) /** goal */
156
157#define __ae2fVK_AnnMlpGoalOff(i_depth, i_outc, i_weightc)
158 (__ae2fVK_AnnMlpDeltaStreamSz(i_depth, i_outc, i_weightc) + __ae2fVK_AnnMlpDeltaStreamOff(i_depth, i_outc, i_weightc))
159
160#define __ae2fVK_AnnMlpGlobMemSz(i_depth, i_outc, i_weightc)
161 (__ae2fVK_AnnMlpGoalOff(i_depth, i_outc, i_weightc) + __ae2fVK_AnnMlpGoalSz(i_depth, i_outc, i_weightc))
162
163
164#define __ae2fVK_AnnMlpDescPoolMk_imp __ae2fVK_AnnSlpDescPoolMk_imp
165#define __ae2fVK_AnnMlpDescPoolClean_imp __ae2fVK_AnnSlpDescPoolClean_imp
166
167#define __ae2fVK_AnnMlpDescPoolCmdMk_imp __ae2fVK_AnnSlpDescPoolCmdMk_imp
168#define __ae2fVK_AnnMlpDescPoolCmdClean_imp __ae2fVK_AnnSlpDescPoolCmdClean_imp
169
170#define __ae2fVK_AnnMlpMapRangedGeneric_imp __ae2fVK_AnnSlpMapRangedGeneric_imp
171#define __ae2fVK_AnnMlpUnMapRanged_imp __ae2fVK_AnnSlpUnMapRanged_imp
172
173#endif
#define ae2f_enumdef(name,...)
Definition Cast.h:111
#define ae2f_structdef(key, name)
Definition Cast.h:110
#define ae2f_const_cast(t, v)
Definition Cast.h:57
#define ae2f_static_cast(t, v)
Definition Cast.h:42
#define ae2f_reinterpret_cast(t, v)
Definition Cast.h:52
#define unless(...)
Invokes when condition is false.
Definition Cast.h:103
#define ae2f_opt
Definition Guide.h:26
#define ae2f_errGlob_OK
The Operation you've wanted went successful.
Definition errGlob.h:23
#define ae2f_errGlob_ALLOC_FAILED
stdlib allocating functions (malloc, calloc, realloc) has been failed.
Definition errGlob.h:40
#define ae2f_errGlob_NFOUND
Found some errors, but not by parameters. The operation has failed.
Definition errGlob.h:50
#define ae2f_errGlob_WRONG_OPERATION
Found that parameter sent by programmer is invalid. The operation may have been ceased while the midd...
Definition errGlob.h:45
uint8_t ae2f_err_t
Informs that this number represents the error.
Definition errGlob.h:19
#define ae2f_errGlob_PTR_IS_NULL
Failed to refer the pointer either l-value inside the function.
Definition errGlob.h:32
#define ae2f_errGlob_IMP_NOT_FOUND
Failed to find the function on preprocessor which is callable for some reason No operation has beed d...
Definition errGlob.h:28
#define __ae2f_MACRO_GENERATED
Definition Conv.auto.h:2
#define __ae2fVK_AnnMlpOutStreamSz(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:130
#define __ae2fVK_AnnMlpWeightOff(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:139
#define __ae2fVK_AnnMlpUnMapRanged_imp
Definition Mlp.core.h:171
#define __ae2fVK_AnnMlpGoalOff(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:157
#define __ae2fVK_AnnMlpMapRangedGeneric_imp
Definition Mlp.core.h:170
#define __ae2fVK_AnnMlpOutStreamOff(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:133
#define __ae2fVK_AnnMlpMdlOff(...)
Definition Mlp.core.h:128
#define __ae2fVK_AnnMlpBiasSz(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:142
#define __ae2fVK_AnnMlpMdlSz(i_depth,...)
Definition Mlp.core.h:125
#define __ae2fVK_AnnMlpGoalSz(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:154
#define __ae2fVK_AnnMlpDeltaStreamOff(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:151
#define __ae2fVK_AnnMlpGlobMemSz(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:160
#define __ae2fVK_AnnMlpBiasOff(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:145
#define __ae2fVK_AnnMlpDeltaStreamSz(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:148
#define __ae2fVK_AnnMlpWeightSz(i_depth, i_outc, i_weightc)
Definition Mlp.core.h:136
#define ae2f_MAC_BUILD
Definition Util.h:5
#define ae2fVK_AnnMlpSHADER
#define __ae2fVK_AnnSlpDescPoolMk_imp(v_descpool, r_pool, r_reterr, iv_slp, i_vkdescpoolcreatflags, i_vkmaxdescsets)
#define __ae2fVK_AnnSlpDescPoolCmdClean_imp(iv_slp, i_pool, i_cmd)
#define __ae2fVK_AnnSlpDescPoolCmdMk_imp(COMMANDONRECORDING, v_cmdmk, r_cmd, iv_slp, i_pool, iv_err, i_desccount, i_offglob, i_szglob, i_offloc, i_szloc, i_desclayout, i_pipe, i_pipelayout, i_vkcmdbuf)
#define __ae2fVK_AnnSlpDescPoolClean_imp(i_slp, i_pool)
#define __ae2fVK_AnnMlpMk_imp_V(cllocfloat_t, v_mk, iv_weight_opt, iv_bias_opt, iv_outstream_opt, iv_deltastream_opt, i_len_count, i_len, i_len_swap, i_prm_offset, i_extra, i_act, i_actderiv, i_lossderiv, i_learningrate, i_learningrate_bias, i_vkdev, i_vkmemprops, iv_vkalloccalls, i_vkcldeclaration, i_vkcldefinition)
Definition Mlp.auto.h:107
#define __ae2fVK_AnnSlpMkCLSPVVerbose_imp(r_handle, ir_err, i_first, i_second, i_third)
Definition Slp.auto.h:794
#define __ae2fVK_AnnSlpMapRangedGeneric_imp(T, v_vkmapmemrange, iv_slp, r_err, r_ptr, i_off, i_sz)
Definition Slp.auto.h:868
#define __ae2fVK_AnnSlpMkLoadPipeCreat_imp(CMDONERR, r_reterr, pipecreat, pipelayout, shadermod, entrypoint, idx_pipe, idx_pipelayout)
Definition Slp.auto.h:208
#define __ae2fVK_AnnSlpMkOnePipeLayoutVerbose_imp(CMDONERR, v_vkpushconstrange, v_vkpipelayoutcreatinfo, r_reterr, iv_slpptr, idx, szrequired, vkalloccalls, vkdev)
Definition Slp.auto.h:247
#define __ae2fVK_AnnSlpUnMapRanged_imp(v_out, vi_slp, i_off, i_sz)
Definition Slp.auto.h:941
#define __ae2fVK_AnnSlpMkAllocVKMem_imp(CMDONERR, sz, r_vkres, r_vkbuf, r_vkdevmem, v_errbit, v_vkbufcreatinfo, v_memallocinfo, vkbufuseflags, vksharemode, vkdev, v_vkmemreq, vkalloccalls, v_memtypeidx, memtypeidx_invalid_minus_one, vkpropflag_req, vkphydevmemprops)
Definition Slp.auto.h:109
#define __ae2f_AnnMlpMk_imp(reg_mk, prm_depth, pprm_szvector, propptr_szswap_opt, lppfn_act_opt, lppfn_actderiv_opt, pfn_lossderiv, propptr_deltastream_opt, propptr_outcache_opt, propptr_weight_opt, propptr_bias_opt, prm_learningrate, prm_learningrate_bias, prm_offset_opt, prm_extra_opt)
Automatically allocates ae2f_AnnMlp and store its pointer at (reg_mk).m_mkbase.
Definition Mlp.auto.h:163
#define ae2f_MAC(...)
Definition mac.h:28