
    =y!d*                         d dl mZ 	 d dlmZmZmZ dZn!# e$ r d dlZ ej	        d           dZY nw xY wd Z
d Zdd	Zdd
ZdS )    wraps)_get_global_queue_transfer_to_host_copy_to_usmTNz=Device support requires Intel(R) Extension for Scikit-learn*.Fc                      t                      }t          |g| R  \  }}t          |g|                                R  \  }}t          t	          |                                |                    }|||fS N)r   r   valuesdictzipkeys)argskwargsqhostargs
hostvalues
hostkwargss         6lib/python3.11/site-packages/onedal/_device_offload.py_get_host_inputsr      ss    A#A----KAx%a:&--//:::MAzc&++--4455Jh
""    c                      g | |                                 R }t          |          dk    rd S t          |d         dd           S )Nr   __sycl_usm_array_interface__)r
   lengetattr)r   r   allargss      r   _extract_usm_ifacer   '   sP    ''v}}''G
7||qt71:1  r   c                 .    | | |g|R i |S  | |i |S r	    )funcobjr   r   s       r   _run_on_devicer!   0   s<    
tC)$)))&)))4    r   c                       fd}|S )Nc                       fdrt                     fd            }|S t                     fd            }|S )Nc                     t           rVt          |i |}t          |i |\  }}}||d<   t          | g|R i |}| t	          |d          rt          ||          S |S t          | g|R i |S )Nqueue__array_interface__)_sklearnex_availabler   r   r!   hasattrr   )	r    r   r   	usm_iface
data_queuer   r   resultr   s	           r   wrapper_implz<support_usm_ndarray.<locals>.decorator.<locals>.wrapper_impl8   s    # .???	3CT3TV3T3T0
Hj&0
7#'cKHKKK
KK(WV=R-S-S('
F;;;!$=d===f===r   c                       d g| R i |S r	   r   )r   r   r,   s     r   wrapper_freez<support_usm_ndarray.<locals>.decorator.<locals>.wrapper_freeD   s#    #|D:4:::6:::r   c                      | g|R i |S r	   r   )selfr   r   r,   s      r   wrapper_with_selfzAsupport_usm_ndarray.<locals>.decorator.<locals>.wrapper_with_selfI   s#    <6t666v666r   r   )r   r.   r1   r,   freefuncs   `  @r   	decoratorz&support_usm_ndarray.<locals>.decorator7   s    		> 		> 		> 		> 		>  	 4[[; ; ; ; [;	t	7 	7 	7 	7 
	7  r   r   )r2   r3   s   ` r   support_usm_ndarrayr4   6   s$    ! ! ! ! !, r   r	   )F)	functoolsr   sklearnex._device_offloadr   r   r   r'   ImportErrorloggingwarningr   r   r!   r4   r   r   r   <module>r:      s   "      	!9 9 9 9 9 9 9 9 9 9   ! ! !NNNGO < = = = 	!# # #  ! ! ! !     s    33