python - 在 TensorFlow 的 Eager 模式下阻止 GPU 操作的最佳方法是什么?
问题描述
我想知道在 TensorFlow Eager 模式下等待 GPU 操作完成的推荐方法。
位于 GPU 设备上的操作似乎是异步执行的(我在 TensorFlow 文档中找不到这一点,但它与行为一致)。这很重要,例如,当使用time.time()
* 计时 GPU 操作时,因为我们需要确保在记录结束时间之前完成操作。
我能找到确保 GPU 操作已执行的唯一方法是将(部分)输出数据显式复制到 CPU。
例如(假设所有操作都在 GPU 上进行):
t0 = time.time()
result = f(input_tensor) # carry out some operations on the input
_ = result[0].numpy() # copies a single element of the output tensor to the CPU
t1 = time.time()
print("runtime =", t1 - t0)
由于将数据复制到 CPU 会产生一些开销,因此最好有办法确保 GPU 在不复制的情况下完成执行。有没有这样的方法?也许类似于 JAX 的block_until_ready()?
*我意识到time.time()
在 Eager 模式下使用可能不是计时 GPU 操作的最佳方式。
解决方案
推荐阅读
- python - Jupyter Dropdown ipywidget 显示错误的数据框
- ruby-on-rails - 添加 Node buildpack 后 Rails 应用程序不会部署
- angular - 在 app 模块中或仅在其他模块中导入模块和路由之间的区别?
- python - 为什么 Python 中的 Selenium 不会点击弹出的隐私按钮?
- python-3.x - 如何使用 python 3 tkinter/guizero 在主窗口中间启动第二个窗口?
- r - R下载压缩的ACS数据文件的问题
- google-sheets - 希望将 HTML 信息导入 Google 工作表
- stored-procedures - 如果存在则删除并创建表,如果不存在则在 oracle 中创建过程
- python - 如何处理大型 json 文件(将其展平为 tsv)
- cryptography - HLK/HCK 文件的数字签名