§
    ƒÛg$  ã                   ó¾   — d dl Zd dlmZmZmZ d dlmZmZ d dl	m
Z
 e
j        rd\  ZZnd\  ZZeez  ZeefZ G d„ de¦  «        Zed	k    r ej        ¦   «          dS dS )
é    N)ÚcudaÚfloat32Úvoid)ÚunittestÚCUDATestCase)Úconfig)é   é   )é2   é    c                   ó   — e Zd Zd„ ZdS )ÚTestCudaMatMulc                 óF  — t          j        t          t          d d …d d d…f         t          d d …d d d…f         t          d d …d d d…f         ¦  «        ¦  «        d„ ¦   «         }t          j                             d¦  «         t	          j        t          j                             t          t          f¦  «        t          j        ¬¦  «        }t	          j        t          j                             t          t          f¦  «        t          j        ¬¦  «        }t	          j	        |¦  «        }t          j
        ¦   «         }|                     ¦   «         5  t          j        ||¦  «        }t          j        ||¦  «        }t          j        ||¦  «        } |t          t          ft          t          f|f         |||¦  «         |                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        ||¦  «        }	t          j                             ||	d¬¦  «         d S )Né   c                 ó¤  — t           j                             t          t          ¬¦  «        }t           j                             t
          t
          ft          ¬¦  «        }t           j        j        }t           j        j        }t           j	        j        }t           j	        j        }t           j
        j        }	t           j
        j        }
|||	z  z   }|||
z  z   }t	          d¦  «        }t          t          ¦  «        D ]·}|t          k     r?|t          k     r4| |||t
          z  z   f         |||f<   |||t
          z  z   |f         |||f<   t          j        ¦   «          |t          k     r:|t          k     r/t          t
          ¦  «        D ]}||||f         |||f         z  z  }Œt          j        ¦   «          Œ¸|t          k     r|t          k     r||||f<   d S d S d S )N)ÚshapeÚdtyper   )r   ÚsharedÚarrayÚSM_SIZEr   ÚtpbÚ	threadIdxÚxÚyÚblockIdxÚblockDimÚrangeÚbpgÚnÚsyncthreads)ÚAÚBÚCÚsAÚsBÚtxÚtyÚbxÚbyÚbwÚbhr   r   ÚaccÚiÚjs                   úY/granary/edev/quantum/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_matmul.pyÚcu_square_matrix_mulz6TestCudaMatMul.test_func.<locals>.cu_square_matrix_mul   sŽ  € å”×"Ò"­½Ð"Ñ@Ô@ˆBÝ”×"Ò"­#­s¨½7Ð"ÑCÔCˆBå”Ô!ˆBÝ”Ô!ˆBÝ””ˆBÝ””ˆBÝ””ˆBÝ””ˆBà�R˜"‘W‘ˆAØ�R˜"‘W‘ˆAå˜!‘*”*ˆCÝ�3‘Z”Zð #ð #�Ø•q’5�5˜Q¥šU˜UØ!" 1 b¨1­s©7¡l ?Ô!3�B�r˜2�v‘JØ!" 2¨­C©¡<° ?Ô!3�B�r˜2�v‘JåÔ Ñ"Ô"Ð"à•q’5�5˜Q¥šU˜UÝ"¥3™ZœZð 5ð 5˜Ø˜r " a %œy¨2¨a°¨e¬9Ñ4Ñ4˜˜åÔ Ñ"Ô"Ð"Ð"à•1Šuˆu˜�Qš˜Ø��!�Q�$‘��ð ˆu˜˜ó    é*   )r   gñhãˆµøä>)Úrtol)r   Újitr   r   ÚnpÚrandomÚseedr   r   Ú
empty_likeÚstreamÚauto_synchronizeÚ	to_devicer   r   Úcopy_to_hostÚdotÚtestingÚassert_allclose)
Úselfr0   r!   r"   r#   r9   ÚdAÚdBÚdCÚCanss
             r/   Ú	test_funczTestCudaMatMul.test_func   sú  € å	Œ•$•w˜q˜q˜q # # A #˜v”­°°°°3°3°Q°3°¬½ÀÀÀÀCÀCÀaÀCÀ¼ÑIÔIÑ	JÔ	Jð	ð 	ñ 
KÔ	Jð	õ> 	Œ	�Š�rÑÔÐÝŒH•R”Y×%Ò%¥q­! fÑ-Ô-µR´ZÐ@Ñ@Ô@ˆÝŒH•R”Y×%Ò%¥q­! fÑ-Ô-µR´ZÐ@Ñ@Ô@ˆÝŒM˜!ÑÔˆå”‘”ˆØ×$Ò$Ñ&Ô&ð 	'ð 	'Ý”  6Ñ*Ô*ˆBÝ”  6Ñ*Ô*ˆBÝ”  6Ñ*Ô*ˆBØ@Ð ¥#¥s ­cµ3¨Z¸Ð!?Ô@ÀÀRÈÑLÔLÐLØ�OŠO˜A˜vÑ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'õ Œv�a˜‰|Œ|ˆõ 	Œ
×"Ò" 1 d°Ð"Ñ6Ô6Ð6Ð6Ð6s   ÅBGÇG#Ç&G#N)Ú__name__Ú
__module__Ú__qualname__rE   © r1   r/   r   r      s#   € € € € € ð37ð 37ð 37ð 37ð 37r1   r   Ú__main__)Únumpyr5   Únumbar   r   r   Únumba.cuda.testingr   r   Ú
numba.corer   ÚENABLE_CUDASIMr   r   r   r   r   rF   ÚmainrI   r1   r/   ú<module>rQ      sÝ   ðØ Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð ð 
Ôð Ø�H€Cˆˆà�H€Cˆàˆ#�I€Ø�ˆ*€ð57ð 57ð 57ð 57ð 57�\ñ 57ô 57ð 57ðp ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr1   