
    i(                        S SK r S SKJr  S SKJrJrJrJrJr  S SK	J
s  Js  Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJr  S S	KJr  S S
KJ r   S SK!J"r"  S SK#J$r$J%r%  S SK&J'r'  S SK(J)r)  S SK*J+r+J,r,J-r-J.r.  S SK/J0r0  S SK1J2r2J3r3  S SK4J5r5J6r6  S SK7J8r8J9r9  S SK:J;r;  S SK<J=r=  S SK>J?r?  S SK@JArA  SrB " S S\?5      rCS\-S\-4S jrDS\\,   S\\E\4   4S jrF\ " S  S!\+5      5       rGg)"    N)partial)AnyCallableDictfinalList)AddmmToLinearTransform)FuseClampPass)FuseViewCopyTransform)ViewCopyToSqueezeUnsqueezePass)FoldQDQPassFuseQuantizedOpsTransforminsert_prepack_nodesInsertDtypePromotionPassRemoveRedundantOpsTransformSqueezeUnsqueezeInputsTagMemoryMetaPass)FusePatternsPass)RemoveAssertsTransform)VkGraphBuilder)VkMemoryLayoutVkStorageType)serialize_vulkan_graph)FuseBatchNormPass)BackendDetailsCompileSpecExportedProgramPreprocessResult)DelegateMappingBuilder)greedyMemoryPlanningAlgorithmSuite)
ExportPassPassBase)MemoryPlanningPassSpecPropPass)ConstraintBasedSymShapeEvalPass)
_transform)Verifier)&unsafe_remove_auto_functionalized_passi  c                       \ rS rSrSrS rSrg)_any_op<   TRAININGc                     [         4$ )N)r   )selfs    k/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/backends/vulkan/vulkan_preprocess.pyallowed_op_types_any_op.allowed_op_types@   s
    {     N)__name__
__module____qualname____firstlineno__dialectr1   __static_attributes__r4   r3   r0   r+   r+   <   s    Gr3   r+   programreturnc                    U H  n[        U[        5      (       a.  [        US5      (       a  UR                  U R                  5        MF  [        [        U5      [        5      (       d  [        [        U5      [        5      (       aZ  [        US5      (       a  Xl	        [        X[        /S9n [        U[        5      (       a  UR                  X R                  5        M  M  U" U 5      n M     U $ )Nrun_exported_program)override_verifiers)
isinstancer$   hasattrr>   graph_module
issubclasstyper"   r#   r?   r'   r+   r%   update_placeholder_tensor_specs)r;   passesps      r0   apply_passesrI   E   s    a+,,E1B1BEE'&&'Q,,
47H0M0M
 q-..&-# 	JG !\**11';O;OP + jG' * Nr3   compile_specsc                    0 nU  GHu  nUR                   S:X  a3  [        [        R                  UR                  SS95      XR                   '   UR                   S:X  a3  [        [        R                  UR                  SS95      XR                   '   UR                   S;   a*  [        R                  UR                  SS9XR                   '   UR                   S:X  a*  [        R                  UR                  SS9XR                   '   UR                   S:X  a*  [        R                  UR                  SS9XR                   '   UR                   S:X  d  GMK  [        R                  UR                  SS9XR                   '   GMx     U$ )	Nstorage_type_overridelittle)	byteordermemory_layout_override>   texture_limits_xtexture_limits_ytexture_limits_zskip_tag_memory_metadatadowncast_64_bit
force_fp16)keyr   int
from_bytesvaluer   bool)rJ   optionsspecs      r0   parse_compile_specr]   ^   s'   G88.. -tzzX>!GHH 88// .tzzX>!GHH 88SS #tzzX NGHH8811 $

h OGHH88(( $

h OGHH88|# $

h OGHH' . Nr3   c                   :    \ rS rSr\S\S\\   S\4S j5       r	Sr
g)VulkanBackendz   r;   module_compile_specr<   c                 ~   [        U5      n[        R                  " [        R                  5      nUR                  SS5      (       a  SUS'   SUS'   SUS'   UR                  SUS   5      nUR                  SUS   5      nUR                  S	US   5      nXVU4nUR                  S
[        R                  5      n	UR                  S[        R                  5      n
UR                  SS5      nUR                  SS5      n[        U5      n[        U[        5       [        U5      [        5       [        5       [        5       [!        5       [#        5       [%        5       ['        5       [)        5       [+        5       [-        5       /5      n[        U[/        5       /5      n[        U[1        5       [2        /5      nUR                  SS5      (       d  [        U[5        UU	U
US9/5      n[7        5       /nUR                  SS5      (       dA  [9        [:        SS9n[=        U/S9nSUR>                  l         URC                  [E        US95        [        X5      n[G        U[I        SS9UUS9nURK                  5       n[M        [O        UURP                  / 5      URR                  RU                  5       URV                  RY                  5       S9$ )Nsmall_texture_limitsFi   r         rP   rQ   rR   rL   rO   rT   TrU   rS   )default_storage_typedefault_memory_layoutrU   skip_memory_planning)allow_overlapping_allocations)	algo_list)memory_planning_algo)generated_identifiers)rT   rU   )processed_bytesdebug_handle_mapdata_store_output)-r]   copydeepcopyutilsDEFAULT_TEXTURE_LIMITSgetr   
TEXTURE_3Dr   TENSOR_WIDTH_PACKEDr)   rI   r	   r   r   r   r
   r   r   r   r   r   r   r%   r   r   r   r&   r   r    r!   rC   encounter_to_out_var_failureappendr$   r   r   build_graphr   r   const_tensorsdelegate_mapping_builderget_delegate_mappingnamed_data_storeget_named_data_store_output)clsr;   ra   compile_optionsdefault_texture_limitslimits_xlimits_ylimits_ztexture_limitsrf   rg   rT   rU   final_passesgreedy_memory_planningmem_planning_suitegraph_buildervk_graphs                     r0   
preprocessVulkanBackend.preprocess|   s    --@A!%u/K/K!L 5u==(,"1%(,"1%(,"1%"&&'9;QRS;TU"&&'9;QRS;TU"&&'9;QRS;TU"h7.22#]%=%= 
 !0 3 3$n&H&H!
 *--.?F$((u=
8A
 &(!'*&((* "+-)+&(%'.0
, w(89 &($
 ""#=uEE"%&-A.C#-	
G ,-
 ""#95AA%,e&" ">12" AEG  ="8JK w5&">+!	
 !,,.2-55r +CCXXZ+<<XXZ
 	
r3   r4   N)r5   r6   r7   r8   classmethodr   r   r   r   r   r:   r4   r3   r0   r_   r_   z   s:    ~
 ~
 "+.~
 
	~
 ~
r3   r_   )Hrp   	functoolsr   typingr   r   r   r   r    executorch.backends.vulkan.utilsbackendsvulkanrr   1executorch.backends.transforms.addmm_mm_to_linearr	   3executorch.backends.transforms.fuse_conv_with_clampr
   -executorch.backends.transforms.fuse_view_copyr   =executorch.backends.transforms.view_copy_to_squeeze_unsqueezer   "executorch.backends.vulkan._passesr   r   r   r   r   r   r   0executorch.backends.vulkan._passes.fuse_patternsr   1executorch.backends.vulkan._passes.remove_assertsr   =executorch.backends.vulkan.serialization.vulkan_graph_builderr   <executorch.backends.vulkan.serialization.vulkan_graph_schemar   r   ?executorch.backends.vulkan.serialization.vulkan_graph_serializer   #executorch.backends.xnnpack._passesr   'executorch.exir.backend.backend_detailsr   r   r   r   executorch.exir.backend.utilsr   executorch.exir.memory_planningr    r!   executorch.exir.pass_baser"   r#   executorch.exir.passesr$   r%   *executorch.exir.passes.sym_shape_eval_passr&    executorch.exir.program._programr'   torch._export.verifierr(   -torch.export._remove_auto_functionalized_passr)   DEFAULT_DEBUG_HANDLEr+   rI   strr]   r_   r4   r3   r0   <module>r      s      3 3 0 0 T M O   N T X B  A P : C V 7 +  h / o 2d;&7 DcN 8 A
N A
 A
r3   