§
    ƒÛgÔ   ã                   óž  — d dl mZ d dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlmZ d dlmZ  ed¦  «         e	d¦  «         G d	„ d
e
¦  «        ¦   «         ¦   «         Z ed¦  «         e	d¦  «         G d„ de
¦  «        ¦   «         ¦   «         Z G d„ de
¦  «        Z ed¦  «         G d„ de
¦  «        ¦   «         Zedk    r ej        ¦   «          dS dS )é    )ÚcontextmanagerN)Úcuda)ÚunittestÚskip_on_cudasimÚskip_if_external_memmgrÚCUDATestCase)Úcaptured_stderr)Úconfigznot supported on CUDASIMz0Deallocation specific to Numba memory managementc                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestDeallocationc                 ó  — t          j        ¦   «         j        j        }|                     ¦   «          |                      t          |¦  «        d¦  «         t          t          j	        ¦  «        D ]N}t          j
        t          j        d¦  «        ¦  «         |                      t          |¦  «        |dz   ¦  «         ŒOt          j
        t          j        d¦  «        ¦  «         |                      t          |¦  «        d¦  «         d S )Nr   é   )r   Úcurrent_contextÚmemory_managerÚdeallocationsÚclearÚassertEqualÚlenÚranger
   ÚCUDA_DEALLOCS_COUNTÚ	to_deviceÚnpÚarange)ÚselfÚdeallocsÚis      úa/granary/edev/quantum/lib/python3.11/site-packages/numba/cuda/tests/cudadrv/test_deallocations.pyÚtest_max_pending_countz'TestDeallocation.test_max_pending_count   sÑ   € åÔ'Ñ)Ô)Ô8ÔFˆØ�ŠÑÔÐØ×Ò�˜X™œ¨Ñ*Ô*Ð*å•vÔ1Ñ2Ô2ð 	3ð 	3ˆAÝŒN�2œ9 Q™<œ<Ñ(Ô(Ð(Ø×Ò�S ™]œ]¨A°©EÑ2Ô2Ð2Ð2åŒ•r”y ‘|”|Ñ$Ô$Ð$Ø×Ò�˜X™œ¨Ñ*Ô*Ð*Ð*Ð*ó    c                 ó²  — t          j        ¦   «         }|j        j        }|                     ¦   «          |                      t          |¦  «        d¦  «         |                     ¦   «         }d}t          j	        }	 ||j
        z  t          _	        |                      |j        |d¬¦  «         t          j        t          j        |dz  t          j        ¬¦  «        ¦  «         |                      t          |¦  «        d¦  «         t          j        t          j        |j        |j        z
  t          j        ¬¦  «        ¦  «         |                      t          |¦  «        d¦  «         t          j        t          j        dt          j        ¬¦  «        ¦  «         |                      t          |¦  «        d¦  «         |t          _	        d S # |t          _	        w xY w)Nr   i@B r   )Údeltaé   )Údtype)r   r   r   r   r   r   r   Úget_memory_infor
   ÚCUDA_DEALLOCS_RATIOÚtotalÚassertAlmostEqualÚ_max_pending_bytesr   r   ÚonesÚint8Ú_size)r   Úctxr   ÚmiÚmax_pendingÚ	old_ratios         r   Útest_max_pending_bytesz'TestDeallocation.test_max_pending_bytes   s¨  € åÔ"Ñ$Ô$ˆØÔ%Ô3ˆØ�ŠÑÔÐØ×Ò�˜X™œ¨Ñ*Ô*Ð*à× Ò Ñ"Ô"ˆàˆÝÔ.ˆ	ð	3à)4°r´xÑ)?�FÔ&ð ×"Ò" 8Ô#>ÀØ)*ð #ñ ,ô ,ð ,õ
 ŒN�2œ7 ;°!Ñ#3½2¼7ÐCÑCÔCÑDÔDÐDØ×Ò�S ™]œ]¨AÑ.Ô.Ð.õ ŒN�2œ7 8Ô#>Ø#+¤>ñ$2Ý9;¼ðBñ Bô Bñ Cô Cð Cà×Ò�S ™]œ]¨AÑ.Ô.Ð.õ ŒN�2œ7 1­B¬GÐ4Ñ4Ô4Ñ5Ô5Ð5Ø×Ò�S ™]œ]¨AÑ.Ô.Ð.ð *3�FÔ&Ð&Ð&ø¨�FÔ&Ð2Ð2Ð2Ð2s   Á:E G ÇGN)Ú__name__Ú
__module__Ú__qualname__r   r0   © r   r   r   r      s2   € € € € € ð+ð +ð +ð#3ð #3ð #3ð #3ð #3r   r   z&defer_cleanup has no effect in CUDASIMc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestDeferCleanupc                 óè  — t          j        d¦  «        }t          j        |¦  «        }t          j        ¦   «         j        j        }|                     ¦   «          |                      t          |¦  «        d¦  «         t          j
        ¦   «         5  t          j        |¦  «        }~|                      t          |¦  «        d¦  «         ~|                      t          |¦  «        d¦  «         |                     ¦   «          |                      t          |¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «          |                      t          |¦  «        d¦  «         d S ©Né   r   r   r"   ©r   r   r   r   r   r   r   r   r   r   Údefer_cleanup©r   ÚharrÚdarr1r   Údarr2s        r   Ú
test_basiczTestDeferCleanup.test_basicE   so  € ÝŒy˜‰|Œ|ˆÝ”˜tÑ$Ô$ˆÝÔ'Ñ)Ô)Ô8ÔFˆØ�ŠÑÔÐØ×Ò�˜X™œ¨Ñ*Ô*Ð*ÝÔÑ!Ô!ð 	/ð 	/Ý”N 4Ñ(Ô(ˆEØØ×Ò�S ™]œ]¨AÑ.Ô.Ð.ØØ×Ò�S ™]œ]¨AÑ.Ô.Ð.Ø�NŠNÑÔÐØ×Ò�S ™]œ]¨AÑ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	�ŠÑÔÐØ×Ò�˜X™œ¨Ñ*Ô*Ð*Ð*Ð*s   ÂBD0Ä0D4Ä7D4c                 ó¬  — t          j        d¦  «        }t          j        |¦  «        }t          j        ¦   «         j        j        }|                     ¦   «          |                      t          |¦  «        d¦  «         t          j
        ¦   «         5  t          j
        ¦   «         5  t          j        |¦  «        }~|                      t          |¦  «        d¦  «         ~|                      t          |¦  «        d¦  «         |                     ¦   «          |                      t          |¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «          |                      t          |¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «          |                      t          |¦  «        d¦  «         d S r8   r:   r<   s        r   Útest_nestedzTestDeferCleanup.test_nestedW   s  € ÝŒy˜‰|Œ|ˆÝ”˜tÑ$Ô$ˆÝÔ'Ñ)Ô)Ô8ÔFˆØ�ŠÑÔÐØ×Ò�˜X™œ¨Ñ*Ô*Ð*ÝÔÑ!Ô!ð 
	/ð 
	/ÝÔ#Ñ%Ô%ð 3ð 3Ýœ tÑ,Ô,�ØØ× Ò ¥ X¡¤°Ñ2Ô2Ð2ØØ× Ò ¥ X¡¤°Ñ2Ô2Ð2Ø—’Ñ Ô Ð Ø× Ò ¥ X¡¤°Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð �NŠNÑÔÐØ×Ò�S ™]œ]¨AÑ.Ô.Ð.ð
	/ð 
	/ð 
	/ñ 
	/ô 
	/ð 
	/ð 
	/ð 
	/ð 
	/ð 
	/ð 
	/øøøð 
	/ð 
	/ð 
	/ð 
	/ð 	�ŠÑÔÐØ×Ò�˜X™œ¨Ñ*Ô*Ð*Ð*Ð*s7   ÂFÂ$BEÄ8FÅE	ÅFÅE	Å:FÆFÆFc                 óÄ  — t          j        d¦  «        }t          j        |¦  «        }t          j        ¦   «         j        j        }|                     ¦   «          |                      t          |¦  «        d¦  «          G d„ dt          ¦  «        }|                      |¦  «        5  t          j        ¦   «         5  t          j        |¦  «        }~|                      t          |¦  «        d¦  «         |                     ¦   «          |                      t          |¦  «        d¦  «         |‚# 1 swxY w Y   	 d d d ¦  «         n# 1 swxY w Y   |                     ¦   «          |                      t          |¦  «        d¦  «         ~|                      t          |¦  «        d¦  «         |                     ¦   «          |                      t          |¦  «        d¦  «         d S )Nr9   r   c                   ó   — e Zd ZdS )ú4TestDeferCleanup.test_exception.<locals>.CustomErrorN©r1   r2   r3   r4   r   r   ÚCustomErrorrE   s   ó   € € € € € ØˆDr   rG   r   )r   r   r   r   r   r   r   r   r   r   Ú	ExceptionÚassertRaisesr;   )r   r=   r>   r   rG   r?   s         r   Útest_exceptionzTestDeferCleanup.test_exceptionl   s  € ÝŒy˜‰|Œ|ˆÝ”˜tÑ$Ô$ˆÝÔ'Ñ)Ô)Ô8ÔFˆØ�ŠÑÔÐØ×Ò�˜X™œ¨Ñ*Ô*Ð*ð	ð 	ð 	ð 	ð 	�)ñ 	ô 	ð 	ð ×Ò˜{Ñ+Ô+ð 	"ð 	"ÝÔ#Ñ%Ô%ð "ð "Ýœ tÑ,Ô,�ØØ× Ò ¥ X¡¤°Ñ2Ô2Ð2Ø—’Ñ Ô Ð Ø× Ò ¥ X¡¤°Ñ2Ô2Ð2Ø!Ð!ð"ð "ð "ð "øøøð "ð "ð "ð "ð "ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	�ŠÑÔÐØ×Ò�˜X™œ¨Ñ*Ô*Ð*ØØ×Ò�˜X™œ¨Ñ*Ô*Ð*Ø�ŠÑÔÐØ×Ò�˜X™œ¨Ñ*Ô*Ð*Ð*Ð*s1   Â%EÂ9A2D+Ä+D/	Ä/EÄ2D/	Ä3EÅEÅ
EN)r1   r2   r3   r@   rB   rK   r4   r   r   r6   r6   B   sA   € € € € € ð+ð +ð +ð$+ð +ð +ð*+ð +ð +ð +ð +r   r6   c                   ó   — e Zd Zd„ ZdS )ÚTestDeferCleanupAvailc                 ó`   — t          j        ¦   «         5  	 d d d ¦  «         d S # 1 swxY w Y   d S ©N)r   r;   )r   s    r   Útest_context_managerz*TestDeferCleanupAvail.test_context_manager‡   sx   € åÔÑ!Ô!ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ”#£'ª'N)r1   r2   r3   rP   r4   r   r   rM   rM   †   s#   € € € € € ðð ð ð ð r   rM   c                   óX   — e Zd ZdZed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ ZdS )ÚTestDelzJ
    Ensure resources are deleted properly without ignored exception.
    c              #   óÞ   K  — t          ¦   «         5 }d V — |j                             ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      |                     ¦   «         ¦  «         d S rO   )r	   r   r   ÚassertFalseÚgetvalue)r   r,   Úcaps      r   Úcheck_ignored_exceptionzTestDel.check_ignored_exception’   s¦   è è € åÑÔð 	& #ØˆEˆEˆEØÔ×#Ò#Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	×Ò˜Ÿš™œÑ(Ô(Ð(Ð(Ð(s   ‘;»?Á?c                 ó²   — t          j        ¦   «         }|                     ¦   «         }|                      |¦  «        5  ~d d d ¦  «         d S # 1 swxY w Y   d S rO   )r   r   Úcreate_streamrW   )r   r,   Ústreams      r   Útest_streamzTestDel.test_stream™   sœ   € ÝÔ"Ñ$Ô$ˆØ×"Ò"Ñ$Ô$ˆØ×)Ò)¨#Ñ.Ô.ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó   ½AÁAÁAc                 ó²   — t          j        ¦   «         }|                     ¦   «         }|                      |¦  «        5  ~d d d ¦  «         d S # 1 swxY w Y   d S rO   )r   r   Úcreate_eventrW   )r   r,   Úevents      r   Ú
test_eventzTestDel.test_eventŸ   sœ   € ÝÔ"Ñ$Ô$ˆØ× Ò Ñ"Ô"ˆØ×)Ò)¨#Ñ.Ô.ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	r\   c                 ó´   — t          j        ¦   «         }|                     d¦  «        }|                      |¦  «        5  ~d d d ¦  «         d S # 1 swxY w Y   d S ©Né    ©r   r   ÚmemhostallocrW   ©r   r,   Úmems      r   Útest_pinned_memoryzTestDel.test_pinned_memory¥   sž   € ÝÔ"Ñ$Ô$ˆØ×Ò˜rÑ"Ô"ˆØ×)Ò)¨#Ñ.Ô.ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó   ¾AÁAÁAc                 ó¸   — t          j        ¦   «         }|                     dd¬¦  «        }|                      |¦  «        5  ~d d d ¦  «         d S # 1 swxY w Y   d S )Nrc   T)Úmappedrd   rf   s      r   Útest_mapped_memoryzTestDel.test_mapped_memory«   s£   € ÝÔ"Ñ$Ô$ˆØ×Ò˜r¨$ÐÑ/Ô/ˆØ×)Ò)¨#Ñ.Ô.ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á AÁAÁAc                 ó´   — t          j        ¦   «         }|                     d¦  «        }|                      |¦  «        5  ~d d d ¦  «         d S # 1 swxY w Y   d S rb   )r   r   ÚmemallocrW   rf   s      r   Útest_device_memoryzTestDel.test_device_memory±   sœ   € ÝÔ"Ñ$Ô$ˆØ�lŠl˜2ÑÔˆØ×)Ò)¨#Ñ.Ô.ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ri   c                 ó´   — t          j        ¦   «         }|                     d¦  «        }|                      |¦  «        5  ~d d d ¦  «         d S # 1 swxY w Y   d S rb   )r   r   ÚmemallocmanagedrW   rf   s      r   Útest_managed_memoryzTestDel.test_managed_memory·   sž   € ÝÔ"Ñ$Ô$ˆØ×!Ò! "Ñ%Ô%ˆØ×)Ò)¨#Ñ.Ô.ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ri   c                 ó~  —  G d„ dt           ¦  «        }t          j        d¦  «        }t          j        ¦   «         }|j                             ¦   «          |                      |¦  «        5  t          j        |¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   t          j	        ¦   «         5  t          j        |¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   	 t          j        |¦  «        5  |‚# 1 swxY w Y   n8# |$ r0 t          j        |¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   Y nw xY wd d d ¦  «         d S # 1 swxY w Y   d S )Nc                   ó   — e Zd ZdS )ú;TestDel.test_pinned_contextmanager.<locals>.PinnedExceptionNrF   r4   r   r   ÚPinnedExceptionru   À   rH   r   rv   r   )
rI   r   Úzerosr   r   r   r   rW   Úpinnedr;   )r   rv   Úarrr,   s       r   Útest_pinned_contextmanagerz"TestDel.test_pinned_contextmanager½   ó³  € ð	ð 	ð 	ð 	ð 	�iñ 	ô 	ð 	õ Œh�q‰kŒkˆÝÔ"Ñ$Ô$ˆØÔ×ÒÑ!Ô!Ð!Ø×)Ò)¨#Ñ.Ô.ð 	ð 	Ý”˜SÑ!Ô!ð ð Øðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å”˜SÑ!Ô!ð ð Øðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô#Ñ%Ô%ð ð Ý”[ Ñ%Ô%ð ð Øðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å”[ Ñ%Ô%ð ð Øðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ðÝ”[ Ñ%Ô%ð *ð *Ø)Ð)ð*ð *ð *ð *øøøð *ð *ð *ð *ð *øà"ð ð ð Ý”[ Ñ%Ô%ð ð Øðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øøðøøøð!	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó,  Á)F2Á>BÂ F2ÂB	ÂF2ÂB	ÂF2Â+B9Â-F2Â9B=	Â=F2Ã B=	ÃF2ÃD>Ã,C:Ã.D>Ã:C>Ã>D>ÄC>ÄD>ÄD'ÄD>Ä'D+Ä+D>Ä.D+Ä/D>Ä2F2Ä>E	ÅF2ÅE	ÅF2Å
E-ÅE!Å!E%	Å%E-Å(E%	Å)E-Å,F2Å-F"ÆFÆF"ÆFÆF"ÆFÆF"ÆF2Æ!F"Æ"F2Æ2F6Æ9F6c                 ó~  —  G d„ dt           ¦  «        }t          j        d¦  «        }t          j        ¦   «         }|j                             ¦   «          |                      |¦  «        5  t          j        |¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   t          j	        ¦   «         5  t          j        |¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   	 t          j        |¦  «        5  |‚# 1 swxY w Y   n8# |$ r0 t          j        |¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   Y nw xY wd d d ¦  «         d S # 1 swxY w Y   d S )Nc                   ó   — e Zd ZdS )ú;TestDel.test_mapped_contextmanager.<locals>.MappedExceptionNrF   r4   r   r   ÚMappedExceptionr   Ý   rH   r   r€   r   )
rI   r   rw   r   r   r   r   rW   rk   r;   )r   r€   ry   r,   s       r   Útest_mapped_contextmanagerz"TestDel.test_mapped_contextmanagerÚ   r{   r|   N)r1   r2   r3   Ú__doc__r   rW   r[   r`   rh   rl   ro   rr   rz   r�   r4   r   r   rR   rR   �   s±   € € € € € ðð ð ð)ð )ñ „^ð)ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð:ð ð ð ð r   rR   Ú__main__)Ú
contextlibr   Únumpyr   Únumbar   Únumba.cuda.testingr   r   r   r   Únumba.tests.supportr	   Ú
numba.corer
   r   r6   rM   rR   r1   Úmainr4   r   r   ú<module>r‹      sò  ðØ %Ð %Ð %Ð %Ð %Ð %à Ð Ð Ð à Ð Ð Ð Ð Ð ðGð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gà /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð ð €Ð+Ñ,Ô,ØÐÐKÑLÔLð13ð 13ð 13ð 13ð 13�|ñ 13ô 13ñ MÔLñ -Ô,ð13ðh €Ð9Ñ:Ô:ØÐÐKÑLÔLð?+ð ?+ð ?+ð ?+ð ?+�|ñ ?+ô ?+ñ MÔLñ ;Ô:ð?+ðDð ð ð ð ˜Lñ ô ð ð €Ð+Ñ,Ô,ðgð gð gð gð gˆlñ gô gñ -Ô,ðgðT ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   