
    ic
                         d dl Z d dlZ ddlmZmZ d dlmZ e j                  j                  d        d Z
d ZddZddZdd	Zdd
ZddZer e        yy)    N   )gemmeinsum)default_timerc                 &   t        j                  ||fd      }|t         j                  j                  dd|j                        z  }t        j                  | |fd      }|t         j                  j                  dd|j                        z  }||fS )Nfdtypeg      g      ?)numpyzerosrandomuniformshape)nOnI
batch_sizeXWs        _/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/blis/benchmark.pycreate_datar   
   sv    Z$C0A		dC	11ARHC(A		dC	11Aa4K    c                  F    t         j                  j                  d   } | d   S )N	librariesr   )r   
__config__blas_opt_info)	blas_libss    r   get_numpy_blasr      s"      ..{;IQ<r   c                 &   |j                   \  }}| j                   d   }d}t        j                  ||fd      }t        |      D ]>  }t        j                  | ||       ||j                         z  }|j                  d       @ t        d|       y Nr           r   r	   outTotal:)r   r   r   rangedotsumfillprint	r   r   nr   r   r   totalyis	            r   
numpy_gemmr.      s    WWFBJEZ$C0A1X 		!QA	q	 
(Er   c                    |j                   \  }}| j                   d   }d}t        j                  ||fd      }t        |      D ]4  }t	        | ||       ||j                         z  }|j                  d       6 t        d|       y r   )r   r   r   r$   r   r&   r'   r(   r)   s	            r   	blis_gemmr0   #   s|    WWFBJEZ$C0A1X Qq	s 
(Er   c                 (   |j                   \  }}| j                   d   }d}t        j                  ||fd      }t        |      D ]?  }t        j                  d| ||       ||j                         z  }|j                  d       A t        d|       y Nr   r    r   r	   z	ab,cb->car!   r#   r   r   r   r$   r   r&   r'   r(   r)   s	            r   numpy_einsumr4   /   s    WWFBJER$C0A1X [!QA.	s 
(Er   c                    |j                   \  }}| j                   d   }d}t        j                  ||fd      }t        |      D ]5  }t	        d| ||       ||j                         z  }|j                  d       7 t        d|       y r2   r3   r)   s	            r   blis_einsumr6   ;   s~    WWFBJER$C0A1X {Aqa(	s 
(Er   c                    t         dj                  d	i t                      t               }t	        | ||      \  }}|j                         }|j                         }t        d       t               }t        ||d       t               }	|	|z
  }
t        d|
z         t        d|z         t               }t        ||       t               }	|	|z
  }t        d|z         t        d       t               }t        ||d       t               }	|	|z
  }
t        d|
z         t        d|z         t               }t        ||       t               }	|	|z
  }t        d|z         y )
NzNSetting up data for gemm. 1000 iters,  nO={nO} nI={nI} batch_size={batch_size}zBlis gemm...  )r*   z%.2f secondszNumpy (%s) gemm...zBlis einsum ab,cb->cazNumpy (%s) einsum ab,cb->ca )r(   formatlocalsr   r   copytimerr0   r.   r6   r4   )r   r   r   
numpy_blasX1W1X2W2startend	blis_time
numpy_times               r   mainrG   G   sE   		9 	228&	E;A8	E  !JR,FB	B	B	.GEb"
'CeI	.9
$%	

+,GEr2
'CuJ	.:
%&	
!"GEB$
'CeI	.9
$%	
'*
45GER
'CuJ	.:
%&r   )r8   )  rH   i  )r   numpy.randompyr   r   timeitr   r=   r   seedr   r   r.   r0   r4   r6   rG   __name__r9   r   r   <module>rN      sV       )   ! 
				 'F F r   