1#ifndef ae2fVK_Ann_Slp_c
3#if !__ae2f_MACRO_GENERATED
7#include <ae2fVK/Ann/Slp.h>
9#define ae2fVK_Ann_Slp_c
18#include <ae2fVK/Ann/SlpSHADER.auto.h>
21ae2f_MAC(CMDONERR, ) _ae2fVK_AnnSlpMkFndMemProp_imp(
22 unsigned char r_memtypeidx,
31 assert((
vkphydevmemprops).memoryTypeCount <= VK_MAX_MEMORY_TYPES &&
"Invalid memory type count.");
42 assert(!
"Wanted bit has not found is not supported");
48ae2f_MAC(CMDONERR, ) _ae2fVK_AnnSlpMkCreatBuf(
79 assert(!
"Failed vkCreateBuffer");
84 assert(!
"vkCreateBuffer went null");
90ae2f_MAC(CMDONERR, ) _ae2fVK_AnnSlpMkAllocVKMem_imp(
97 VkBufferCreateInfo v_vkbufcreatinfo,
100 const VkBufferUsageFlags vkbufuseflags,
101 const VkSharingMode vksharemode,
102 const VkDevice vkdev,
106 ae2f_opt const VkAllocationCallbacks* vkalloccalls,
109 const unsigned char memtypeidx_invalid_minus_one,
110 const VkMemoryPropertyFlagBits vkpropflag_req,
111 const VkPhysicalDeviceMemoryProperties vkphydevmemprops
131 , memtypeidx_invalid_minus_one
136 vkGetBufferMemoryRequirements(
143 assert(!
"Buffer size exceeds memory requirements");
149 (vkphydevmemprops).memoryHeaps[(vkphydevmemprops).memoryTypes[
v_memtypeidx].heapIndex].size)
151 assert(!
"Requirement size exceeds memory heap size.");
161 if(((r_vkres) = vkAllocateMemory(
168 assert(!
"vkAllocateMemory has failed.");
173 assert(!
"vkAllocateMemory went null.");
178 if(((r_vkres) = vkBindBufferMemory(
185 assert(!
"vkBindBufferMemory has failed.");
190ae2f_MAC(CMDONERR, ) _ae2fVK_AnnSlpMkLoadPipeCreat_imp(
206 assert(!
"Pipelayout went null");
217 (
pipecreat)[
idx_pipe].stage.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
225ae2f_MAC(CMDONERR, ) _ae2fVK_AnnSlpMkOnePipeLayoutVerbose_imp(
226 VkPushConstantRange v_vkpushconstrange,
231 const ae2fVK_eAnnSlpPipeLayouts
idx
233 ,
const VkAllocationCallbacks*
const vkalloccalls
234 ,
const VkDevice vkdev
237 (v_vkpushconstrange).size
241 (v_vkpushconstrange).size
253 assert(!
"vkCreatePipelineLayout has failed.");
259 assert(!
"vkCreatePipelineLayout went null");
267 ae2fVK_AnnSlpCreatDescPool_t v_descpool,
280 (v_descpool).m_U0.m_vkdescpoolcreatinfo
281 , (v_descpool).m_U0.m_vkdescpoolsz
294ae2f_MAC() _ae2fVK_AnnSlpCreatDescPoolVerbose_imp(
295 VkDescriptorPoolCreateInfo v_vkdescpoolcreatinfo,
298 VkDescriptorPool r_vkdescpool,
304 const VkDescriptorPoolCreateFlagBits i_vkdescpoolcreatflags,
305 const VkDescriptorType i_vkdesctype,
306 const uint32_t i_vkdescpoolsz_count,
307 const uint32_t i_vkmaxdescsets
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;
319 (v_vkdescpoolcreatinfo).maxSets = (i_vkmaxdescsets);
321 if(((r_vkres) = vkCreateDescriptorPool(
323 , &(v_vkdescpoolcreatinfo)
328 assert(!
"vkCreateDescriptorPool has failed.");
332 assert(!
"vkCreateDescriptorPool went null.");
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
360 ae2fVK_AnnSlpMk_t v_mk
374 ,
const VkDevice vkdev
376 ,
ae2f_opt VkAllocationCallbacks*
const vkalloccalls,
382 assert((vkdev) &&
"Vulkan device null check");
392 , ((
prm_offset) +
sizeof(ae2fVK_AnnSlp) -
sizeof(ae2f_AnnSlp))
398 if((v_mk).m_U0.m_base.m_ptr->m_Slp[0].m_inc > UINT32_MAX) {
399 assert(!
"Input size is too large");
404 if((v_mk).m_U0.m_base.m_ptr->m_Slp[0].m_outc > UINT32_MAX) {
405 assert(!
"Output size is too large");
410 (v_mk).m_U0.m_alter.m_ptr->m_vkdev = vkdev;
411 (v_mk).m_U0.m_alter.m_ptr->m_vkalloccalls = vkalloccalls;
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
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
426 , (v_mk).m_U2.m_vkmemreqs
428 , (v_mk).m_U0.m_alter.m_i
430 , VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
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
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
447 , (v_mk).m_U2.m_vkmemreqs
449 , (v_mk).m_U0.m_alter.m_i
451 , VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
455 (v_mk).m_U2.m_S0.m_glob.binding = 0;
457 (v_mk).m_U2.m_S0.m_glob.descriptorType
458 = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
460 (v_mk).m_U2.m_S0.m_glob.descriptorCount = 1;
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;
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;
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;
476 if(((v_mk).m_U0.m_alter.m_ptr->m_vkres = vkCreateDescriptorSetLayout(
478 , &(v_mk).m_U1.m_vkdescsetlayoutcreatinfo
480 , &(v_mk).m_U0.m_alter.m_ptr->m_vkdescsetlayout
483 assert(!
"vkCreateDescriptorSetLayout 0 has failed");
487 unless((v_mk).m_U0.m_alter.m_ptr->m_vkdescsetlayout[0]) {
488 assert(!
"vkCreateDescriptorSetLayout 0 went null");
493 (v_mk).m_U1.m_vkdescsetlayoutcreatinfo.bindingCount = 2;
495 if(((v_mk).m_U0.m_alter.m_ptr->m_vkres = vkCreateDescriptorSetLayout(
497 , &(v_mk).m_U1.m_vkdescsetlayoutcreatinfo
499 , &(v_mk).m_U0.m_alter.m_ptr->m_vkdescsetlayout
502 assert(!
"vkCreateDescriptorSetLayout 1 has failed");
506 unless((v_mk).m_U0.m_alter.m_ptr->m_vkdescsetlayout[1]) {
507 assert(!
"vkCreateDescriptorSetLayout 1 went null");
512 (v_mk).m_U1.m_vkpushconstrange.offset = 0;
513 (v_mk).m_U1.m_vkpushconstrange.stageFlags = VK_SHADER_STAGE_COMPUTE_BIT;
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;
526 (v_mk).m_U1.m_vkpushconstrange
527 , (v_mk).m_U2.m_vkpipelayoutcreatinfo
529 , (v_mk).m_U0.m_alter.m_ptr
536 if ((v_mk).m_U0.m_alter.m_ptr->m_vkres != VK_SUCCESS) {
537 assert(!
"__ae2fVK_AnnSlpMkOnePipeLayout_imp 0 has failed.");
543 (v_mk).m_U1.m_vkpushconstrange
544 , (v_mk).m_U2.m_vkpipelayoutcreatinfo
546 , (v_mk).m_U0.m_alter.m_ptr
553 if ((v_mk).m_U0.m_alter.m_ptr->m_vkres != VK_SUCCESS) {
554 assert(!
"__ae2fVK_AnnSlpMkOnePipeLayout_imp 1 has failed.");
559
560
561
562
563
564
565
566
567
568
569
570
571
572
579 (v_mk).m_U3.m_openclsrc_v
586 if((v_mk).m_reterr) {
587 assert(!
"__ae2fVK_AnnSlpMkCLSPV_imp has failed.");
591 assert((v_mk).m_U3.m_openclsrc);
594 (v_mk).m_U1.m_spirv = NULL;
595 (v_mk).m_U0.m_spirv_len = 0;
597 assert((v_mk).m_U0.m_alter.m_ptr);
599 switch(clspvCompileFromSourcesString(
603 const char** restrict
604 , (&(v_mk).m_U3.m_openclsrc)
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
617 assert(!
"clspvCompileFromSourcesString has failed.");
620 case CLSPV_OUT_OF_HOST_MEM:
622 assert(!
"clspvCompileFromSourcesString has failed its allocation.");
626 case CLSPV_INVALID_ARG:
628 assert(!
"clspvCompileFromSourcesString found arguments invalid.");
632 case CLSPV_SUCCESS:
break;
635 free((v_mk).m_U3.m_openclsrc);
636 free((v_mk).m_U2.m_log);
639 assert((v_mk).m_U0.m_base.m_ptr &&
"clspvCompileFromSourcesString has done something weird");
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;
650 if(((v_mk).m_U0.m_alter.m_ptr->m_vkres = vkCreateShaderModule(
652 , &(v_mk).m_U2.m_vkshadermodcreatinfo
654 , &(v_mk).m_U0.m_alter.m_ptr->m_vkshadermodule
657 assert(!
"vkCreateShaderModule has failed.");
661 unless((v_mk).m_U0.m_alter.m_ptr->m_vkshadermodule)
663 assert(!
"vkCreateShaderModule has produced NULL.");
668 free((v_mk).m_U1.m_spirv);
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
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
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
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
714 if (((v_mk).m_U0.m_alter.m_ptr->m_vkres
715 = vkCreateComputePipelines(
719 , (v_mk).m_U2.m_vkcomputepipecreatinfo
721 , (v_mk).m_U0.m_alter.m_ptr->m_vkpipeline
725 assert(!
"vkCreateComputePipelines has failed.");
732 if((v_mk).m_U0.m_alter.m_ptr->m_vkres) {
733 assert(!
"Vulkan result check for validation");
739
740
741
742ae2f_MAC() _ae2fVK_AnnSlpMkCLSPVVerbose_imp(
743 void* restrict r_handle,
748 const char* restrict i_third
751 if(!((r_handle) = calloc(
758 assert(!
"_ae2fVK_AnnSlpMkCLSPV_imp has failed.");
777 if((slp).m_vkres != VK_SUCCESS) {
778 assert(!
"Result flag is not valid.");
781 assert((slp).m_vkdev);
782 assert((slp).m_vkglobdevmem);
786 if(((slp).m_vkres = vkMapMemory(
788 , (slp).m_vkglobdevmem
794 assert(!
"vkMapMemory has failed.");
799 assert(!
"vkMapMemory went null.");
810ae2f_MAC(T,) _ae2fVK_AnnSlpMapRangedGeneric_imp(
811 VkMappedMemoryRange v_vkmapmemrange,
812 ae2fVK_AnnSlp iv_slp,
817 const VkDeviceSize i_off,
818 const VkDeviceSize i_sz
821 assert((iv_slp).m_vkres == VK_SUCCESS);
822 assert((iv_slp).m_vkdev);
823 assert((iv_slp).m_vkglobdevmem);
827 if(((iv_slp).m_vkres = vkMapMemory(
829 , (iv_slp).m_vkglobdevmem
830 , (v_vkmapmemrange).offset = (i_off)
831 , (v_vkmapmemrange).size = (i_sz)
837 assert(!
"vkMapMemory has failed.");
842 assert(!
"vkMapMemory went null.");
847 (v_vkmapmemrange).memory = (iv_slp).m_vkglobdevmem;
848 (v_vkmapmemrange).pNext = NULL;
849 (v_vkmapmemrange).sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
851 if (((iv_slp).m_vkres = vkInvalidateMappedMemoryRanges(
857 assert(!
"vkInvalidateMappedMemoryRanges has failed.");
862 unless((iv_slp).m_vkres == VK_SUCCESS) {
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);
875ae2f_MAC() _ae2fVK_AnnSlpUnMapRanged_imp(
877 ae2fVK_AnnSlp vi_slp,
878 const VkDeviceSize i_off,
879 const VkDeviceSize i_sz
882 assert((vi_slp).m_vkres == VK_SUCCESS);
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;
891 if (((vi_slp).m_vkres = vkFlushMappedMemoryRanges(
897 assert(!
"vkFlushMappedMemoryRanges has failed.");
906 const ae2fVK_AnnSlp block
909 assert((block).m_vkdev &&
"Double free is suspected.");
911 if((block).m_vkdev) {
912 if((block).m_vkglobbuf) {
915 , (block).m_vkglobbuf
916 , (block).m_vkalloccalls
920 if((block).m_vklocbuf) {
924 , (block).m_vkalloccalls
928 if((block).m_vkglobdevmem) {
931 , (block).m_vkglobdevmem
932 , (block).m_vkalloccalls
936 if((block).m_vklocdevmem) {
939 , (block).m_vklocdevmem
940 , (block).m_vkalloccalls
944 if((block).m_vkpipeline[0]) {
947 , (block).m_vkpipeline[0]
948 , (block).m_vkalloccalls
952 if((block).m_vkpipeline[1]) {
955 , (block).m_vkpipeline[1]
956 , (block).m_vkalloccalls
960 if((block).m_vkpipeline[2]) {
963 , (block).m_vkpipeline[2]
964 , (block).m_vkalloccalls
968 if((block).m_vkpipeline[3]) {
971 , (block).m_vkpipeline[3]
972 , (block).m_vkalloccalls
976 if((block).m_vkdescsetlayout[0]) {
977 vkDestroyDescriptorSetLayout(
979 , (block).m_vkdescsetlayout[0]
980 , (block).m_vkalloccalls
984 if((block).m_vkdescsetlayout[1]) {
985 vkDestroyDescriptorSetLayout(
987 , (block).m_vkdescsetlayout[1]
988 , (block).m_vkalloccalls
992 if((block).m_vkpipelayout[0]) {
993 vkDestroyPipelineLayout(
995 , (block).m_vkpipelayout[0]
996 , (block).m_vkalloccalls
1000 if((block).m_vkpipelayout[1]) {
1001 vkDestroyPipelineLayout(
1003 , (block).m_vkpipelayout[1]
1004 , (block).m_vkalloccalls
1008 if((block).m_vkpipelayout[2]) {
1009 vkDestroyPipelineLayout(
1011 , (block).m_vkpipelayout[2]
1012 , (block).m_vkalloccalls
1016 if((block).m_vkshadermodule) {
1017 vkDestroyShaderModule(
1019 , (block).m_vkshadermodule
1020 , (block).m_vkalloccalls
1027ae2f_MAC() _ae2fVK_AnnSlpWBUnMap_imp(
1029 ae2fVK_AnnSlp vi_slp
1054 assert((ir_ptrweight));
1067 assert(!
"Got null pointer from slp");
1080 *(r_err) |= (v_err);
1085ae2f_MAC() _ae2fVK_AnnSlpIOUnMap_imp(
1087 ae2fVK_AnnSlp vi_slp
1114 if((slp) && (ir_ptrinp)) {
1127 assert(!
"Got null pointer from slp");
1140 *(r_err) |= (v_err);
1144ae2f_MAC() _ae2fVK_AnnSlpDeltaUnMap_imp(
1146 ae2fVK_AnnSlp vi_slp
1168 if((slp) && (ir_ptrdelta)) {
1179 assert(!
"Got null pointer from slp");
1184 assert(!
"__ae2fVK_AnnSlpMapRangedGeneric_imp has failed.");
1185 (r_err) && (*(r_err) |= (v_err));
1189ae2f_MAC() _ae2fVK_AnnSlpGoalUnMap_imp(
1191 ae2fVK_AnnSlp vi_slp
1211 if((slp) && (ir_ptrgoal)) {
1222 assert(!
"Got null pointer from slp");
1227 assert(!
"__ae2fVK_AnnSlpMapRangedGeneric_imp has failed.");
1228 (r_err) && (*(r_err) |= (v_err));
void ae2f_AnnAct_t(ae2f_float_t *ret, ae2f_float_t x)
Customisable activasion function type.
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.
#define ae2f_const_cast(t, v)
#define ae2f_static_cast(t, v)
#define ae2f_reinterpret_cast(t, v)
#define unless(...)
Invokes when condition is false.
#define __ae2fVK_AnnSlpGoalSz(i_inp, i_out)
@ ae2fVK_eAnnSlpDescLayouts_kPredict
@ ae2fVK_eAnnSlpDescLayouts_kTrain
#define __ae2fVK_AnnSlpGoalOff(i_inp, i_out)
#define __ae2fVK_AnnSlpInpSz(i_inp,...)
VkMappedMemoryRange ae2fVK_AnnSlpMapRangedGeneric_t
#define __ae2fVK_AnnSlpBiasSz(i_inp, i_out)
#define __ae2fVK_AnnSlpWeightSz(i_inp, i_out)
#define __ae2fVK_AnnSlpInpOff(i_inp, i_out)
@ ae2fVK_eAnnSlpPipeLayouts_kTrain
@ ae2fVK_eAnnSlpPipeLayouts_kPredict
#define __ae2fVK_AnnSlpDeltaSz(i_inp, i_out)
#define __ae2fVK_AnnSlpWeightOff(i_inp, i_out)
#define __ae2fVK_AnnSlpGlobSz(i_inp, i_out)
#define __ae2fVK_AnnSlpOutSz(i_inp, i_out)
VkMappedMemoryRange ae2fVK_AnnSlpUnMap_t
@ ae2fVK_eAnnSlpPipes_kFit
@ ae2fVK_eAnnSlpPipes_kTrain
@ ae2fVK_eAnnSlpPipes_kPredict
@ ae2fVK_eAnnSlpPipes_LEN
This is the end of the value, which typically means the count of actual kernel used.
@ ae2fVK_eAnnSlpPipes_kFollow
#define __ae2fVK_AnnSlpDeltaOff(i_inp, i_out)
#define ae2fVK_AnnSlpSHADER
#define ae2f_errGlob_OK
The Operation you've wanted went successful.
#define ae2f_errGlob_ALLOC_FAILED
stdlib allocating functions (malloc, calloc, realloc) has been failed.
#define ae2f_errGlob_NFOUND
Found some errors, but not by parameters. The operation has failed.
#define ae2f_errGlob_WRONG_OPERATION
Found that parameter sent by programmer is invalid. The operation may have been ceased while the midd...
uint8_t ae2f_err_t
Informs that this number represents the error.
#define ae2f_errGlob_PTR_IS_NULL
Failed to refer the pointer either l-value inside the function.
#define ae2f_errGlob_IMP_NOT_FOUND
Failed to find the function on preprocessor which is callable for some reason No operation has beed d...
#define __ae2fVK_AnnSlpMkCLSPVVerbose_imp(r_handle, ir_err, i_first, i_second, i_third)
#define __ae2fVK_AnnSlpMapRangedGeneric_imp(T, v_vkmapmemrange, iv_slp, r_err, r_ptr, i_off, i_sz)
#define __ae2fVK_AnnSlpMkFndMemProp_imp(CMDONERR, r_memtypeidx, v_errbit, memtypeidx_invalid_minus_one, vkpropflag_req, vkphydevmemprops)
#define __ae2fVK_AnnSlpMkCreatBuf(CMDONERR, sz, r_vkres, r_vkbuf, v_vkbufcreatinfo, v_reterr, vkbufuseflags, vksharemode, vkdev, vkalloccalls)
#define __ae2fVK_AnnSlpMkLoadPipeCreat_imp(CMDONERR, r_reterr, pipecreat, pipelayout, shadermod, entrypoint, idx_pipe, idx_pipelayout)
#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)
#define __ae2fVK_AnnSlpMkOnePipeLayoutVerbose_imp(CMDONERR, v_vkpushconstrange, v_vkpipelayoutcreatinfo, r_reterr, iv_slpptr, idx, szrequired, vkalloccalls, vkdev)
#define __ae2fVK_AnnSlpUnMap_imp(slp)
#define __ae2fVK_AnnSlpUnMapRanged_imp(v_out, vi_slp, i_off, i_sz)
#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)
#define __ae2f_MACRO_GENERATED
#define __ae2f_AnnSlpMk_imp(...)
#define ae2f_MAC()
delta to delta
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t const uint32_t outc
VkComputePipelineCreateInfo *const VkPipelineLayout *const const VkShaderModule const char *const const ae2fVK_eAnnSlpPipes const ae2fVK_eAnnSlpPipeLayouts idx_pipelayout
ae2f_err_t const unsigned char memtypeidx_invalid_minus_one
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
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
VkResult VkBuffer VkDeviceMemory ae2f_err_t VkBufferCreateInfo VkMemoryAllocateInfo const VkBufferUsageFlags const VkSharingMode const VkDevice VkMemoryRequirements ae2f_opt const VkAllocationCallbacks unsigned char v_memtypeidx
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
ae2fVK_AnnSlp VkDescriptorPool ae2f_err_t const VkDescriptorPoolCreateFlagBits const VkDescriptorType i_vkdesctype
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
VkResult VkBuffer VkBufferCreateInfo ae2f_err_t const VkBufferUsageFlags const VkSharingMode const VkDevice vkdev
VkPipelineLayoutCreateInfo ae2f_err_t ae2fVK_AnnSlp *const iv_slpptr
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
VkResult VkBuffer VkBufferCreateInfo ae2f_err_t const VkBufferUsageFlags const VkSharingMode vksharemode
VkDescriptorPoolSize v_vkdescpoolsz
VkPipelineLayoutCreateInfo ae2f_err_t ae2fVK_AnnSlp *const const ae2fVK_eAnnSlpPipeLayouts const uint32_t szrequired
VkResult VkBuffer VkDeviceMemory ae2f_err_t VkBufferCreateInfo VkMemoryAllocateInfo v_memallocinfo
VkResult VkBuffer VkBufferCreateInfo ae2f_err_t const VkBufferUsageFlags const VkSharingMode const VkDevice ae2f_opt const VkAllocationCallbacks * vkalloccalls
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
ae2f_float_t *const ae2f_float_t *const bias_opt
VkResult VkBuffer VkBufferCreateInfo ae2f_err_t const VkBufferUsageFlags vkbufuseflags
ae2f_float_t *const weight_opt
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
VkDescriptorPoolSize VkDescriptorPool ae2f_err_t VkResult const VkDevice const VkAllocationCallbacks *const i_vkptrAlloc
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
VkComputePipelineCreateInfo *const VkPipelineLayout *const const VkShaderModule shadermod
VkComputePipelineCreateInfo *const VkPipelineLayout *const pipelayout
VkResult VkBuffer VkBufferCreateInfo v_vkbufcreatinfo
ae2f_err_t const unsigned char const VkMemoryPropertyFlagBits const VkPhysicalDeviceMemoryProperties vkphydevmemprops
ae2fVK_AnnSlp VkDescriptorPool r_vkdescpool
VkDescriptorPoolSize VkDescriptorPool ae2f_err_t VkResult const VkDevice i_vkdev
VkComputePipelineCreateInfo *const VkPipelineLayout *const const VkShaderModule const char *const entrypoint
VkPipelineLayoutCreateInfo v_vkpipelayoutcreatinfo
ae2f_err_t const unsigned char const VkMemoryPropertyFlagBits vkpropflag_req
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const cache_opt
VkPipelineLayoutCreateInfo ae2f_err_t r_reterr
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
VkComputePipelineCreateInfo *const pipecreat
ae2f_float_t *const ae2f_float_t *const ae2f_float_t *const const uint32_t inc
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
VkPipelineLayoutCreateInfo ae2f_err_t ae2fVK_AnnSlp *const const ae2fVK_eAnnSlpPipeLayouts idx
ae2fVK_AnnSlp VkDescriptorPool ae2f_err_t const VkDescriptorPoolCreateFlagBits i_vkdescpoolcreatflags
ae2fVK_AnnSlp VkDescriptorPool ae2f_err_t const VkDescriptorPoolCreateFlagBits const VkDescriptorType const uint32_t i_vkdescpoolsz_count
ae2f_err_t const char *restrict i_first
VkResult VkBuffer VkDeviceMemory r_vkdevmem
ae2f_err_t const char *restrict const char *restrict i_second
ae2fVK_AnnSlp VkDescriptorPool ae2f_err_t const VkDescriptorPoolCreateFlagBits const VkDescriptorType const uint32_t const uint32_t i_vkmaxdescsets
VkResult VkBuffer r_vkbuf
VkComputePipelineCreateInfo *const VkPipelineLayout *const const VkShaderModule const char *const const ae2fVK_eAnnSlpPipes idx_pipe
VkResult VkBuffer VkDeviceMemory ae2f_err_t VkBufferCreateInfo VkMemoryAllocateInfo const VkBufferUsageFlags const VkSharingMode const VkDevice VkMemoryRequirements v_vkmemreq
VkResult VkBuffer VkBufferCreateInfo ae2f_err_t v_reterr