45 memset(&(
mk), 0,
sizeof(
mk));
51 , Act, ActDeriv, LossDeriv
58 "#define LOSS_DERIV(r, y, y_desired, i, c) \n"
59 "#define ACT(r, x) { (*(r) = (1.0 / (1.0 + exp(-x)))); } \n"
60 ,
"/** This is also a comment */\n"
63 puts(
"__ae2fVK_AnnSlpMk_imp is done");
66 assert(
mk.m_U0.m_alter.m_ptr->m_slp.m_Slp[0].m_inc == 2);
67 assert(
mk.m_U0.m_alter.m_ptr->m_slp.m_Slp[0].m_outc == 1);
69 printf(
"Stateval: %d\n", (
mk).m_U0.m_alter.m_ptr->m_vkres);
71 assert(
mk.m_U0.m_alter.m_ptr &&
"__ae2fVK_AnnSlpMk_imp has failed");
74 assert(
mk.m_U0.m_alter.m_ptr->m_vkres == VK_SUCCESS);
86 ,
mk.m_U0.m_alter.m_ptr
95 for(i = 0; i < 2; i++) {
96 bias[0] = ((
double)rand() / RAND_MAX) - 0.5;
97 weight[i] = ((
double)rand() / RAND_MAX) - 0.5;
102 ,
mk.m_U0.m_alter.m_ptr[0]
111 * OutputMapped = NULL,
117 ,
mk.m_U0.m_alter.m_ptr
122 puts(
"Before OutputMapped written");
125 assert(OutputMapped);
128 assert((
mk.m_U0.m_alter.m_ptr[0].m_vkres) == VK_SUCCESS);
135 printf(
"Inputmapped before predict: %f %f\n", InputMapped[0], InputMapped[1]);
136 printf(
"Outputmapped before predict: %f\n", OutputMapped[0]);
141 puts(
"After __ae2fVK_AnnSlpIOUnMapOutput_imp.");
145 VkCommandBuffer vkcmdbuf = NULL;
146 VkCommandPool vkcmdpool = NULL;
149 VkCommandPoolCreateInfo vkcmdpoolcreatinfo;
150 vkcmdpoolcreatinfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT;
151 vkcmdpoolcreatinfo.pNext = NULL;
152 vkcmdpoolcreatinfo.queueFamilyIndex = 0;
153 vkcmdpoolcreatinfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
155 if((((
mk).m_U0.m_alter.m_ptr->m_vkres) = vkCreateCommandPool(
157 , &vkcmdpoolcreatinfo
162 printf(
"Errval: %d\n", (
mk).m_U0.m_alter.m_ptr->m_vkres);
163 assert(!
"vkCreateCommandPool has failed.");
167 puts(
"After vkCreateCommandPool.");
171 assert(!
"vkCreateCommandPool went null");
177 VkCommandBufferAllocateInfo vkcmdallocinfo;
178 vkcmdallocinfo.commandBufferCount = 1;
179 vkcmdallocinfo.pNext = NULL;
180 vkcmdallocinfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
181 vkcmdallocinfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
182 vkcmdallocinfo.commandPool = vkcmdpool;
184 if((
mk.m_U0.m_alter.m_ptr->m_vkres =
185 vkAllocateCommandBuffers(
191 printf(
"Errval: %d\n", (
mk).m_U0.m_alter.m_ptr->m_vkres);
192 assert(!
"vkAllocateCommandBuffers has failed.");
196 puts(
"After vkAllocateCommandBuffers.");
201 printf(
"Errval: %d\n", (
mk).m_U0.m_alter.m_ptr->m_vkres);
202 assert(!
"vkAllocateCommandBuffers went null.");
208 ae2fVK_AnnSlpCreatDescPool_t v_poolmk;
209 ae2fVK_AnnSlpDescPoolCmdMk_t v_cmdmk;
211 ae2fVK_AnnSlpDescPool v_descpool;
212 ae2fVK_AnnSlpDescPoolCmd v_descpoolcmd;
217 puts(
"Before __ae2fVK_AnnSlpPredictPerformed_imp");
224 , (
mk.m_U0.m_alter.m_ptr[0])
225 , VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
232 , (
mk.m_U0.m_alter.m_ptr[0])
239 puts(
"After __ae2fVK_AnnSlpPredictPerformed_imp");
245 "Vulkan state number %d: \n"
246 ,
mk.m_U0.m_alter.m_ptr->m_vkres
249 printf(
"Error value %x, \n", err);
250 assert(!
"__ae2fVK_AnnSlpPredictPerformed_imp has failed.");
254 unless((v_descpoolcmd).m_vkdescset) {
255 assert(!
"__ae2fVK_AnnSlpPredictPerformed_imp went null.");
260 VkSubmitInfo submit_info = {
261 .sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,
262 .commandBufferCount = 1,
263 .pCommandBuffers = &vkcmdbuf,
269 * OutputMapped = NULL,
280 assert(!
"vkQueueSubmit failed");
284 if (vkQueueWaitIdle(vkqueue) != VK_SUCCESS) {
285 assert(!
"vkQueueWaitIdle failed");
289 puts(
"After vkQueueSubmit");
299 assert(!
"vkQueueSubmit failed");
303 if (vkQueueWaitIdle(vkqueue) != VK_SUCCESS) {
304 assert(!
"vkQueueWaitIdle failed");
308 puts(
"After vkQueueSubmit 2");
318 assert(!
"vkQueueSubmit failed");
322 if (vkQueueWaitIdle(vkqueue) != VK_SUCCESS) {
323 assert(!
"vkQueueWaitIdle failed");
327 puts(
"After vkQueueSubmit 3");
330 puts(
"After vkQueueWaitIdle");
336 ,
mk.m_U0.m_alter.m_ptr
341 assert(OutputMapped);
342 assert((
mk.m_U0.m_alter.m_ptr[0].m_vkres) == VK_SUCCESS);
344 printf(
"Inputmapped before predict: %f %f\n", InputMapped[0], InputMapped[1]);
345 printf(
"Outputmapped after prediction %f\n", OutputMapped[0]);
349 , *
mk.m_U0.m_alter.m_ptr
354 mk.m_U0.m_alter.m_ptr[0]
360 mk.m_U0.m_alter.m_ptr[0]
366 vkFreeCommandBuffers(vkdev, vkcmdpool, 1, &vkcmdbuf);
367 vkDestroyCommandPool(vkdev, vkcmdpool, NULL);
369 memset(
mk.m_U0.m_alter.m_ptr, 0,
sizeof(*
mk.m_U0.m_alter.m_ptr));
370 free(
mk.m_U0.m_alter.m_ptr);
372 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.