ae2f_docs
Slp.def.cc
Go to the documentation of this file.
1#ifndef ae2fVK_Ann_Slp_c
2
3#if !__ae2f_MACRO_GENERATED
4#include <ae2f/Macro.h>
5#endif
6
7#include <ae2fVK/Ann/Slp.h>
8
9#define ae2fVK_Ann_Slp_c
10
12#include <stdlib.h>
13#include <assert.h>
14#include <string.h>
15#define CMDONERR
16#endif
17
18#include <ae2fVK/Ann/SlpSHADER.auto.h>
19
20
21ae2f_MAC(CMDONERR, ) _ae2fVK_AnnSlpMkFndMemProp_imp(
22 unsigned char r_memtypeidx,
24 const unsigned char memtypeidx_invalid_minus_one,
25 const VkMemoryPropertyFlagBits vkpropflag_req,
26 const VkPhysicalDeviceMemoryProperties vkphydevmemprops
27 )
28{
29
30 assert(VK_MAX_MEMORY_TYPES <= memtypeidx_invalid_minus_one && "Invalid index does not do its thing.");
31 assert((vkphydevmemprops).memoryTypeCount <= VK_MAX_MEMORY_TYPES && "Invalid memory type count.");
32
33 for(
34 (r_memtypeidx) = (vkphydevmemprops).memoryTypeCount;
35 (r_memtypeidx)--
36 && (~((vkphydevmemprops).memoryTypes[(r_memtypeidx)].propertyFlags)
38 ;
39 );
40
41 if((r_memtypeidx) == (memtypeidx_invalid_minus_one)) {
42 assert(!"Wanted bit has not found is not supported");
45 }
46}
47
48ae2f_MAC(CMDONERR, ) _ae2fVK_AnnSlpMkCreatBuf(
49 const size_t sz,
50 VkResult r_vkres,
51 VkBuffer r_vkbuf,
52
53 VkBufferCreateInfo v_vkbufcreatinfo,
55
56 const VkBufferUsageFlags vkbufuseflags,
57 const VkSharingMode vksharemode,
58 const VkDevice vkdev,
59 ae2f_opt const VkAllocationCallbacks* vkalloccalls
60 )
61{
62 (v_vkbufcreatinfo).sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
63 (v_vkbufcreatinfo).pNext = 0;
65 (v_vkbufcreatinfo).pQueueFamilyIndices = 0;
66 (v_vkbufcreatinfo).queueFamilyIndexCount = 0;
68 (v_vkbufcreatinfo).flags = 0;
69 (v_vkbufcreatinfo).size = (sz);
70
71 if(((r_vkres) = vkCreateBuffer(
72 vkdev
75 , &(r_vkbuf)
76 )) != VK_SUCCESS
77 )
78 {
79 assert(!"Failed vkCreateBuffer");
81 }
82
84 assert(!"vkCreateBuffer went null");
87 }
88}
89
90ae2f_MAC(CMDONERR, ) _ae2fVK_AnnSlpMkAllocVKMem_imp(
91 const size_t sz,
92 VkResult r_vkres,
93 VkBuffer r_vkbuf,
94 VkDeviceMemory r_vkdevmem,
95
96 ae2f_err_t v_errbit,
97 VkBufferCreateInfo v_vkbufcreatinfo,
98 VkMemoryAllocateInfo v_memallocinfo,
99
100 const VkBufferUsageFlags vkbufuseflags,
101 const VkSharingMode vksharemode,
102 const VkDevice vkdev,
103
104 VkMemoryRequirements v_vkmemreq,
105
106 ae2f_opt const VkAllocationCallbacks* vkalloccalls,
107
108 unsigned char v_memtypeidx,
109 const unsigned char memtypeidx_invalid_minus_one,
110 const VkMemoryPropertyFlagBits vkpropflag_req,
111 const VkPhysicalDeviceMemoryProperties vkphydevmemprops
112 )
113{
116 , sz
117 , r_vkres
118 , r_vkbuf
119 , v_vkbufcreatinfo
120 , v_errbit
121 , vkbufuseflags
122 , vksharemode
123 , vkdev
124 , vkalloccalls
125 );
126
130 , v_errbit
131 , memtypeidx_invalid_minus_one
132 , vkpropflag_req
133 , vkphydevmemprops
134 );
135
136 vkGetBufferMemoryRequirements(
137 vkdev
138 , r_vkbuf
139 , &(v_vkmemreq)
140 );
141
142 unless((v_vkmemreq).size >= (v_vkbufcreatinfo).size) {
143 assert(!"Buffer size exceeds memory requirements");
144 (v_errbit) |= ae2f_errGlob_IMP_NOT_FOUND;
145 CMDONERR;
146 }
147
149 (vkphydevmemprops).memoryHeaps[(vkphydevmemprops).memoryTypes[v_memtypeidx].heapIndex].size)
150 {
151 assert(!"Requirement size exceeds memory heap size.");
152 (v_errbit) |= ae2f_errGlob_IMP_NOT_FOUND;
153 CMDONERR;
154 }
155
156 (v_memallocinfo).sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
157 (v_memallocinfo).allocationSize = (v_vkmemreq).size;
158 (v_memallocinfo).memoryTypeIndex = (v_memtypeidx);
159 (v_memallocinfo).pNext = NULL;
160
161 if(((r_vkres) = vkAllocateMemory(
162 vkdev
163 , &(v_memallocinfo)
164 , (vkalloccalls)
165 , &(r_vkdevmem)
166 )) != VK_SUCCESS)
167 {
168 assert(!"vkAllocateMemory has failed.");
169 CMDONERR;
170 }
171
173 assert(!"vkAllocateMemory went null.");
174 (v_errbit) |= ae2f_errGlob_ALLOC_FAILED;
175 CMDONERR;
176 }
177
178 if(((r_vkres) = vkBindBufferMemory(
179 vkdev
180 , r_vkbuf
181 , r_vkdevmem
182 , 0
183 )) != VK_SUCCESS)
184 {
185 assert(!"vkBindBufferMemory has failed.");
186 CMDONERR;
187 }
188}
189
190ae2f_MAC(CMDONERR, ) _ae2fVK_AnnSlpMkLoadPipeCreat_imp(
191 ae2f_err_t r_reterr,
192 VkComputePipelineCreateInfo* const pipecreat
193 , VkPipelineLayout* const pipelayout
194 , const VkShaderModule shadermod
195 , const char* const entrypoint
196 , const ae2fVK_eAnnSlpPipes idx_pipe
197 , const ae2fVK_eAnnSlpPipeLayouts idx_pipelayout
198 )
199{
200 memset(
201 &(pipecreat)[(idx_pipe)], 0
202 , sizeof((pipecreat)[0])
203 );
204
206 assert(!"Pipelayout went null");
207 (r_reterr) |= ae2f_errGlob_ALLOC_FAILED;
208 CMDONERR;
209 }
210
211 (pipecreat)[idx_pipe].sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
213 (pipecreat)[idx_pipe].pNext = NULL;
214 (pipecreat)[idx_pipe].basePipelineHandle = NULL;
215 (pipecreat)[idx_pipe].basePipelineIndex = -1;
216 (pipecreat)[idx_pipe].flags = 0;
217 (pipecreat)[idx_pipe].stage.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
218 (pipecreat)[idx_pipe].stage.stage = VK_SHADER_STAGE_COMPUTE_BIT;
219 (pipecreat)[idx_pipe].stage.module = (shadermod);
220 (pipecreat)[idx_pipe].stage.pName = entrypoint;
221 (pipecreat)[idx_pipe].stage.pSpecializationInfo = NULL;
222 (pipecreat)[idx_pipe].stage.flags = 0;
223}
224
225ae2f_MAC(CMDONERR, ) _ae2fVK_AnnSlpMkOnePipeLayoutVerbose_imp(
226 VkPushConstantRange v_vkpushconstrange,
227 VkPipelineLayoutCreateInfo v_vkpipelayoutcreatinfo,
229 ae2fVK_AnnSlp* const iv_slpptr,
230
231 const ae2fVK_eAnnSlpPipeLayouts idx
232 , const uint32_t szrequired
233 , const VkAllocationCallbacks* const vkalloccalls
234 , const VkDevice vkdev
235 )
236{
237 (v_vkpushconstrange).size
238 = (szrequired);
239
240 if((szrequired) & 0b11) {
241 (v_vkpushconstrange).size
242 = ((szrequired) + 4)
243 & ae2f_static_cast(uint32_t, ~0b11);
244 }
245
246 if(((iv_slpptr)->m_vkres = vkCreatePipelineLayout(
247 vkdev
249 , (vkalloccalls)
250 , &(iv_slpptr)->m_vkpipelayout[idx]
251 )) != VK_SUCCESS)
252 {
253 assert(!"vkCreatePipelineLayout has failed.");
254 CMDONERR;
255 }
256
257 unless((iv_slpptr)->m_vkpipelayout[idx])
258 {
259 assert(!"vkCreatePipelineLayout went null");
261 CMDONERR;
262 }
263}
264
265
266ae2f_MAC() _ae2fVK_AnnSlpCreatDescPool_imp(
267 ae2fVK_AnnSlpCreatDescPool_t v_descpool,
268 ae2fVK_AnnSlp iv_slp,
269
270 VkDescriptorPool r_vkdescpool,
271 ae2f_err_t r_reterr,
272
273 const VkDescriptorPoolCreateFlagBits i_vkdescpoolcreatflags,
274 const VkDescriptorType i_vkdesctype,
275 const uint32_t i_vkdescpoolsz_count,
276 const uint32_t i_vkmaxdescsets
277 )
278{
280 (v_descpool).m_U0.m_vkdescpoolcreatinfo
281 , (v_descpool).m_U0.m_vkdescpoolsz
283 , r_reterr
284 , (iv_slp).m_vkres
285 , (iv_slp).m_vkdev
286 , (iv_slp).m_vkalloccalls
291 );
292}
293
294ae2f_MAC() _ae2fVK_AnnSlpCreatDescPoolVerbose_imp(
295 VkDescriptorPoolCreateInfo v_vkdescpoolcreatinfo,
296 VkDescriptorPoolSize v_vkdescpoolsz,
297
298 VkDescriptorPool r_vkdescpool,
299 ae2f_err_t r_reterr,
300 VkResult r_vkres,
301
302 const VkDevice i_vkdev,
303 const VkAllocationCallbacks* const i_vkptrAlloc,
304 const VkDescriptorPoolCreateFlagBits i_vkdescpoolcreatflags,
305 const VkDescriptorType i_vkdesctype,
306 const uint32_t i_vkdescpoolsz_count,
307 const uint32_t i_vkmaxdescsets
308 )
309{
310 (v_vkdescpoolsz).type = (i_vkdesctype);
311 (v_vkdescpoolsz).descriptorCount = (i_vkdescpoolsz_count);
312
313 (v_vkdescpoolcreatinfo).sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
314 (v_vkdescpoolcreatinfo).flags = 0;
315 (v_vkdescpoolcreatinfo).pNext = NULL;
316 (v_vkdescpoolcreatinfo).flags = (i_vkdescpoolcreatflags);
317 (v_vkdescpoolcreatinfo).poolSizeCount = 1;
318 (v_vkdescpoolcreatinfo).pPoolSizes = &(v_vkdescpoolsz);
319 (v_vkdescpoolcreatinfo).maxSets = (i_vkmaxdescsets);
320
321 if(((r_vkres) = vkCreateDescriptorPool(
322 (i_vkdev)
323 , &(v_vkdescpoolcreatinfo)
324 , (i_vkptrAlloc)
325 , &(r_vkdescpool)
326 )) != VK_SUCCESS)
327 {
328 assert(!"vkCreateDescriptorPool has failed.");
329 }
330
331 unless((r_vkdescpool)) {
332 assert(!"vkCreateDescriptorPool went null.");
333 (r_reterr) |= ae2f_errGlob_ALLOC_FAILED;
334 }
335}
336
337/**
338 * @brief
339 * Make slp with OpenCL compute shader.
340 *
341 * @details
342 * The shader itself is incomplete. \n
343 * For using it you will need to define three macros as function. \n
344 * Below is the required snippet.
345 *
346 * #define ACT(const ae2f_float_t) -> ae2f_float_t \n
347 * #define ACT_DERIV(const ae2f_float_t) -> ae2f_float_t \n
348 * #define LOSS_DERIV(
349 * ae2f_float_t* retval
350 * const ae2f_float_t* const out
351 * , const ae2f_float_t* const out_desired
352 * , const size_t index
353 * , const size_t length_out_goal
354 * );
355 *
356 * @param vkcldeclaration
357 * @param vkcldefinition
358 * */
359ae2f_MAC() _ae2fVK_AnnSlpMk_imp(
360 ae2fVK_AnnSlpMk_t v_mk
364 , const uint32_t inc
365 , const uint32_t outc
366 , ae2f_opt const size_t prm_offset
367 , ae2f_opt const size_t extra
373
374 , const VkDevice vkdev
375 , const VkPhysicalDeviceMemoryProperties vkmemprops
376 , ae2f_opt VkAllocationCallbacks* const vkalloccalls,
377
378 ae2f_opt const char* const vkcldeclaration
379 , ae2f_opt const char* const vkcldefinition
380)
381{
382 assert((vkdev) && "Vulkan device null check");
383 assert((lossderiv) && "lossderiv must be specified.");
384
385 (v_mk).m_reterr = ae2f_errGlob_OK;
386
387 do {
389 (v_mk).m_U0.m_base, (weight_opt)
390 , (bias_opt), (cache_opt)
391 , (inc), (outc)
392 , ((prm_offset) + sizeof(ae2fVK_AnnSlp) - sizeof(ae2f_AnnSlp))
393 , (extra)
394 , (act), (actderiv), (lossderiv)
396 );
397
398 if((v_mk).m_U0.m_base.m_ptr->m_Slp[0].m_inc > UINT32_MAX) {
399 assert(!"Input size is too large");
400 (v_mk).m_reterr |= ae2f_errGlob_WRONG_OPERATION;
401 break;
402 }
403
404 if((v_mk).m_U0.m_base.m_ptr->m_Slp[0].m_outc > UINT32_MAX) {
405 assert(!"Output size is too large");
406 (v_mk).m_reterr |= ae2f_errGlob_WRONG_OPERATION;
407 break;
408 }
409
410 (v_mk).m_U0.m_alter.m_ptr->m_vkdev = vkdev;
411 (v_mk).m_U0.m_alter.m_ptr->m_vkalloccalls = vkalloccalls;
412
413 /** Allocate the global memory */
415 break;
417 , (v_mk).m_U0.m_alter.m_ptr->m_vkres
418 , (v_mk).m_U0.m_alter.m_ptr->m_vkglobbuf
419 , (v_mk).m_U0.m_alter.m_ptr->m_vkglobdevmem
420 , (v_mk).m_reterr
421 , (v_mk).m_U1.m_vkbufcreatinfo
422 , (v_mk).m_U1.m_vkmemallocinfo
423 , VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
424 , VK_SHARING_MODE_EXCLUSIVE
425 , (vkdev)
426 , (v_mk).m_U2.m_vkmemreqs
427 , (vkalloccalls)
428 , (v_mk).m_U0.m_alter.m_i /* v_memtypeidx */
429 , UCHAR_MAX
430 , VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
431 , vkmemprops
432 );
433
434 /** the local memory */
436 break;
437 , sizeof(ae2f_float_t) * ((outc))
438 , (v_mk).m_U0.m_alter.m_ptr->m_vkres
439 , (v_mk).m_U0.m_alter.m_ptr->m_vklocbuf
440 , (v_mk).m_U0.m_alter.m_ptr->m_vklocdevmem
441 , (v_mk).m_reterr
442 , (v_mk).m_U1.m_vkbufcreatinfo
443 , (v_mk).m_U1.m_vkmemallocinfo
444 , VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
445 , VK_SHARING_MODE_EXCLUSIVE
446 , (vkdev)
447 , (v_mk).m_U2.m_vkmemreqs
448 , (vkalloccalls)
449 , (v_mk).m_U0.m_alter.m_i /* v_memtypeidx */
450 , UCHAR_MAX
451 , VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
452 , vkmemprops
453 );
454
455 (v_mk).m_U2.m_S0.m_glob.binding = 0;
456
457 (v_mk).m_U2.m_S0.m_glob.descriptorType
458 = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
459
460 (v_mk).m_U2.m_S0.m_glob.descriptorCount = 1;
461
462 (v_mk).m_U2.m_S0.m_glob.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT;
463 (v_mk).m_U2.m_S0.m_glob.pImmutableSamplers = NULL;
464
465 (v_mk).m_U2.m_S0.m_loc = (v_mk).m_U2.m_S0.m_glob;
466 (v_mk).m_U2.m_S0.m_loc.binding = 1;
467
468
469 (v_mk).m_U1.m_vkdescsetlayoutcreatinfo.pBindings = (v_mk).m_U2.m_vkdescsetlayoutbind;
470 (v_mk).m_U1.m_vkdescsetlayoutcreatinfo.bindingCount = 1;
471 (v_mk).m_U1.m_vkdescsetlayoutcreatinfo.flags = 0;
472 (v_mk).m_U1.m_vkdescsetlayoutcreatinfo.pNext = NULL;
473 (v_mk).m_U1.m_vkdescsetlayoutcreatinfo.sType
474 = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
475
476 if(((v_mk).m_U0.m_alter.m_ptr->m_vkres = vkCreateDescriptorSetLayout(
477 vkdev
478 , &(v_mk).m_U1.m_vkdescsetlayoutcreatinfo
479 , (vkalloccalls)
480 , &(v_mk).m_U0.m_alter.m_ptr->m_vkdescsetlayout
482 )) != VK_SUCCESS) {
483 assert(!"vkCreateDescriptorSetLayout 0 has failed");
484 break;
485 }
486
487 unless((v_mk).m_U0.m_alter.m_ptr->m_vkdescsetlayout[0]) {
488 assert(!"vkCreateDescriptorSetLayout 0 went null");
489 (v_mk).m_reterr |= ae2f_errGlob_ALLOC_FAILED;
490 break;
491 }
492
493 (v_mk).m_U1.m_vkdescsetlayoutcreatinfo.bindingCount = 2;
494
495 if(((v_mk).m_U0.m_alter.m_ptr->m_vkres = vkCreateDescriptorSetLayout(
496 vkdev
497 , &(v_mk).m_U1.m_vkdescsetlayoutcreatinfo
498 , (vkalloccalls)
499 , &(v_mk).m_U0.m_alter.m_ptr->m_vkdescsetlayout
501 )) != VK_SUCCESS) {
502 assert(!"vkCreateDescriptorSetLayout 1 has failed");
503 break;
504 }
505
506 unless((v_mk).m_U0.m_alter.m_ptr->m_vkdescsetlayout[1]) {
507 assert(!"vkCreateDescriptorSetLayout 1 went null");
508 (v_mk).m_reterr |= ae2f_errGlob_ALLOC_FAILED;
509 break;
510 }
511
512 (v_mk).m_U1.m_vkpushconstrange.offset = 0;
513 (v_mk).m_U1.m_vkpushconstrange.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT;
514
515 (v_mk).m_U2.m_vkpipelayoutcreatinfo.sType
516 = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
517 (v_mk).m_U2.m_vkpipelayoutcreatinfo.setLayoutCount = 1;
518 (v_mk).m_U2.m_vkpipelayoutcreatinfo.pushConstantRangeCount = 1;
519 (v_mk).m_U2.m_vkpipelayoutcreatinfo.pPushConstantRanges
520 = &(v_mk).m_U1.m_vkpushconstrange;
521 (v_mk).m_U2.m_vkpipelayoutcreatinfo.pSetLayouts
522 = (v_mk).m_U0.m_alter.m_ptr->m_vkdescsetlayout;
523
525 break,
526 (v_mk).m_U1.m_vkpushconstrange
527 , (v_mk).m_U2.m_vkpipelayoutcreatinfo
528 , (v_mk).m_reterr
529 , (v_mk).m_U0.m_alter.m_ptr
531 , sizeof(size_t)
532 , vkalloccalls
533 , vkdev
534 );
535
536 if ((v_mk).m_U0.m_alter.m_ptr->m_vkres != VK_SUCCESS) {
537 assert(!"__ae2fVK_AnnSlpMkOnePipeLayout_imp 0 has failed.");
538 break;
539 }
540
542 break,
543 (v_mk).m_U1.m_vkpushconstrange
544 , (v_mk).m_U2.m_vkpipelayoutcreatinfo
545 , (v_mk).m_reterr
546 , (v_mk).m_U0.m_alter.m_ptr
548 , sizeof(ae2f_float_t) * 2
549 , vkalloccalls
550 , vkdev
551 );
552
553 if ((v_mk).m_U0.m_alter.m_ptr->m_vkres != VK_SUCCESS) {
554 assert(!"__ae2fVK_AnnSlpMkOnePipeLayout_imp 1 has failed.");
555 break;
556 }
557
558 /***
559 *
560 * FIXME: You need to know if this is truely needed.
561 __ae2fVK_AnnSlpMkOnePipeLayout_imp(
562 break;
563 , v_mk
564 , ae2fVK_eAnnSlpPipeLayouts_kFit
565 , sizeof(ae2f_float_t) * 2
566 , vkalloccalls, vkdev
567 );
568
569 if ((v_mk).m_U0.m_alter.m_ptr->m_vkres != VK_SUCCESS) {
570 assert(!"__ae2fVK_AnnSlpMkOnePipeLayout_imp 2 has failed.");
571 break;
572 } */
573
574 assert((vkcldeclaration) && "vkcldeclaration is null");
575 assert((vkcldefinition) && "vkcldefinition is null");
576
577 {
579 (v_mk).m_U3.m_openclsrc_v
580 , (v_mk).m_reterr
584 );
585
586 if((v_mk).m_reterr) {
587 assert(!"__ae2fVK_AnnSlpMkCLSPV_imp has failed.");
588 break;
589 }
590
591 assert((v_mk).m_U3.m_openclsrc);
592
593 (v_mk).m_U2.m_log = ae2f_static_cast(char*, NULL);
594 (v_mk).m_U1.m_spirv = NULL;
595 (v_mk).m_U0.m_spirv_len = 0;
596
597 assert((v_mk).m_U0.m_alter.m_ptr);
598
599 switch(clspvCompileFromSourcesString(
600 1
601 , ae2f_reinterpret_cast(const size_t*, NULL)
603 const char** restrict
604 , (&(v_mk).m_U3.m_openclsrc)
605 )
606 ,""
607 "-pod-pushconstant "
608 "-cl-fast-relaxed-math "
609 "-cl-single-precision-constant"
610 , &(v_mk).m_U1.m_spirv_c
611 , &(v_mk).m_U0.m_spirv_len
612 , &(v_mk).m_U2.m_log
613 ))
614 {
615 case CLSPV_ERROR:
616 (v_mk).m_reterr |= ae2f_errGlob_NFOUND;
617 assert(!"clspvCompileFromSourcesString has failed.");
618
619 break;
620 case CLSPV_OUT_OF_HOST_MEM:
621 (v_mk).m_reterr |= ae2f_errGlob_ALLOC_FAILED;
622 assert(!"clspvCompileFromSourcesString has failed its allocation.");
623
624 break;
625
626 case CLSPV_INVALID_ARG:
627 (v_mk).m_reterr |= ae2f_errGlob_WRONG_OPERATION;
628 assert(!"clspvCompileFromSourcesString found arguments invalid.");
629
630 break;
631
632 case CLSPV_SUCCESS: break;
633 }
634
635 free((v_mk).m_U3.m_openclsrc);
636 free((v_mk).m_U2.m_log);
637 }
638
639 assert((v_mk).m_U0.m_base.m_ptr && "clspvCompileFromSourcesString has done something weird");
640
641 (v_mk).m_U2.m_vkshadermodcreatinfo.pNext = NULL;
642 (v_mk).m_U2.m_vkshadermodcreatinfo.codeSize
643 = (v_mk).m_U0.m_spirv_len;
644 (v_mk).m_U2.m_vkshadermodcreatinfo.pCode
645 = (v_mk).m_U1.m_spirv_u32;
646 (v_mk).m_U2.m_vkshadermodcreatinfo.flags = 0;
647 (v_mk).m_U2.m_vkshadermodcreatinfo.sType
648 = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
649
650 if(((v_mk).m_U0.m_alter.m_ptr->m_vkres = vkCreateShaderModule(
651 vkdev
652 , &(v_mk).m_U2.m_vkshadermodcreatinfo
653 , (vkalloccalls)
654 , &(v_mk).m_U0.m_alter.m_ptr->m_vkshadermodule
655 )) != VK_SUCCESS)
656 {
657 assert(!"vkCreateShaderModule has failed.");
658 break;
659 }
660
661 unless((v_mk).m_U0.m_alter.m_ptr->m_vkshadermodule)
662 {
663 assert(!"vkCreateShaderModule has produced NULL.");
664 (v_mk).m_reterr |= ae2f_errGlob_ALLOC_FAILED;
665 break;
666 }
667
668 free((v_mk).m_U1.m_spirv);
669
671 break
672 , (v_mk).m_reterr
673 , (v_mk).m_U2.m_vkcomputepipecreatinfo
674 , (v_mk).m_U0.m_alter.m_ptr->m_vkpipelayout
675 , (v_mk).m_U0.m_alter.m_ptr->m_vkshadermodule
676 , "kFollow"
679 );
680
682 break
683 , (v_mk).m_reterr
684 , (v_mk).m_U2.m_vkcomputepipecreatinfo
685 , (v_mk).m_U0.m_alter.m_ptr->m_vkpipelayout
686 , (v_mk).m_U0.m_alter.m_ptr->m_vkshadermodule
687 , "kFit"
690 );
691
693 break
694 , (v_mk).m_reterr
695 , (v_mk).m_U2.m_vkcomputepipecreatinfo
696 , (v_mk).m_U0.m_alter.m_ptr->m_vkpipelayout
697 , (v_mk).m_U0.m_alter.m_ptr->m_vkshadermodule
698 , "kPredict"
701 );
702
704 break
705 , (v_mk).m_reterr
706 , (v_mk).m_U2.m_vkcomputepipecreatinfo
707 , (v_mk).m_U0.m_alter.m_ptr->m_vkpipelayout
708 , (v_mk).m_U0.m_alter.m_ptr->m_vkshadermodule
709 , "kTrain"
712 );
713
714 if (((v_mk).m_U0.m_alter.m_ptr->m_vkres
715 = vkCreateComputePipelines(
716 (vkdev)
717 , VK_NULL_HANDLE
719 , (v_mk).m_U2.m_vkcomputepipecreatinfo
720 , (vkalloccalls)
721 , (v_mk).m_U0.m_alter.m_ptr->m_vkpipeline
722 )
723 ) != VK_SUCCESS)
724 {
725 assert(!"vkCreateComputePipelines has failed.");
726 (v_mk).m_reterr |= ae2f_errGlob_NFOUND;
727 break;
728 }
729 } while(0);
730
731 assert((v_mk).m_reterr == ae2f_errGlob_OK && "Returned error flag has set up");
732 if((v_mk).m_U0.m_alter.m_ptr->m_vkres) {
733 assert(!"Vulkan result check for validation");
735 }
736}
737
738/**
739 * @param r_handle must be destroyed by free().
740 * @param i_second_raw must be guaranteed to be a raw stirng.
741 * */
742ae2f_MAC() _ae2fVK_AnnSlpMkCLSPVVerbose_imp(
743 void* restrict r_handle,
745
746 const char* restrict i_first,
747 const char* restrict i_second,
748 const char* restrict i_third
749 )
750{
751 if(!((r_handle) = calloc(
752 1
753 , strlen(i_first) + sizeof(
755 ) + strlen(i_third)
756 )))
757 {
758 assert(!"_ae2fVK_AnnSlpMkCLSPV_imp has failed.");
760 }
761
762 else {
763 strcpy(ae2f_reinterpret_cast(char*, r_handle), i_first);
764 strcat(ae2f_reinterpret_cast(char*, r_handle), i_second);
765 strcat(ae2f_reinterpret_cast(char*, r_handle), i_third);
766 }
767}
768
769/** Map's usually for output */
770ae2f_MAC() _ae2fVK_AnnSlpMap_imp(
771 ae2f_err_t r_err,
772
773 ae2fVK_AnnSlp slp,
774 ae2f_float_t** restrict const data
775 )
776{
777 if((slp).m_vkres != VK_SUCCESS) {
778 assert(!"Result flag is not valid.");
779 }
780
781 assert((slp).m_vkdev);
782 assert((slp).m_vkglobdevmem);
783 assert(r_err == ae2f_errGlob_OK && "Previous status is bad.");
784
785 do {
786 if(((slp).m_vkres = vkMapMemory(
787 (slp).m_vkdev
788 , (slp).m_vkglobdevmem
789 , 0, VK_WHOLE_SIZE
790 , 0
791 , ae2f_reinterpret_cast(void** restrict, data)
792 )) != VK_SUCCESS)
793 {
794 assert(!"vkMapMemory has failed.");
795 break;
796 }
797
798 unless(*(data)) {
799 assert(!"vkMapMemory went null.");
800 (r_err) |= ae2f_errGlob_ALLOC_FAILED;
801 break;
802 }
803 } while(0);
804}
805
807#define T int
808#endif
809
810ae2f_MAC(T,) _ae2fVK_AnnSlpMapRangedGeneric_imp(
811 VkMappedMemoryRange v_vkmapmemrange,
812 ae2fVK_AnnSlp iv_slp,
813
814 ae2f_err_t r_err,
815 T* r_ptr,
816
817 const VkDeviceSize i_off,
818 const VkDeviceSize i_sz
819 )
820{
821 assert((iv_slp).m_vkres == VK_SUCCESS);
822 assert((iv_slp).m_vkdev);
823 assert((iv_slp).m_vkglobdevmem);
824 assert((r_err) == ae2f_errGlob_OK && "Previous status is bad.");
825
826 do {
827 if(((iv_slp).m_vkres = vkMapMemory(
828 (iv_slp).m_vkdev
829 , (iv_slp).m_vkglobdevmem
830 , (v_vkmapmemrange).offset = (i_off)
831 , (v_vkmapmemrange).size = (i_sz)
832 ,0
833 , ae2f_reinterpret_cast(void**, &(r_ptr))
834 )
835 ) != VK_SUCCESS)
836 {
837 assert(!"vkMapMemory has failed.");
838 break;
839 }
840
841 unless((r_ptr)) {
842 assert(!"vkMapMemory went null.");
843 (r_err) |= ae2f_errGlob_ALLOC_FAILED;
844 break;
845 }
846
847 (v_vkmapmemrange).memory = (iv_slp).m_vkglobdevmem;
848 (v_vkmapmemrange).pNext = NULL;
849 (v_vkmapmemrange).sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
850
851 if (((iv_slp).m_vkres = vkInvalidateMappedMemoryRanges(
852 (iv_slp).m_vkdev
853 , 1
854 , &(v_vkmapmemrange)
855 )) != VK_SUCCESS)
856 {
857 assert(!"vkInvalidateMappedMemoryRanges has failed.");
858 break;
859 }
860 } while(0);
861
862 unless((iv_slp).m_vkres == VK_SUCCESS) {
863 (r_err) |= ae2f_errGlob_NFOUND;
864 }
865}
866
867#undef T
868
869ae2f_MAC() _ae2fVK_AnnSlpUnMap_imp(const ae2fVK_AnnSlp slp) {
870 assert((slp).m_vkdev);
871 assert((slp).m_vkglobdevmem);
872 vkUnmapMemory((slp).m_vkdev, (slp).m_vkglobdevmem);
873}
874
875ae2f_MAC() _ae2fVK_AnnSlpUnMapRanged_imp(
877 ae2fVK_AnnSlp vi_slp,
878 const VkDeviceSize i_off,
879 const VkDeviceSize i_sz
880 )
881{
882 assert((vi_slp).m_vkres == VK_SUCCESS);
883
884 (v_out).memory = (vi_slp).m_vkglobdevmem;
885 (v_out).offset = (i_off);
886 (v_out).pNext = NULL;
887 (v_out).size = (i_sz);
888 (v_out).sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
889
890 do {
891 if (((vi_slp).m_vkres = vkFlushMappedMemoryRanges(
892 (vi_slp).m_vkdev
893 , 1
894 , &(v_out)
895 )) != VK_SUCCESS)
896 {
897 assert(!"vkFlushMappedMemoryRanges has failed.");
898 break;
899 }
900
902 } while(0);
903}
904
905ae2f_MAC() _ae2fVK_AnnSlpClean_imp(
906 const ae2fVK_AnnSlp block
907 )
908{
909 assert((block).m_vkdev && "Double free is suspected.");
910
911 if((block).m_vkdev) {
912 if((block).m_vkglobbuf) {
913 vkDestroyBuffer(
914 (block).m_vkdev
915 , (block).m_vkglobbuf
916 , (block).m_vkalloccalls
917 );
918 }
919
920 if((block).m_vklocbuf) {
921 vkDestroyBuffer(
922 (block).m_vkdev
923 , (block).m_vklocbuf
924 , (block).m_vkalloccalls
925 );
926 }
927
928 if((block).m_vkglobdevmem) {
929 vkFreeMemory(
930 (block).m_vkdev
931 , (block).m_vkglobdevmem
932 , (block).m_vkalloccalls
933 );
934 }
935
936 if((block).m_vklocdevmem) {
937 vkFreeMemory(
938 (block).m_vkdev
939 , (block).m_vklocdevmem
940 , (block).m_vkalloccalls
941 );
942 }
943
944 if((block).m_vkpipeline[0]) {
945 vkDestroyPipeline(
946 (block).m_vkdev
947 , (block).m_vkpipeline[0]
948 , (block).m_vkalloccalls
949 );
950 }
951
952 if((block).m_vkpipeline[1]) {
953 vkDestroyPipeline(
954 (block).m_vkdev
955 , (block).m_vkpipeline[1]
956 , (block).m_vkalloccalls
957 );
958 }
959
960 if((block).m_vkpipeline[2]) {
961 vkDestroyPipeline(
962 (block).m_vkdev
963 , (block).m_vkpipeline[2]
964 , (block).m_vkalloccalls
965 );
966 }
967
968 if((block).m_vkpipeline[3]) {
969 vkDestroyPipeline(
970 (block).m_vkdev
971 , (block).m_vkpipeline[3]
972 , (block).m_vkalloccalls
973 );
974 }
975
976 if((block).m_vkdescsetlayout[0]) {
977 vkDestroyDescriptorSetLayout(
978 (block).m_vkdev
979 , (block).m_vkdescsetlayout[0]
980 , (block).m_vkalloccalls
981 );
982 }
983
984 if((block).m_vkdescsetlayout[1]) {
985 vkDestroyDescriptorSetLayout(
986 (block).m_vkdev
987 , (block).m_vkdescsetlayout[1]
988 , (block).m_vkalloccalls
989 );
990 }
991
992 if((block).m_vkpipelayout[0]) {
993 vkDestroyPipelineLayout(
994 (block).m_vkdev
995 , (block).m_vkpipelayout[0]
996 , (block).m_vkalloccalls
997 );
998 }
999
1000 if((block).m_vkpipelayout[1]) {
1001 vkDestroyPipelineLayout(
1002 (block).m_vkdev
1003 , (block).m_vkpipelayout[1]
1004 , (block).m_vkalloccalls
1005 );
1006 }
1007
1008 if((block).m_vkpipelayout[2]) {
1009 vkDestroyPipelineLayout(
1010 (block).m_vkdev
1011 , (block).m_vkpipelayout[2]
1012 , (block).m_vkalloccalls
1013 );
1014 }
1015
1016 if((block).m_vkshadermodule) {
1017 vkDestroyShaderModule(
1018 (block).m_vkdev
1019 , (block).m_vkshadermodule
1020 , (block).m_vkalloccalls
1021 );
1022 }
1023 }
1024}
1025
1026/** @brief Unmaps Weight and Bias */
1027ae2f_MAC() _ae2fVK_AnnSlpWBUnMap_imp(
1029 ae2fVK_AnnSlp vi_slp
1030 )
1031{
1033 v_out
1034 , vi_slp
1035 , __ae2fVK_AnnSlpWeightOff((vi_slp).m_slp.m_Slp[0].m_inc, (vi_slp).m_slp.m_Slp[0].m_outc)
1036 , (__ae2fVK_AnnSlpWeightSz((vi_slp).m_slp.m_Slp[0].m_inc, (vi_slp).m_slp.m_Slp[0].m_outc)
1037 + __ae2fVK_AnnSlpBiasSz((vi_slp).m_slp.m_Slp[0].m_inc, (vi_slp).m_slp.m_Slp[0].m_outc))
1038
1039 );
1040}
1041
1042/** @brief Maps Weight and Bias */
1043ae2f_MAC() _ae2fVK_AnnSlpWBMap(
1044 ae2f_err_t* r_err,
1045 ae2fVK_AnnSlp* slp
1046 , ae2f_float_t** restrict const ir_ptrweight
1047 , ae2f_float_t** restrict const ir_ptrbias
1048 )
1049{
1050 ae2f_err_t v_err = 0;
1052
1053 if(slp) {
1054 assert((ir_ptrweight));
1055
1057 ae2f_float_t
1058 , v_map
1059 , (slp)[0]
1060 , *(r_err)
1061 , *(ir_ptrweight)
1062 , __ae2fVK_AnnSlpWeightOff((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc)
1063 , (__ae2fVK_AnnSlpWeightSz((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc)
1064 + __ae2fVK_AnnSlpBiasSz((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc))
1065 );
1066 } else {
1067 assert(!"Got null pointer from slp");
1068 (v_err) |= ae2f_errGlob_PTR_IS_NULL;
1069 }
1070
1071 if(ae2f_errGlob_OK == v_err) {
1072 if(ir_ptrbias) {
1073 *(ir_ptrbias) =
1074 *(ir_ptrweight)
1075 + __ae2fVK_AnnSlpWeightSz((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc);
1076 }
1077 }
1078
1079 if(r_err) {
1080 *(r_err) |= (v_err);
1081 assert(v_err == ae2f_errGlob_OK);
1082 }
1083}
1084
1085ae2f_MAC() _ae2fVK_AnnSlpIOUnMap_imp(
1087 ae2fVK_AnnSlp vi_slp
1088 )
1089{
1090
1092 v_out
1093 , vi_slp
1094 , __ae2fVK_AnnSlpInpOff((vi_slp).m_slp.m_Slp[0].m_inc, (vi_slp).m_slp.m_Slp[0].m_outc)
1095 , __ae2fVK_AnnSlpInpSz((vi_slp).m_slp.m_Slp[0].m_inc, (vi_slp).m_slp.m_Slp[0].m_outc)
1096 + __ae2fVK_AnnSlpOutSz((vi_slp).m_slp.m_Slp[0].m_inc, (vi_slp).m_slp.m_Slp[0].m_outc)
1097 );
1098}
1099
1100
1101
1102ae2f_MAC() _ae2fVK_AnnSlpIOMap(
1103 ae2f_err_t* r_err,
1104 ae2fVK_AnnSlp* slp
1105 , ae2f_opt ae2f_float_t** restrict const ir_ptrinp
1106 , ae2f_opt ae2f_float_t** restrict const ir_ptrout
1107 )
1108{
1109 ae2f_err_t v_err = 0;
1111
1112 assert(ir_ptrinp);
1113
1114 if((slp) && (ir_ptrinp)) {
1115
1117 ae2f_float_t
1118 , v_map
1119 , (*(slp))
1120 , v_err
1121 , (*(ir_ptrinp))
1122 , __ae2fVK_AnnSlpInpOff((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc)
1123 , __ae2fVK_AnnSlpInpSz((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc)
1124 + __ae2fVK_AnnSlpOutSz((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc)
1125 );
1126 } else {
1127 assert(!"Got null pointer from slp");
1128 v_err |= ae2f_errGlob_PTR_IS_NULL;
1129 }
1130
1131 if(ae2f_errGlob_OK == v_err) {
1132 if(ir_ptrout) {
1133 *(ir_ptrout) =
1134 (*(ir_ptrinp))
1135 + __ae2fVK_AnnSlpInpSz((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc);
1136 }
1137 }
1138
1139 if(r_err) {
1140 *(r_err) |= (v_err);
1141 }
1142}
1143
1144ae2f_MAC() _ae2fVK_AnnSlpDeltaUnMap_imp(
1146 ae2fVK_AnnSlp vi_slp
1147
1148 )
1149{
1150
1152 v_out
1153 , vi_slp
1154 , __ae2fVK_AnnSlpDeltaOff((vi_slp).m_slp.m_Slp[0].m_inc, (vi_slp).m_slp.m_Slp[0].m_outc)
1155 , __ae2fVK_AnnSlpDeltaSz((vi_slp).m_slp.m_Slp[0].m_inc, (vi_slp).m_slp.m_Slp[0].m_outc)
1156 );
1157}
1158
1159ae2f_MAC() _ae2fVK_AnnSlpDeltaMap(
1160 ae2f_err_t* r_err,
1161 ae2fVK_AnnSlp* slp
1162 , ae2f_opt ae2f_float_t** restrict const ir_ptrdelta
1163 )
1164{
1165 ae2f_err_t v_err = 0;
1167
1168 if((slp) && (ir_ptrdelta)) {
1170 ae2f_float_t
1171 , v_map
1172 , *(slp)
1173 , *(r_err)
1174 , *(ir_ptrdelta)
1175 , __ae2fVK_AnnSlpDeltaOff((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc)
1176 , __ae2fVK_AnnSlpDeltaSz((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc)
1177 );
1178 } else {
1179 assert(!"Got null pointer from slp");
1180 v_err |= ae2f_errGlob_PTR_IS_NULL;
1181 }
1182
1183 if((v_err)) {
1184 assert(!"__ae2fVK_AnnSlpMapRangedGeneric_imp has failed.");
1185 (r_err) && (*(r_err) |= (v_err));
1186 }
1187}
1188
1189ae2f_MAC() _ae2fVK_AnnSlpGoalUnMap_imp(
1191 ae2fVK_AnnSlp vi_slp
1192 )
1193{
1195 v_out
1196 , vi_slp
1197 , __ae2fVK_AnnSlpGoalOff((vi_slp).m_slp.m_Slp[0].m_inc, (vi_slp).m_slp.m_Slp[0].m_outc)
1198 , __ae2fVK_AnnSlpGoalSz((vi_slp).m_slp.m_Slp[0].m_inc, (vi_slp).m_slp.m_Slp[0].m_outc)
1199 );
1200}
1201
1202ae2f_MAC() _ae2fVK_AnnSlpGoalMap(
1203 ae2f_err_t* r_err,
1204 ae2fVK_AnnSlp* slp
1205 , ae2f_opt ae2f_float_t** restrict const ir_ptrgoal
1206 )
1207{
1208 ae2f_err_t v_err = 0;
1210
1211 if((slp) && (ir_ptrgoal)) {
1213 ae2f_float_t
1214 , v_map
1215 , *(slp)
1216 , *(r_err)
1217 , (*ir_ptrgoal)
1218 , __ae2fVK_AnnSlpGoalOff((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc)
1219 , __ae2fVK_AnnSlpGoalSz((slp)->m_slp.m_Slp[0].m_inc, (slp)->m_slp.m_Slp[0].m_outc)
1220 );
1221 } else {
1222 assert(!"Got null pointer from slp");
1223 v_err |= ae2f_errGlob_PTR_IS_NULL;
1224 }
1225
1226 if(v_err) {
1227 assert(!"__ae2fVK_AnnSlpMapRangedGeneric_imp has failed.");
1228 (r_err) && (*(r_err) |= (v_err));
1229 }
1230}
1231
1232#endif
void ae2f_AnnAct_t(ae2f_float_t *ret, ae2f_float_t x)
Customisable activasion function type.
Definition Act.h:19
void ae2f_AnnLoss_t(ae2f_float_t *ret, const ae2f_float_t *out, const ae2f_float_t *goal, size_t index, size_t count)
Specify the way of calculating loss.
Definition Act.h:29
#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
ae2f_float ae2f_float_t
Definition Float.h:38
#define ae2f_opt
Definition Guide.h:26
#define __ae2fVK_AnnSlpGoalSz(i_inp, i_out)
Definition Slp.core.h:172
@ ae2fVK_eAnnSlpDescLayouts_kPredict
Definition Slp.core.h:48
@ ae2fVK_eAnnSlpDescLayouts_kTrain
Definition Slp.core.h:49
#define __ae2fVK_AnnSlpGoalOff(i_inp, i_out)
Definition Slp.core.h:179
#define __ae2fVK_AnnSlpInpSz(i_inp,...)
Definition Slp.core.h:169
VkMappedMemoryRange ae2fVK_AnnSlpMapRangedGeneric_t
Definition Slp.core.h:152
#define __ae2fVK_AnnSlpBiasSz(i_inp, i_out)
Definition Slp.core.h:168
#define __ae2fVK_AnnSlpWeightSz(i_inp, i_out)
Definition Slp.core.h:167
#define __ae2fVK_AnnSlpInpOff(i_inp, i_out)
Definition Slp.core.h:176
@ ae2fVK_eAnnSlpPipeLayouts_kTrain
Definition Slp.core.h:42
@ ae2fVK_eAnnSlpPipeLayouts_kPredict
Definition Slp.core.h:41
#define __ae2fVK_AnnSlpDeltaSz(i_inp, i_out)
Definition Slp.core.h:171
#define __ae2fVK_AnnSlpWeightOff(i_inp, i_out)
Definition Slp.core.h:174
#define __ae2fVK_AnnSlpGlobSz(i_inp, i_out)
Definition Slp.core.h:181
#define __ae2fVK_AnnSlpOutSz(i_inp, i_out)
Definition Slp.core.h:170
VkMappedMemoryRange ae2fVK_AnnSlpUnMap_t
Definition Slp.core.h:152
@ ae2fVK_eAnnSlpPipes_kFit
Definition Slp.core.h:28
@ ae2fVK_eAnnSlpPipes_kTrain
Definition Slp.core.h:27
@ ae2fVK_eAnnSlpPipes_kPredict
Definition Slp.core.h:25
@ ae2fVK_eAnnSlpPipes_LEN
This is the end of the value, which typically means the count of actual kernel used.
Definition Slp.core.h:31
@ ae2fVK_eAnnSlpPipes_kFollow
Definition Slp.core.h:26
#define __ae2fVK_AnnSlpDeltaOff(i_inp, i_out)
Definition Slp.core.h:178
#define ae2f_MAC_BUILD
Definition Util.h:4
#define ae2fVK_AnnSlpSHADER
#define T
#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 __ae2fVK_AnnSlpMkCLSPVVerbose_imp(r_handle, ir_err, i_first, i_second, i_third)
Definition Slp.auto.h:760
#define __ae2fVK_AnnSlpMapRangedGeneric_imp(T, v_vkmapmemrange, iv_slp, r_err, r_ptr, i_off, i_sz)
Definition Slp.auto.h:834
#define __ae2fVK_AnnSlpMkFndMemProp_imp(CMDONERR, r_memtypeidx, v_errbit, memtypeidx_invalid_minus_one, vkpropflag_req, vkphydevmemprops)
Definition Slp.auto.h:35
#define __ae2fVK_AnnSlpMkCreatBuf(CMDONERR, sz, r_vkres, r_vkbuf, v_vkbufcreatinfo, v_reterr, vkbufuseflags, vksharemode, vkdev, vkalloccalls)
Definition Slp.auto.h:66
#define __ae2fVK_AnnSlpMkLoadPipeCreat_imp(CMDONERR, r_reterr, pipecreat, pipelayout, shadermod, entrypoint, idx_pipe, idx_pipelayout)
Definition Slp.auto.h:209
#define __ae2fVK_AnnSlpCreatDescPoolVerbose_imp(v_vkdescpoolcreatinfo, v_vkdescpoolsz, r_vkdescpool, r_reterr, r_vkres, i_vkdev, i_vkptrAlloc, i_vkdescpoolcreatflags, i_vkdesctype, i_vkdescpoolsz_count, i_vkmaxdescsets)
Definition Slp.auto.h:322
#define __ae2fVK_AnnSlpMkOnePipeLayoutVerbose_imp(CMDONERR, v_vkpushconstrange, v_vkpipelayoutcreatinfo, r_reterr, iv_slpptr, idx, szrequired, vkalloccalls, vkdev)
Definition Slp.auto.h:248
#define __ae2fVK_AnnSlpUnMap_imp(slp)
Definition Slp.auto.h:895
#define CMDONERR
Definition Slp.auto.h:27
#define __ae2fVK_AnnSlpUnMapRanged_imp(v_out, vi_slp, i_off, i_sz)
Definition Slp.auto.h:907
#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:110
#define __ae2f_MACRO_GENERATED
Definition Mlp.auto.h:2
#define __ae2f_AnnSlpMk_imp(...)
Definition Slp.auto.h:232
#define ae2f_MAC()
delta to delta
Definition mac.h:4
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t outc
Definition Slp.def.cc:366
VkComputePipelineCreateInfo *const VkPipelineLayout *const const VkShaderModule const char *const const ae2fVK_eAnnSlpPipes const ae2fVK_eAnnSlpPipeLayouts idx_pipelayout
Definition Slp.def.cc:199
ae2f_err_t const unsigned char memtypeidx_invalid_minus_one
Definition Slp.def.cc:24
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t ae2f_opt const size_t ae2f_opt const size_t ae2f_opt ae2f_AnnAct_t *const ae2f_opt ae2f_AnnAct_t *const ae2f_AnnLoss_t *const ae2f_float_t ae2f_float_t learningrate_bias
Definition Slp.def.cc:374
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t ae2f_opt const size_t ae2f_opt const size_t extra
Definition Slp.def.cc:368
VkResult VkBuffer VkDeviceMemory ae2f_err_t VkBufferCreateInfo VkMemoryAllocateInfo const VkBufferUsageFlags const VkSharingMode const VkDevice VkMemoryRequirements ae2f_opt const VkAllocationCallbacks unsigned char v_memtypeidx
Definition Slp.def.cc:108
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t ae2f_opt const size_t ae2f_opt const size_t ae2f_opt ae2f_AnnAct_t *const ae2f_opt ae2f_AnnAct_t *const ae2f_AnnLoss_t *const ae2f_float_t ae2f_float_t const VkDevice const VkPhysicalDeviceMemoryProperties vkmemprops
Definition Slp.def.cc:376
ae2fVK_AnnSlp VkDescriptorPool ae2f_err_t const VkDescriptorPoolCreateFlagBits const VkDescriptorType i_vkdesctype
Definition Slp.def.cc:274
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t ae2f_opt const size_t ae2f_opt const size_t ae2f_opt ae2f_AnnAct_t *const ae2f_opt ae2f_AnnAct_t *const actderiv
Definition Slp.def.cc:370
VkResult VkBuffer VkBufferCreateInfo ae2f_err_t const VkBufferUsageFlags const VkSharingMode const VkDevice vkdev
Definition Slp.def.cc:58
VkPipelineLayoutCreateInfo ae2f_err_t ae2fVK_AnnSlp *const iv_slpptr
Definition Slp.def.cc:229
VkResult r_vkres
Definition Slp.def.cc:50
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t ae2f_opt const size_t ae2f_opt const size_t ae2f_opt ae2f_AnnAct_t *const ae2f_opt ae2f_AnnAct_t *const ae2f_AnnLoss_t *const ae2f_float_t ae2f_float_t const VkDevice const VkPhysicalDeviceMemoryProperties ae2f_opt VkAllocationCallbacks *const ae2f_opt const char *const ae2f_opt const char *const vkcldefinition
Definition Slp.def.cc:381
VkResult VkBuffer VkBufferCreateInfo ae2f_err_t const VkBufferUsageFlags const VkSharingMode vksharemode
Definition Slp.def.cc:57
VkDescriptorPoolSize v_vkdescpoolsz
Definition Slp.def.cc:296
VkPipelineLayoutCreateInfo ae2f_err_t ae2fVK_AnnSlp *const const ae2fVK_eAnnSlpPipeLayouts const uint32_t szrequired
Definition Slp.def.cc:233
VkResult VkBuffer VkDeviceMemory ae2f_err_t VkBufferCreateInfo VkMemoryAllocateInfo v_memallocinfo
Definition Slp.def.cc:98
VkResult VkBuffer VkBufferCreateInfo ae2f_err_t const VkBufferUsageFlags const VkSharingMode const VkDevice ae2f_opt const VkAllocationCallbacks * vkalloccalls
Definition Slp.def.cc:61
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t ae2f_opt const size_t prm_offset
Definition Slp.def.cc:367
ae2f_float_t *const ae2f_float_t *const bias_opt
Definition Slp.def.cc:363
VkResult VkBuffer VkBufferCreateInfo ae2f_err_t const VkBufferUsageFlags vkbufuseflags
Definition Slp.def.cc:56
ae2f_float_t *const weight_opt
Definition Slp.def.cc:362
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t ae2f_opt const size_t ae2f_opt const size_t ae2f_opt ae2f_AnnAct_t *const ae2f_opt ae2f_AnnAct_t *const ae2f_AnnLoss_t *const ae2f_float_t ae2f_float_t const VkDevice const VkPhysicalDeviceMemoryProperties ae2f_opt VkAllocationCallbacks *const ae2f_opt const char *const vkcldeclaration
Definition Slp.def.cc:379
VkDescriptorPoolSize VkDescriptorPool ae2f_err_t VkResult const VkDevice const VkAllocationCallbacks *const i_vkptrAlloc
Definition Slp.def.cc:303
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t ae2f_opt const size_t ae2f_opt const size_t ae2f_opt ae2f_AnnAct_t *const ae2f_opt ae2f_AnnAct_t *const ae2f_AnnLoss_t *const lossderiv
Definition Slp.def.cc:371
VkComputePipelineCreateInfo *const VkPipelineLayout *const const VkShaderModule shadermod
Definition Slp.def.cc:195
VkComputePipelineCreateInfo *const VkPipelineLayout *const pipelayout
Definition Slp.def.cc:194
VkResult VkBuffer VkBufferCreateInfo v_vkbufcreatinfo
Definition Slp.def.cc:53
ae2f_err_t const unsigned char const VkMemoryPropertyFlagBits const VkPhysicalDeviceMemoryProperties vkphydevmemprops
Definition Slp.def.cc:28
ae2fVK_AnnSlp VkDescriptorPool r_vkdescpool
Definition Slp.def.cc:270
VkDescriptorPoolSize VkDescriptorPool ae2f_err_t VkResult const VkDevice i_vkdev
Definition Slp.def.cc:302
VkComputePipelineCreateInfo *const VkPipelineLayout *const const VkShaderModule const char *const entrypoint
Definition Slp.def.cc:196
VkPipelineLayoutCreateInfo v_vkpipelayoutcreatinfo
Definition Slp.def.cc:227
ae2f_err_t const unsigned char const VkMemoryPropertyFlagBits vkpropflag_req
Definition Slp.def.cc:25
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const cache_opt
Definition Slp.def.cc:364
VkPipelineLayoutCreateInfo ae2f_err_t r_reterr
Definition Slp.def.cc:228
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t ae2f_opt const size_t ae2f_opt const size_t ae2f_opt ae2f_AnnAct_t *const ae2f_opt ae2f_AnnAct_t *const ae2f_AnnLoss_t *const ae2f_float_t learningrate
Definition Slp.def.cc:372
ae2f_err_t v_errbit
Definition Slp.def.cc:23
VkComputePipelineCreateInfo *const pipecreat
Definition Slp.def.cc:193
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t inc
Definition Slp.def.cc:365
ae2fVK_AnnSlp iv_slp
Definition Slp.def.cc:268
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t ae2f_opt const size_t ae2f_opt const size_t ae2f_opt ae2f_AnnAct_t *const act
Definition Slp.def.cc:369
VkPipelineLayoutCreateInfo ae2f_err_t ae2fVK_AnnSlp *const const ae2fVK_eAnnSlpPipeLayouts idx
Definition Slp.def.cc:232
ae2fVK_AnnSlp VkDescriptorPool ae2f_err_t const VkDescriptorPoolCreateFlagBits i_vkdescpoolcreatflags
Definition Slp.def.cc:273
ae2fVK_AnnSlp VkDescriptorPool ae2f_err_t const VkDescriptorPoolCreateFlagBits const VkDescriptorType const uint32_t i_vkdescpoolsz_count
Definition Slp.def.cc:275
ae2f_err_t ir_err
Definition Slp.def.cc:744
ae2f_err_t const char *restrict i_first
Definition Slp.def.cc:746
VkResult VkBuffer VkDeviceMemory r_vkdevmem
Definition Slp.def.cc:94
ae2f_err_t const char *restrict const char *restrict i_second
Definition Slp.def.cc:747
ae2fVK_AnnSlp VkDescriptorPool ae2f_err_t const VkDescriptorPoolCreateFlagBits const VkDescriptorType const uint32_t const uint32_t i_vkmaxdescsets
Definition Slp.def.cc:278
VkResult VkBuffer r_vkbuf
Definition Slp.def.cc:51
VkComputePipelineCreateInfo *const VkPipelineLayout *const const VkShaderModule const char *const const ae2fVK_eAnnSlpPipes idx_pipe
Definition Slp.def.cc:197
VkResult VkBuffer VkDeviceMemory ae2f_err_t VkBufferCreateInfo VkMemoryAllocateInfo const VkBufferUsageFlags const VkSharingMode const VkDevice VkMemoryRequirements v_vkmemreq
Definition Slp.def.cc:104
VkResult VkBuffer VkBufferCreateInfo ae2f_err_t v_reterr
Definition Slp.def.cc:54