在 TensorFlow 中使用多个 CPU 核心

2023-12-10

我广泛研究了有关 TensorFlow 的其他答案,但我似乎无法让它在我的 CPU 上使用多个内核。

根据 htop 的说法,以下程序仅使用单个 CPU 核心:

import tensorflow as tf

n_cpus = 20

sess = tf.Session(config=tf.ConfigProto(
    device_count={ "CPU": n_cpus },
    inter_op_parallelism_threads=n_cpus,
    intra_op_parallelism_threads=1,
))

size = 100000

A = tf.ones([size, size], name="A")
B = tf.ones([size, size], name="B")
C = tf.ones([size, size], name="C")

with tf.device("/cpu:0"):
    x = tf.matmul(A, B)
with tf.device("/cpu:1"):
    y = tf.matmul(A, C)

sess.run([x, y])

# run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
# run_metadata = tf.RunMetadata()
# sess.run([x, y], options=run_options, run_metadata=run_metadata)

# for device in run_metadata.step_stats.dev_stats:
#     device_name = device.device
#     print(device.device)
#     for node in device.node_stats:
#         print("   ", node.node_name)

但是,当我取消注释底部的行并更改时size为了使计算实际上在合理的时间内完成,我发现 TensorFlow 似乎认为它至少使用了 2 个 CPU 设备:

/job:localhost/replica:0/task:0/device:CPU:0
    _SOURCE
    MatMul
    _retval_MatMul_0_0
    _retval_MatMul_1_0_1
/job:localhost/replica:0/task:0/device:CPU:1
    _SOURCE
    MatMul_1

从根本上来说,我想要做的是在不同的内核上并行执行不同的操作。我不想将单个操作拆分到多个核心上,尽管我知道这恰好在这个人为的示例中起作用。两个都device_count and inter_op_parallelism_threads听起来像我想要的,但似乎都没有真正导致使用多核。我已经尝试了所有我能想到的组合,包括将其中一个或另一个设置为1万一它们相互冲突,并且似乎没有任何作用。

我也可以确认taskset我没有对我的 CPU 亲和力做任何奇怪的事情:

$ taskset -p $$
pid 21395's current affinity mask: ffffffffff

我到底需要对这段代码做什么才能让它使用多个 CPU 核心?

Note:

  • From 这个答案其中我正在设置device_count and inter_op_parallelism_threads.
  • 跟踪命令来自这个答案.
  • 我可以删除tf.device调用,它似乎对我的 CPU 利用率没有任何影响。

我正在使用从 conda 安装的 TensorFlow 1.10.0。


经过一番来回TensorFlow 问题在这里我们确定问题在于该程序正在通过恒定的折叠传递进行“优化”,因为输入都很微不足道。事实证明,这个恒定的折叠过程是按顺序运行的。因此,如果您想观察并行执行,执行此操作的方法是使输入变得不平凡,以便常量折叠不会应用于它们。该问题中建议的方法是使用tf.placeholder,我在这里编写了一个利用它的示例程序:

https://gist.github.com/elliottslaughter/750a27c832782f4daec8686281027de8

请参阅原始问题以获取程序的示例输出:https://github.com/tensorflow/tensorflow/issues/22619

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 TensorFlow 中使用多个 CPU 核心 的相关文章

  • Python Nose 导入错误

    我似乎无法理解鼻子测试框架 https nose readthedocs org en latest 识别文件结构中测试脚本下方的模块 我已经设置了演示该问题的最简单的示例 下面我会解释一下 这是包文件结构 init py foo py t
  • 如何可靠地判断 boost 线程是否已退出其 run 方法?

    我以为 joinable 会表明这一点 但事实似乎并非如此 在工人阶级中 我试图表明它仍在通过谓词进行处理 bool isRunning return thread gt joinable 已经退出的线程不是不能加入吗 我错过了什么 boo
  • Python:记录垃圾收集器

    我有一个 python 应用程序 有一些性能问题 我想将垃圾收集器的事件 特别是何时调用 添加到我的日志中 是否可以 thanks http docs python org library gc html gc set debug http
  • Python 在 chroot 中运行时出现错误

    我尝试在 chroot 中运行一些 Python 程序 但出现以下错误 Could not find platform independent libraries
  • Python + PostgreSQL + 奇怪的ascii = UTF8编码错误

    我有包含字符的 ascii 字符串 x80 代表欧元符号 gt gt gt print x80 当将包含该字符的字符串数据插入数据库时 我得到 psycopg2 DataError invalid byte sequence for enc
  • Scikit-learn 的内核 PCA:如何在 KPCA 中实现各向异性高斯内核或任何其他自定义内核?

    我目前正在使用Scikit learn 的 KPCA https scikit learn org stable modules generated sklearn decomposition KernelPCA html对我的数据集执行降
  • conda 无法从 yml 创建环境

    我尝试运行下面的代码来从 YAML 文件创建虚拟 Python 环境 我在 Ubuntu 服务器上的命令行中运行代码 虚拟环境名为 py36 当我运行下面的代码时 我收到下面的消息 环境也没有被创建 这个问题是因为我有几个必须使用 pip
  • 如何找到列表S的所有分区为k个子集(可以为空)?

    我有一个唯一元素列表 比方说 1 2 我想将其拆分为 k 2 个子列表 现在我想要所有可能的子列表 1 2 1 2 2 1 1 2 我想分成 1 1 2 我怎样才能用 Python 3 做到这一点 更新 我的目标是获取 N 个唯一数字列表的
  • 为 Networkx 图添加标题?

    我希望我的代码创建一个带有标题的图 使用下面的代码 可以创建绘图 但没有标题 有人可以告诉我我做错了什么吗 import pandas as pd import networkx as nx from networkx algorithms
  • 一行Python和SQLite代码,为什么需要加“,”? [复制]

    这个问题在这里已经有答案了 c execute INSERT INTO numbers VALUES random randint 0 100 如果我将上面的代码更改为 c execute INSERT INTO numbers VALUE
  • Matplotlib 图例不工作

    自从升级 matplotlib 以来 每当尝试创建图例时 我都会收到以下错误 usr lib pymodules python2 7 matplotlib legend py 610 UserWarning Legend does not
  • pip 安装软件包两次

    不幸的是我无法重现它 但我们已经见过几次了 pip 将一个软件包安装两次 如果卸载第一个 第二个就会可见并且也可以被卸载 我的问题 如果一个包安装了两次 如何用 python 检查 背景 我想编写一个测试来检查这一点 devOp Updat
  • 参数验证,Python 中的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 让我们举一个 API 的例子 def get abs directory self path if os path isdir path ret
  • 当另一个线程发生事情时从主线程获取数据?

    目前我有一个线程正在运行一个侦听连接的套接字 当它收到连接时 它需要上传在主线程中收集的数据 即从主线程获取数据 但是 我传递了对象的实例 但它从未使用等待连接时收集的数据进行更新 有没有正确的方法来做到这一点 我用谷歌搜索了一下 似乎找不
  • Spyder 如何在同一线程的后台运行 asyncio 事件循环(或者确实如此?)

    我已经研究 asyncio 模块 功能几天了 因为我想将它用于我的应用程序的 IO 绑定部分 并且我认为我现在对它的工作原理有一个合理的理解 或者在至少我认为我已经理解了以下内容 任一时刻 任一线程中只能运行一个异步事件循环 一旦一切都设置
  • 如何正确消除字典中的元素直到只剩下一个字符串

    我真的需要这方面的帮助 def get winner dict winner new dict for winner in dict winner first letter winner 0 value dict winner winner
  • 在 Python 的 Textmate 中突出显示尾随空格?

    我想做类似的事情this http remysharp com 2008 03 30 trailing white space in textmate Textmate 提示 这样当我在 Python 中编写代码时 尾随空白总是以某种方式突
  • scipysolve_ivp() 中的访问时间步长

    我有一个常微分方程系统 正在使用 scipy 的solve ivp 函数求解 它运行良好 但我在访问每个步骤中使用的时间步时遇到问题 我知道solve ivp 将当前时间传递给用户定义的函数 但我需要使用的时间步长 而不是当前时间 为了解决
  • issubclass() 对从不同路径导入的同一类返回 False

    目的是实现某种插件框架 其中插件是同一基类 即 A 的子类 即 B 基类使用标准导入加载 而子类使用 imp load module 从众所周知的包 即 pkg 的路径加载 pkg init py mod1 py class A mod2
  • Python 枚举子集迭代

    我想迭代以下枚举的子集 class Items enum Enum item1 0 item2 1 item3 2 item4 3 item5 4 item6 5 item7 6 item8 7 说我想 for item in Items

随机推荐

  • ServiceController.start() 和 ServiceController.stop() 抛出异常?

    下面的代码抛出异常 我不明白我在代码中犯了什么错误 有人可以帮我弄清楚吗 我认为这是一些担保权问题 如果是这样 我如何向任何用户或应用程序授予以编程方式访问此 Windows 服务的安全权限 Dim sc As New ServiceCon
  • 工具栏中 Android 微调器上的翻转箭头

    我在屏幕底部的工具栏中有一个微调器 但微调器旁边的箭头指向下方 这是违反直觉的 有没有什么快速的方法可以将箭头翻转到向上 如果有帮助的话 微调器的定义如下
  • 如何等待异步完成

    我想运行一些异步工作流程 然后等待它完成后再打印一些结果 例如 let dowork n async do printfn work d n let creatework async for x in 1 5 do Async Start
  • 正则表达式:将 $ 放入 [ ]

    echo tests perl pe s s t g Unmatched in regex marked by lt HERE in m s lt HERE 5 020000 at e line 1 lt gt line 1 我不能放 in
  • 在 Python 中从多列中查找最接近的值并添加到新列

    我有以下数据框 import pandas as pd import numpy as np data index 1 2 3 4 5 A 11 17 5 9 10 B 8 6 16 17 9 C 10 17 12 13 15 target
  • 在功能性 UIScrollView 中使用 UIPanGestureRecognizer 进行平移视图

    问题 我有一个UIScrollView含有一个UIView我希望允许用户使用UIPanGestureRecognizer 为了使其按预期工作 用户应该能够用一根手指平移视图 但是also能够用另一根手指平移滚动视图 两者都可以同时 每个手指
  • 使用 onesignal 向特定用户发送通知

    我在用着一个信号这是我的项目中的第一次 我必须在某些事件上向特定用户 无论用户在 Chrome 或 Android 设备上登录 发送通知 例如 Whatsapp 也会在移动设备和网站上发送通知 并且仅当用户登录时才发送 我已成功向所有人发送
  • 设置 Rails cookie 的开始日期和到期日期

    如何设置 Rails cookie 在特定日期开始和 或过期 摘录自Rails 5 文档 Cookie 是通过 ActionController cookies 读取和写入的 正在读取的 cookie 是与请求一起接收的 cookie 正在
  • 使用正则表达式选择电话号码的变体

    import re s so the 1234 2 1 1919 215 777 9839 1333331234 20 20 2000 A1234567 515 2331129 7654321B 511 231 1134 512 333 1
  • 使用ios将图像转换为gif [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我正在尝试使用 IOS Xcode 4 5 以编程方式转换 10 张 gif 格
  • 如何将状态栏设置为透明但使导航栏保持黑色?

    正如我的问题所示 我试图弄清楚如何将状态栏颜色设置为透明 同时保持导航栏黑色 自然色 不影响屏幕高度 我参考了这个网站 Android 完全透明的状态栏 部分有效的解决方案之一是 getWindow setFlags WindowManag
  • 致命错误:超出最大执行时间 400 秒

    我有一个 PHP 脚本 在执行长 mysq query 时失败 错误信息是 致命错误 超过了 400 秒的最大执行时间 我在 Windows 上使用 XAMPP 并且更改了 php ini 文件 我的安装中只有一个 将 max execut
  • XMLHttpRequest 无法加载 .... 预检响应具有无效的 HTTP 状态代码 401

    下面是我的服务调用 我正在尝试进行基本的身份验证 我检查了多个博客都找不到解决方案 任何人都可以帮我解决这个问题 因为我收到以下错误 XMLHttpRequest 无法加载 预检响应具有无效的 HTTP 状态代码 401 我也无法在开发人员
  • cURL 给出无法解析主机

    我在新的专用服务器上 但在curl 连接上遇到错误 我试过那个 h curl init curl setopt h CURLOPT HEADER 1 curl setopt h CURLOPT RETURNTRANSFER 1 curl s
  • 如何截取包含视频和画布的 div 的屏幕截图?

    注意 这不是重复的 因为我没有找到任何与截取视频和画布截图相关的问题 并且我尝试了 html2canvas 我们有一个 div 内部包含视频元素和画布 视频用于流式传输 画布用于在视频上绘制任何内容 现在 如果我截取 div 的屏幕截图 它
  • 如何阻止 Excel 工作簿在自动化打开时闪烁?

    我将 GetObject 与工作簿路径结合使用来创建新实例或获取现有 Excel 实例 如果它正在抓取现有的用户创建的实例 则应用程序窗口是可见的 如果相关工作簿路径关闭 它将打开并隐藏 但不会在屏幕上闪烁之前 Application Sc
  • 在shell脚本中将xml文件转换为csv?

    我正在尝试将 xml 文件转换为 csv 文件 我有一个像这样的输入 xml 文件
  • 通过 VMWare 测试 iOS 设备

    我正在尝试将我的 iPhone 应用程序上传到我的 iPhone 我在 VMWare 虚拟机上运行 Xcode 和 OS X 尽管 iTunes 在插入 iPhone 时可以识别它 这意味着虚拟机和 iPhone 之间的 USB 连接工作正
  • 无法使用 jackson 反序列化器反序列化 java.awt.color

    public class TestJacksonColor public static void main String args throws IOException ObjectMapper objectMapper new Objec
  • 在 TensorFlow 中使用多个 CPU 核心

    我广泛研究了有关 TensorFlow 的其他答案 但我似乎无法让它在我的 CPU 上使用多个内核 根据 htop 的说法 以下程序仅使用单个 CPU 核心 import tensorflow as tf n cpus 20 sess tf