1#include <ae2fVK/Ann/Mlp.h>
4static ae2fVK_AnnMlpMk_t s_mk;
5static ae2fVK_AnnMlpMapRangedGeneric_t s_mapranged;
15static size_t s_lpModelLen[] = {2, 4, 3, 12, 1};
17#define NULL_GENERIC(T) ((T*)NULL
)
28 ,
sizeof(s_lpModelLen) /
sizeof(s_lpModelLen[0])
34 , 0.1, 0.1, vkdev, vkphydevmemprops
38 "#define ACT_DERIV(lidx, r, x, i, c) { *(r) = (((x)[i] + 1e-7) * (1.0 - (x)[i] - 1e-7)); } \n"
39 "#define ACT(lidx, r, x, i, c) { *(r) = (1.0 / (1.0 + exp(-(x[i])))); } \n"
40 "#define LOSS_DERIV(r, o, t, i, c) { *(r) = ((o)[i] - (t)[i]) / (c); } \n"
47 , *(s_mk).m_U0.m_mkswap.m_mkbase
56 size_t i = (s_mk).m_U0.m_mkswap.m_mkbase->m_mlp.m_depth - 1;
59 size_t j = (s_mk).m_U0.m_mkswap.m_mkbase->m_mlp.m_outc;
63 s_ptr1[k1 * i + j] = 0.2;
65 s_ptr0[k1 * k1 * i + k1 * k + j] = 0.5;
72 , *(s_mk).m_U0.m_mkswap.m_mkbase
79 , (*(s_mk).m_U0.m_mkswap.m_mkbase)
86 printf(
"Goal has set: %f\n", s_ptr0[0]);
90 , *(s_mk).m_U0.m_mkswap.m_mkbase
97 , *(s_mk).m_U0.m_mkswap.m_mkbase
106 a_depth = (s_mk).m_U0.m_mkswap.m_mkbase->m_mlp.m_depth
107 , a_outc = (s_mk).m_U0.m_mkswap.m_mkbase->m_mlp.m_outc;
110 printf(
"OUT INIT FOR TEST: %f\n", (s_ptr0[(a_depth - 1) * a_outc] = 4));
115 VkCommandBuffer vkcmdbuf = NULL;
116 VkCommandPool vkcmdpool = NULL;
118 VkCommandPoolCreateInfo vkcmdpoolcreatinfo;
119 vkcmdpoolcreatinfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT;
120 vkcmdpoolcreatinfo.pNext = NULL;
121 vkcmdpoolcreatinfo.queueFamilyIndex = 0;
122 vkcmdpoolcreatinfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
124 if((((s_mk).m_U0.m_mkswap.m_mkbase->m_vkres) = vkCreateCommandPool(
126 , &vkcmdpoolcreatinfo
131 printf(
"Errval: %d\n", (s_mk.m_U0.m_mkswap.m_mkbase)->m_vkres);
132 assert(!
"vkCreateCommandPool has failed.");
137 assert(!
"vkCreateCommandPool went null");
143 VkCommandBufferAllocateInfo vkcmdallocinfo;
144 vkcmdallocinfo.commandBufferCount = 1;
145 vkcmdallocinfo.pNext = NULL;
146 vkcmdallocinfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
147 vkcmdallocinfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
148 vkcmdallocinfo.commandPool = vkcmdpool;
150 if((s_mk.m_U0.m_mkswap.m_mkbase->m_vkres =
151 vkAllocateCommandBuffers(
157 printf(
"Errval: %d\n", (s_mk.m_U0.m_mkswap.m_mkbase)->m_vkres);
158 assert(!
"vkAllocateCommandBuffers has failed.");
164 printf(
"Errval: %d\n", (s_mk.m_U0.m_mkswap.m_mkbase)->m_vkres);
165 assert(!
"vkAllocateCommandBuffers went null.");
171 ae2fVK_AnnMlpCreatDescPool_t v_poolmk;
172 ae2fVK_AnnMlpDescPoolCmdMk_t v_cmdmk;
174 ae2fVK_AnnMlpDescPool v_descpool;
175 ae2fVK_AnnMlpDescPoolCmd v_descpoolcmd;
182 , (s_mk.m_U0.m_mkswap.m_mkbase[0])
183 , VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
190 , (s_mk.m_U0.m_mkswap.m_mkbase[0])
200 VkSubmitInfo submit_info = {
201 .sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,
202 .commandBufferCount = 1,
203 .pCommandBuffers = &vkcmdbuf,
214 assert(!
"vkQueueSubmit failed");
218 if (vkQueueWaitIdle(vkqueue) != VK_SUCCESS) {
219 assert(!
"vkQueueWaitIdle failed");
226 , *(s_mk).m_U0.m_mkswap.m_mkbase
232 a_depth = (s_mk).m_U0.m_mkswap.m_mkbase->m_mlp.m_depth
233 , a_outc = (s_mk).m_U0.m_mkswap.m_mkbase->m_mlp.m_outc;
235 printf(
"OUT: %f\n", s_ptr0[(a_depth - 1) * (a_outc)]);
236 printf(
"IN: %f %f\n", s_ptr0[0], s_ptr0[1]);
244 for(i = 0; i < 10000; i++) {
252 assert(!
"vkQueueSubmit failed");
256 if (vkQueueWaitIdle(vkqueue) != VK_SUCCESS) {
257 assert(!
"vkQueueWaitIdle failed");
263 s_mk.m_U0.m_mkswap.m_mkbase[0]
269 s_mk.m_U0.m_mkswap.m_mkbase[0]
277 , *(s_mk).m_U0.m_mkswap.m_mkbase
283 a_depth = (s_mk).m_U0.m_mkswap.m_mkbase->m_mlp.m_depth
284 , a_outc = (s_mk).m_U0.m_mkswap.m_mkbase->m_mlp.m_outc;
286 printf(
"OUT: %f\n", s_ptr0[(a_depth - 1) * (a_outc)]);
287 printf(
"IN: %f %f\n", s_ptr0[0], s_ptr0[1]);
293 vkFreeCommandBuffers(vkdev, vkcmdpool, 1, &vkcmdbuf);
294 vkDestroyCommandPool(vkdev, vkcmdpool, NULL);
297 free((s_mk).m_U0.m_mkswap.m_mkbase);
#define unless(...)
Invokes when condition is false.
#define ae2f_errGlob_OK
The Operation you've wanted went successful.
#define __ae2fVK_AnnMlpDescPoolMk_imp
#define __ae2fVK_AnnMlpDescPoolClean_imp
#define __ae2fVK_AnnMlpDescPoolCmdClean_imp
#define __ae2fVK_AnnMlpDescPoolCmdMkTrain_imp(v_cmdmk, iv_mlp, iv_err, i_pool, r_cmd, i_vkcmdbuf)
#define __ae2fVK_AnnMlpUnMapOutStream_imp(v_unmap, iv_mlp)
#define __ae2fVK_AnnMlpMapGoal_imp(v_map, iv_mlp, r_err, r_ptr)
#define __ae2fVK_AnnMlpUnMapGoal_imp(v_unmap, iv_mlp)
#define __ae2fVK_AnnMlpMapWB_imp(v_map, iv_mlp, r_err, r_ptrweight, r_ptrbias)
#define __ae2fVK_AnnMlpMapOutStream_imp(v_map, iv_mlp, r_err, r_ptr)
#define __ae2fVK_AnnMlpClean_imp(v_mlp)
#define __ae2fVK_AnnMlpUnMapWB_imp(v_unmap, iv_mlp)
#define __ae2fVK_AnnMlpMk_imp(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)