gpt4 book ai didi

tensorflow - 覆盖 Tensorflow 中的设备范围

转载 作者:行者123 更新时间:2023-12-05 00:20:31 25 4
gpt4 key购买 nike

在以下情况下如何处理设备范围,其中外部设备范围被内部设备范围覆盖:

with tf.device("/cpu:0"):
a = function1()

with tf.device("/gpu:0"):
b = function2()

with tf.device("/gpu:1"):
c = function3()

d = a+b+c

我的直觉如下:

1) "a"首先在 "cpu:0"上计算

2) "b"和 "c"分别在 "gpu:0"和 "gpu:1"上并行计算。

3) "d"等待 "b"和 "c"因为它取决于它们,当它们的值可用时,"d"会在 "cpu:0"上计算

我的直觉正确吗?

最佳答案

大多数情况下,有一些微妙的点:

(a) "b"和 "c"可以并行计算,前提是它们在做什么没有控制流依赖性或数据依赖性。但从这个例子来看,它们是否真的真正同时执行是不可预测的。 (我认为这已经很明显了,但我想确定其他人可能会在以后阅读此内容。)

另请注意,按照规定,bc不要明确依赖 a ,所以它们三个可以同时执行是可能的。情况并非如此a必须先执行。

(b) 默认情况下,如果您不提供任何配置选项,设备放置是“软的”——如果操作无法在特定设备上执行,运行时可以覆盖内容。例如,一个仅限 CPU 的操作可以从 GPU 移回 /cpu:0 ;或固定到 /gpu:1 的操作可移至 /gpu:0如果图形在只有一个 GPU 的机器上运行。

您可以通过向 tf.Session 提供配置来控制硬对软的位置。 :

with tf.Session(config=tf.ConfigProto(allow_soft_placement=True)):

关于tensorflow - 覆盖 Tensorflow 中的设备范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34375871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com