
    i              
           S SK r S SKrS SKrS SKJr  S SKr S SKJr  Sr	S\S\4S jrS	 r  SS
\S\\   S\S\S-  4S jjrg! \
 a    Sr	 N.f = f)    N)List)velaTFnamereturnc                 &   [         R                  " U 5      n[         R                  " UR                  [         R                  5      (       a  UR                  [         R                  5      n[        U5      nUS:  d  US:  a  [        U SU 35      eU$ )zEConvert numpy scalars to signed int32 with a clear error on overflow.i   iz out of int32 range: )	npasarray
issubdtypedtypeunsignedintegerastypeint64int
ValueError)valuer   arrvs       _/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/backends/arm/arm_vela.py	_as_int32r      so    
**U
C	}}SYY 2 233jj"CA8|q9}D6!6qc:;;H    c           	         XS-      nSn[         R                  " S[        U5      5      n[        [        U5      5       H  nX%   n[	        XS-      U   U  S35      n[	        XS-      U   U  S35      n[	        XS-      U   U  S35      n	[        U5      U:w  a  [        SU S[        U5       S	35      eUR                  5       n
[         R                  " S
/U
QUPUPU	P76 nXK-  nM     U$ )N_shape   z<i
_elem_size_offset_regionz	Expected zD shape, got Dz
<iiiiiiiii)structpacklenranger   r   tolist)prefixdatavela_input_shapesvela_io_shape_dimsiosiio_shapeio_elem_size	io_offset	io_regioninp_pad	io_structs               r   vela_bin_pack_ior/   %   s+   h./
++dC 12
3C3()*$' |&;!<Q!?F8:AVWdI#56q9fXW;MN	dI#56q9fXW;MN	x=.../}S]O1M  //#KK
"
$0
2;
=F
	 	 + Jr   tosa_flatbufferargsverboseintermediate_pathc                    ^ ^^ [         (       d  [        S5      eS[        S[        4UU U4S jjnUb  U" U5      $ [        R
                  " 5        nU" U5      sSSS5        $ ! , (       d  f       g= f)zICompile a TOSA graph to a binary stream for ArmBackendEthosU using
Vela.
zHethos-u-vela pip package couldn't be imported. Make sure it's installed!dirr   c           	        > Sn[         R                  R                  X5      n[        US5       nUR	                  T5        S S S 5        [         R                  R                  U S5      nTR                  SU 35        TR                  U5        T(       a  TR                  S5        [        R                  " SR                  T5      R                  S5      5        [         R                  R                  U SS5      nSn[        R                  " US	S
9 nSS0nUS   R                  5       US'   US   R                  5       US'   [        US   S   [        R                  5      (       d  [        S5      e[        US   S   5      n	[         R"                  " SU	5      US'   [%        SU5      US'   [%        SU5      US'   SUS'   UR'                  5        Ht  n
[)        U
S5      S S nUSS[+        U5      -
  -  -   n[         R"                  " S[+        X   5      SSS5      nX   nUSS[+        U5      S-
  S-  -
  -  -   nX-   U-   nXn-   nMv     S S S 5        U$ ! , (       d  f       GN= f! , (       d  f       U$ = f)Nzout.tosawboutputz--output-dir=z--verbose-all zout_vela.npzr   F)allow_picklevela_bin_streamcmd_dataweight_datascratch_shaper   zExpected scratch to be int64z<Iscratch_sizeinputinputsoutputsvela_end_streamutf8          z<iiii   )ospathjoinopenwriteappendr   mainsplitr   loadtobytes
isinstancer   RuntimeErrorr   r   r   r/   keysbytesr    )r5   tosaname	tosa_pathf
output_dirnp_pathblocksr$   
bin_blocksblock_lengthkey
block_nameblock_length_bytes
block_datablockr1   r0   r2   s                  r   runvela_compile.<locals>.runM   sO   GGLL/	)T"aGGO$ # WW\\#x0
mJ<01IKK(		#((4.&&s+,'',,sHn=WWW51T ,S1J &**%5%=%=%?Jz" )-](;(C(C(EJ}%
 d?3A6AA"#ABBtO4Q78L)/T<)HJ~& $4GT#BJx $4Xt$DJy!,/J() "("3/4
''R#j/5I*JJ
 &,[[#jo:NPQSTVW%X" (_
''R3z?Q;NRT:T5T*UU
"7*D )= 2X u #" 21X s   ID7I%
I"%
I4N)has_velarT   strrV   tempfileTemporaryDirectory)r0   r1   r2   r3   rd   tmpdirs   ```   r   vela_compilerk   ?   sh     8V
 	
= = = =~ $$%%((*fv; +**s   A""
A0)FN)rI   r   rh   typingr   numpyr   ethosu.velar   rf   ImportErrorrg   r   r   r/   rV   boolrk    r   r   <module>rr      s    
     H
	3 	3 	: $(	QQ
s)Q Q Tz	QY  Hs   A AA