3.8。设备管理

原文: http://numba.pydata.org/numba-doc/latest/cuda/device-management.html

对于多 GPU 机器,用户可能想要选择要使用的 GPU。默认情况下,CUDA 驱动程序选择最快的 GPU 作为设备 0,这是 Numba 使用的默认设备。

除非使用托管/提供多个支持 CUDA 的 GPU 的系统,否则此页面上介绍的功能通常不感兴趣。

3.8.1。设备选择

如果需要,必须在使用任何 CUDA 功能之前完成设备选择。

  1. from numba import cuda
  2. cuda.select_device(0)

该设备可以通过以下方式关闭:

  1. cuda.close()

然后,用户可以使用其他设备创建新上下文。

  1. cuda.select_device(1) # assuming we have 2 GPUs
  1. numba.cuda.select_device(device_id)

为所选 device_id 创建新的 CUDA 上下文。 device_id 应该是设备的编号(从 0 开始;设备顺序由 CUDA 库确定)。上下文与当前线程相关联。 Numba 目前每个线程只允许一个上下文。

如果成功,则此函数返回设备实例。

  1. numba.cuda.close()

显式关闭当前线程中的所有上下文。

注意

编译的函数与 CUDA 上下文相关联。这使得关闭和创建新设备并不是非常有用,尽管当机器有多个 GPU 时,选择使用哪个设备当然很有用。

3.9。设备列表

设备列表是系统中所有 GPU 的列表,可以编制索引以获取确保在所选 GPU 上执行的上下文管理器。

  1. numba.cuda.gpus
  1. numba.cuda.cudadrv.devices.gpus

gpus_DeviceList类的一个实例,也可以从中检索当前的 GPU 上下文:

  1. class numba.cuda.cudadrv.devices._DeviceList
  1. current

如果没有活动设备,则返回活动设备或 None