在 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 核心 的相关文章

  • 在 Tensorflow tf.nn.nce_loss 中出现 TypeError:'Mul' Op 的输入 'y' 的类型为 float32,与参数 'x' 的 int32 类型不匹配

    我正在研究 Tensor Flow 中的 Bag of Words 实现 并得到了 类型错误 Mul Op 的输入 y 的类型为 float32 与参数 x 的 int32 类型不匹配 在 tf nn nce loss 中 我尝试查看 tf
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • 如何在进入新活动之前终止线程和处理程序

    大家好 在我尝试清理处理程序时 这段代码可能有点混乱 因为我一直在尝试追踪崩溃发生的位置 我有一个对话框活动 显示密码输入 进度条由线程和处理程序动画显示 似乎当我试图查看进度条是否完成并尝试终止线程时 当我尝试进入新活动时 我这样做的方式
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • Python urllib.request.urlopen:AttributeError:'bytes'对象没有属性'data'

    我正在使用 Python 3 并尝试连接到dstk 我收到错误urllib包裹 我对SO进行了很多研究 但找不到与这个问题类似的东西 api url self api base street2coordinates api body jso
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • 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