关于tf.GPUOptions的一些参数

tf.GPUOptions(allocator_type , allow_growth , deferred_deletion_bytes, force_gpu_compatible,
per_process_gpu_memory_fraction , polling_active_delay_usecs, visible_device_list)

allocator_type: str,要使用的 GPU 分配策略的类型。

  1. ” “,空字符串(默认)使用系统选择的默认值,该默认值可能会随着时间而改变。
  2. “BFC”,从 dlmalloc(内存分配器) 版本简化的“最适配合并”算法。

allow_growth: bool,如果为 True,则分配器不会预先分配整个指定的 GPU 内存区域,而是从小处开始并根据需要增长。
deferred_deletion_bytes: int64,延迟删除最多这么多字节以减少与 gpu 驱动程序代码的交互次数。 如果为 0,则系统选择一个合理的默认值(几个 MB)。
force_gpu_compatible: bool,强制所有张量为 gpu_compatible。 在启用 GPU 的 TensorFlow 上,启用此选项会强制所有 CPU 张量分配有 Cuda 固定内存。 通常,TensorFlow 会推断应该分配哪些张量作为固定内存。 但是在推理不完整的情况下,只要适合内存,这个选项就可以显著加快跨设备内存复制的性能。 请注意,对于未知或非常大的模型,默认情况下不应启用此选项,因为所有 Cuda 固定内存都是不可分页的,固定内存过多可能会对整体主机系统性能产生负面影响。
per_process_gpu_memory_fraction: double,分配给每个进程的可用 GPU 内存的一部分。 1 表示分配所有 GPU 内存,0.5 表示进程分配高达 ~50% 的可用 GPU 内存。 除非启用了 allow_growth 选项,否则会预先分配 GPU 内存。 如果大于 1.0,则使用 CUDA 统一内存通过将主机内存用作交换空间来潜在的超额使用 GPU 设备上的可用内存量。 访问设备上不可用的内存将明显变慢,因为这需要在主机和设备之间进行内存传输。 在启用此选项之前,应考虑减少内存要求的选项,因为这可能会对性能产生负面影响。 使用统一内存的超额使用需要 Pascal 类或更新的 GPU,目前仅在 Linux 操作系统上受支持。
polling_active_delay_usecs: int32,当时间循环时,队列不为空则在 PollEvents 调用之间休眠设置的这么多微秒。当未设置或者设置为0时,设为非零默认值。
visible_device_list: str,GPU id 的逗号分隔列表,用于确定 GPU 设备的“可见”到“虚拟”映射。例如,如果 TensorFlow 可以在进程中看到 8 个 GPU 设备,并且想要将可见的 GPU 设备 5 和 3 映射为“/device:GPU:0”和“/device:GPU:1”,那么可以指定这个字段为“5,3”。
注:

  1. GPU 驱动程序以不保证与机器中的物理 GPU id 有任何关联的顺序为进程提供可见 GPU。该字段用于将“可见”重新映射到“虚拟”,这意味着这仅在进程启动后才运行。在调用 TensorFlow 之前,用户需要使用供应商特定的机制(例如 CUDA_VISIBLE_DEVICES)来控制物理到可见设备的映射。
  2. 在代码中,这个列表中的 id 也称为“平台 GPU id”,GPU 设备的“虚拟”id(即设备名称“/device:GPU:”中的 id)是也称为“TF GPU id”。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年6月15日
下一篇 2022年6月15日

相关推荐