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   L/home/ubuntu/veenaModal/venv/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$    