
    
9j6                        S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
JrJrJrJrJr  \R                   (       d	  S SKJrJr  OS rS r " S	 S
5      r\" 5       rg)    )annotationsN)runtime)_util)get_plan_cacheclear_plan_cacheget_plan_cache_sizeset_plan_cache_sizeget_plan_cache_max_memsizeset_plan_cache_max_memsizeshow_plan_cache_info)get_current_callback_managerset_cufft_callbacksc                     g N argskwargss     J/home/wildlama/miniconda3/lib/python3.13/site-packages/cupy/fft/_config.pyr   r      s        c                     [        S5      e)Nz)cuFFT callbacks are not supported on ROCm)RuntimeErrorr   s     r   r   r      s    FGGr   c                     \ rS rSr\r\r\r\r\r\	r	\
r
\r\r\R                  " SSS9r\R                  " SSS9r\R                  " SSS9rS	 r\S
 5       r\R*                  S 5       r\S 5       r\R*                  S 5       r\S 5       rSrg)
_FFTConfig   z"cupy.fft.config.enable_nd_planningT)defaultzcupy.fft.config.use_multi_gpusFzcupy.fft.config.devicesNc                h   [         R                  " S5        [        U[        5      (       a  [	        U5       Vs/ s H  o"PM     nnO)[        U[
        [        45      (       a  UnO[        S5      e[        U5      S::  a  [        S5      eU R                  R                  [        U5      5        gs  snf )a  Set the GPUs to be used in multi-GPU FFT.

Args:
    gpus (int or list of int): The number of GPUs or a list of GPUs
        to be used. For the former case, the first ``gpus`` GPUs
        will be used.

.. warning::
    This API is currently experimental and may be changed in the future
    version.

.. seealso:: `Multiple GPU cuFFT Transforms`_

.. _Multiple GPU cuFFT Transforms:
    https://docs.nvidia.com/cuda/cufft/index.html#multiple-GPU-cufft-transforms
zcupy.fft.config.set_cufft_gpusz.gpus must be an int or a list or tuple of int.   zMust use at least 2 GPUs.N)r   experimental
isinstanceintrangelisttuple
ValueErrorlen_devicesset)selfgpusidevss       r   set_cufft_gpus_FFTConfig.set_cufft_gpus/   s    " 	;<dC  $T{+{!A{D+DtUm,,DMNNt9>899 	%+& ,s   B/c                j    [         R                  " S[        SS9  U R                  R	                  5       $ NzUenable_nd_planning is deprecated as of CuPy 14 and will always be True in the future.   )
stacklevel)warningswarnDeprecationWarning_enable_nd_planninggetr)   s    r   enable_nd_planning_FFTConfig.enable_nd_planningN   s0    %&8Q	H ''++--r   c                n    [         R                  " S[        SS9  U R                  R	                  U5        g r0   )r3   r4   r5   r6   r(   r)   values     r   r9   r:   U   s/    %&8Q	H 	  $$U+r   c                6    U R                   R                  5       $ r   )_use_multi_gpusr7   r8   s    r   use_multi_gpus_FFTConfig.use_multi_gpus\   s    ##''))r   c                L    U R                   R                  [        U5      5        g r   )r?   r(   boolr<   s     r   r@   rA   `   s      e-r   c                x    U R                   R                  5       (       a  U R                  R                  5       $ S $ r   )r?   r7   r'   r8   s    r   devices_FFTConfig.devicesd   s.    &*&:&:&>&>&@&@t}}  "JdJr   r   )__name__
__module____qualname____firstlineno__r   r   r   r	   r
   r   r   r   r   contextvars
ContextVarr6   r?   r'   r-   propertyr9   setterr@   rE   __static_attributes__r   r   r   r   r      s    #N'--!;!;/#? -%00,d<!,,(%9O%%!41H'> . . , , * * . . K Kr   r   )
__future__r   rK   r3   cupy_backends.cuda.apir   cupyr   cupy.fft._cacher   r   r   r	   r
   r   r   is_hipcupy.fft._callbackr   r   r   configr   r   r   <module>rW      sY    "   * 3 3 3 ~~; ;HIK IKX 
r   