
    =y!dg
                         d dl mZmZ d dlZdej        v Zerd dlmZmZ d Z	d Z
 G d d          Z G d	 d
ej                  Zer G d dej                  ZdS dS )    )_backend_is_dpc_backendNzdaal4py.oneapi)_get_sycl_ctxtsycl_execution_contextc                     t          | }t          r0| |t                      S t          |          S t          |           S || J t                      S N)
_get_queuer   _HostInteropPolicy_DataParallelInteropPolicy)queuedata
data_queues      5lib/python3.11/site-packages/onedal/common/_policy.py_get_policyr      sa    T"J 1=!)+++-j999)%000%---    c                  ~    t          |           dk    r)t          | d         d          r| d         j        d         S d S )Nr   __sycl_usm_array_interface__syclobj)lenhasattrr   )r   s    r   r	   r	   %   s;    
4yy1}}a*HII}Aw3I>>4r   c                       e Zd Zd Zd ZdS )_Daal4PyContextResetc                     d | _         d | _        t          rBt                      | _         t	          d          | _        | j                                         d S d S )Ncpu)_d4p_context_host_contextoneapi_is_availabler   r   applyselfs    r   __init__z_Daal4PyContextReset.__init__-   s]     ! 	' . 0 0D!7!>!>D$$&&&&&	' 	'r   c                 J    | j         r| j                                          d S d S r   )r   r   r   s    r   __del__z_Daal4PyContextReset.__del__5   s2     	&##%%%%%	& 	&r   N)__name__
__module____qualname__r!   r#    r   r   r   r   ,   s2        ' ' '& & & & &r   r   c                        e Zd Z fdZ xZS )r
   c                 n    t                                                       t                      | _        d S r   )superr!   r   _d4p_interop)r    	__class__s    r   r!   z_HostInteropPolicy.__init__;   s-    022r   r$   r%   r&   r!   __classcell__r,   s   @r   r
   r
   :   s8        3 3 3 3 3 3 3 3 3r   r
   c                        e Zd Z fdZ xZS )r   c                 r   || _         t                      | _        dt          j        v rUddlm} t          ||          r?t                      	                    | j         j
                                                   d S t                      	                    | j                                                    d S )N	sklearnexr   )DummySyclQueue)_queuer   r+   sysmodulessklearnex._device_offloadr3   
isinstancer*   r!   sycl_deviceget_filter_stringaddressof_ref)r    r   r3   r,   s      r   r!   z#_DataParallelInteropPolicy.__init__B   s    DK 4 6 6Dck))DDDDDDe^44 GG$$T[%<%N%N%P%PQQQFGGT[668899999r   r-   r/   s   @r   r   r   A   s8        	: 	: 	: 	: 	: 	: 	: 	: 	:r   r   )onedalr   r   r5   r6   r   daal4py.oneapir   r   r   r	   r   host_policyr
   data_parallel_policyr   r'   r   r   <module>r@      s  " - , , , , , , , 



&#+5  FEEEEEEEE	  	  	   & & & & & & & &3 3 3 3 3- 3 3 3  
:	: 	: 	: 	: 	:X%B 	: 	: 	: 	: 	:
: 
:r   