cupy.fft._cache.PlanCache#

class cupy.fft._cache.PlanCache(Py_ssize_t size=16, Py_ssize_t memsize=-1, int dev=-1)[源代码]#

一个用于 cuFFT 计划的、基于线程、基于设备、最少最近使用 (LRU) 的缓存。

参数:
  • size (int) – 缓存可以容纳的计划数量。默认值为 16。将其设置为 -1 将忽略此限制。

  • memsize (int) – 缓存中的计划将用于其工作区域的 GPU 内存量,以字节为单位。默认值为 -1,表示无限制。

  • dev (int) – 缓存所针对的设备的 ID。

注意

  1. 通过将 size 设置为 0 (通过调用 set_size()) 或将 memsize 设置为 0 (通过调用 set_memsize()),可以禁用缓存,并且任何操作都将无效 (no-op)。要重新启用它,只需设置一个非零的 size 和/或 memsize

  2. 用户可以实例化此类,但不建议这样做。相反,我们期望通过 get_plan_cache() 方法获取缓存句柄的以下标准用法模式:

    from cupy.cuda import Device
    from cupy.fft.config import get_plan_cache
    
    # get the cache for device n
    with Device(n):
        cache = get_plan_cache()
        cache.set_size(0)  # disable the cache
    

    特别是,设备 n 的缓存应在设备 n 的上下文中进行操作。

  3. 此类是线程安全的,因为它默认是按线程创建的。启动新线程时,直到调用 get_plan_cache() 或手动调用构造函数时,才会初始化新的缓存。

  4. 对于多 GPU 计划,该计划将被添加到每个参与的 GPU 的缓存中。移除时(由任何一个缓存),该计划将从每个参与的 GPU 的缓存中移除。

  5. 此缓存支持迭代器协议,并返回一个 2 元组:(key, node),从最近使用的计划开始。

方法

__getitem__(key, /)#

返回 self[key]。

__setitem__(key, value, /)#

将 self[key] 设置为 value。

__iter__()#

实现 iter(self)。

clear(self)#
get(self, tuple key, default=None)#
get_curr_memsize(self) Py_ssize_t#
get_curr_size(self) Py_ssize_t#
get_memsize(self) Py_ssize_t#
get_size(self) Py_ssize_t#
set_memsize(self, Py_ssize_t memsize)#
set_size(self, Py_ssize_t size)#
show_info(self)#
__eq__(value, /)#

返回 self==value。

__ne__(value, /)#

返回 self!=value。

__lt__(value, /)#

返回 self<value。

__le__(value, /)#

返回 self<=value。

__gt__(value, /)#

返回 self>value。

__ge__(value, /)#

返回 self>=value。