28 ,
sizeof(s_lpModelLen) /
sizeof(s_lpModelLen[0])
34 , 0.1, 0.1, vkdev, vkphydevmemprops
38 "#define ACT_DERIV(lidx, r, output) { *(r) = (((output) + 1e-7) * (1.0 - (output) - 1e-7)); } \n"
39 "#define ACT(lidx, r, x) { *(r) = (1.0 / (1.0 + exp(-(x)))); } \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.");
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 __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)
Make MLP with OpenCL compute shader.