38 memset(&(
mk), 0,
sizeof(
mk));
44 , Act, ActDeriv, LossDeriv
51 "#define ACT_DERIV(r, output) *(r) = (((output) + 1e-7) * (1.0 - (output) - 1e-7)); \n"
52 "#define ACT(r, x) *(r) = (1.0 / (1.0 + exp(-(x)))); \n"
53 "#define LOSS_DERIV(r, o, t, i, c) *(r) = ((o)[i] - (t)[i]) / (c);\n"
55 ,
"/** This is also a comment */\n"
58 mk.m_U0.m_alter.m_ptr->m_slp.m_learningrate = 0.6;
59 mk.m_U0.m_alter.m_ptr->m_slp.m_learningrate_bias = 0.5;
61 puts(
"__ae2fVK_AnnSlpMk_imp is done");
64 assert(
mk.m_U0.m_alter.m_ptr->m_slp.m_Slp[0].m_inc == 2);
65 assert(
mk.m_U0.m_alter.m_ptr->m_slp.m_Slp[0].m_outc == 1);
67 printf(
"Stateval: %d\n", (
mk).m_U0.m_alter.m_ptr->m_vkres);
69 assert(
mk.m_U0.m_alter.m_ptr &&
"__ae2fVK_AnnSlpMk_imp has failed");
72 assert(
mk.m_U0.m_alter.m_ptr->m_vkres == VK_SUCCESS);
84 ,
mk.m_U0.m_alter.m_ptr
93 for(i = 0; i < 2; i++) {
94 bias[0] = ((
double)rand() / RAND_MAX) - 0.5;
95 weight[i] = ((
double)rand() / RAND_MAX) - 0.5;
100 ,
mk.m_U0.m_alter.m_ptr[0]
102 } puts(
"WB init done");
109 * OutputMapped = NULL,
110 * InputMapped = NULL,
116 ,
mk.m_U0.m_alter.m_ptr
121 puts(
"Before OutputMapped written");
124 assert(OutputMapped);
127 assert((
mk.m_U0.m_alter.m_ptr[0].m_vkres) == VK_SUCCESS);
129 puts(
"Before IOMap Writting")
136 printf(
"Inputmapped before predict: %f %f\n", InputMapped[0], InputMapped[1]);
137 printf(
"Outputmapped before predict: %f\n", OutputMapped[0]);
143 GoalMapped[0] = 0.2222;
144 printf(
"Goal before predict %f\n", GoalMapped[0]);
148 puts(
"After __ae2fVK_AnnSlpIOUnMapOutput_imp.");
152 VkCommandBuffer vkcmdbuf = NULL;
153 VkCommandPool vkcmdpool = NULL;
156 VkCommandPoolCreateInfo vkcmdpoolcreatinfo;
157 vkcmdpoolcreatinfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT;
158 vkcmdpoolcreatinfo.pNext = NULL;
159 vkcmdpoolcreatinfo.queueFamilyIndex = 0;
161 if((((
mk).m_U0.m_alter.m_ptr->m_vkres) = vkCreateCommandPool(
163 , &vkcmdpoolcreatinfo
168 printf(
"Errval: %d\n", (
mk).m_U0.m_alter.m_ptr->m_vkres);
169 assert(!
"vkCreateCommandPool has failed.");
173 puts(
"After vkCreateCommandPool.");
177 assert(!
"vkCreateCommandPool went null");
183 VkCommandBufferAllocateInfo vkcmdallocinfo;
184 vkcmdallocinfo.commandBufferCount = 1;
185 vkcmdallocinfo.pNext = NULL;
186 vkcmdallocinfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
187 vkcmdallocinfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
188 vkcmdallocinfo.commandPool = vkcmdpool;
190 if((
mk.m_U0.m_alter.m_ptr->m_vkres =
191 vkAllocateCommandBuffers(
197 printf(
"Errval: %d\n", (
mk).m_U0.m_alter.m_ptr->m_vkres);
198 assert(!
"vkAllocateCommandBuffers has failed.");
202 puts(
"After vkAllocateCommandBuffers.");
207 printf(
"Errval: %d\n", (
mk).m_U0.m_alter.m_ptr->m_vkres);
208 assert(!
"vkAllocateCommandBuffers went null.");
214 ae2fVK_AnnSlpCreatDescPool_t v_poolmk;
215 ae2fVK_AnnSlpDescPoolCmdMk_t v_cmdmk;
217 ae2fVK_AnnSlpDescPool v_descpool;
218 ae2fVK_AnnSlpDescPoolCmd v_descpoolcmd;
222 puts(
"Before __ae2fVK_AnnSlpPredictPerformed_imp");
229 , (
mk.m_U0.m_alter.m_ptr[0])
230 , VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
237 , (
mk.m_U0.m_alter.m_ptr[0])
244 puts(
"After __ae2fVK_AnnSlpPredictPerformed_imp");
250 "Vulkan state number %d: \n"
251 ,
mk.m_U0.m_alter.m_ptr->m_vkres
254 printf(
"Error value %x, \n", err);
255 assert(!
"__ae2fVK_AnnSlpPredictPerformed_imp has failed.");
259 unless((v_descpoolcmd).m_vkdescset) {
260 assert(!
"__ae2fVK_AnnSlpPredictPerformed_imp went null.");
265 VkSubmitInfo submit_info = {
266 .sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,
267 .commandBufferCount = 1,
268 .pCommandBuffers = &vkcmdbuf,
274 * OutputMapped = NULL,
275 * InputMapped = NULL,
287 assert(!
"vkQueueSubmit failed");
291 if (vkQueueWaitIdle(vkqueue) != VK_SUCCESS) {
292 assert(!
"vkQueueWaitIdle failed");
299 ,
mk.m_U0.m_alter.m_ptr
304 assert(OutputMapped);
305 assert((
mk.m_U0.m_alter.m_ptr[0].m_vkres) == VK_SUCCESS);
307 printf(
"Inputmapped before predict: %f %f\n", InputMapped[0], InputMapped[1]);
308 printf(
"Outputmapped before prediction %f\n", OutputMapped[0]);
312 , *
mk.m_U0.m_alter.m_ptr
315 for(i = 0; i < 1000; i++) {
323 assert(!
"vkQueueSubmit failed");
327 if (vkQueueWaitIdle(vkqueue) != VK_SUCCESS) {
328 assert(!
"vkQueueWaitIdle failed");
333 puts(
"After vkQueueSubmit");
339 ,
mk.m_U0.m_alter.m_ptr
344 assert(OutputMapped);
345 assert((
mk.m_U0.m_alter.m_ptr[0].m_vkres) == VK_SUCCESS);
347 printf(
"Inputmapped after predict: %f %f\n", InputMapped[0], InputMapped[1]);
348 printf(
"Outputmapped after prediction %f\n", OutputMapped[0]);
352 , *
mk.m_U0.m_alter.m_ptr
357 printf(
"Goal after prediction: %f\n", GoalMapped[0]);
363 mk.m_U0.m_alter.m_ptr[0]
369 mk.m_U0.m_alter.m_ptr[0]
375 vkFreeCommandBuffers(vkdev, vkcmdpool, 1, &vkcmdbuf);
376 vkDestroyCommandPool(vkdev, vkcmdpool, NULL);
378 memset(
mk.m_U0.m_alter.m_ptr, 0,
sizeof(*
mk.m_U0.m_alter.m_ptr));
379 free(
mk.m_U0.m_alter.m_ptr);
381 memset(&
mk, 0,
sizeof(
mk));
#define __ae2fVK_AnnSlpMk_imp(v_mk, weight_opt, bias_opt, cache_opt, inc, outc, prm_offset, extra, act, actderiv, lossderiv, learningrate, learningrate_bias, vkdev, vkmemprops, vkalloccalls, vkcldeclaration, vkcldefinition)
Make slp with OpenCL compute shader.