o
    ×°“i¸  ã                   @   s¼   d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	l
Zej d
¡rGd dlmZ d dlmZ ndd„ ZG dd„ dƒZdZdZd	add„ Zd	S )é    )Ú_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_infoNÚlinux)Úget_current_callback_manager)Úset_cufft_callbacksc                  O   s   d S )N© )ÚargsÚkwargsr   r   úC/home/ubuntu/.local/lib/python3.10/site-packages/cupy/fft/config.pyr      s   r   c                   @   s   e Zd Zdd„ ZdS )r   c                 O   s   t dƒ‚)Nz)cuFFT callback is only available on Linux)ÚRuntimeError)Úselfr   r   r   r   r   Ú__init__   s   zset_cufft_callbacks.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s    r   TFc                 C   s`   t  d¡ t| tƒrdd„ t| ƒD ƒ}nt| tƒr| }ntdƒ‚t|ƒdkr*tdƒ‚t|ƒa	dS )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_gpusc                 S   s   g | ]}|‘qS r   r   )Ú.0Úir   r   r   Ú
<listcomp>4   s    z"set_cufft_gpus.<locals>.<listcomp>z%gpus must be an int or a list of int.é   zMust use at least 2 GPUs.N)
r   ÚexperimentalÚ
isinstanceÚintÚrangeÚlistÚ
ValueErrorÚlenÚtupleÚ_devices)ÚgpusÚdevsr   r   r   Úset_cufft_gpus   s   


r&   )Úcupyr   Úcupy.fft._cacher   r   r   r   r   r   r	   ÚsysÚ_sysÚplatformÚ
startswithÚcupy.fft._callbackr   r   Úenable_nd_planningÚuse_multi_gpusr#   r&   r   r   r   r   Ú<module>   s$    