GPU 上的 Tensorflow matmul 计算比 CPU 上慢

2023-12-07

我是第一次尝试 GPU 计算,当然希望能有很大的加速。然而,对于张量流中的基本示例,情况实际上更糟:

在 cpu:0 上,十次运行中的每一次平均需要 2 秒,gpu:0 需要 2.7 秒,gpu:1 比 cpu:0 差 50%,需要 3 秒。

这是代码:

import tensorflow as tf
import numpy as np
import time
import random

for _ in range(10):
    with tf.Session() as sess:
        start = time.time()
        with tf.device('/gpu:0'): # swap for 'cpu:0' or whatever
            a = tf.constant([random.random() for _ in xrange(1000 *1000)], shape=[1000, 1000], name='a')
            b = tf.constant([random.random() for _ in xrange(1000 *1000)], shape=[1000, 1000], name='b')
            c = tf.matmul(a, b)
            d = tf.matmul(a, c)
            e = tf.matmul(a, d)
            f = tf.matmul(a, e)
            for _ in range(1000):
                sess.run(f)
        end = time.time()
        print(end - start)

我在这里观察到什么?运行时可能主要是在 RAM 和 GPU 之间复制数据吗?


你用来生成数据的方式是在CPU上执行的(random.random()是一个常规的 python 函数,而不是 TF-one)。另外,执行它10^6时间会比请求的慢10^6一次运行中的随机数。 将代码更改为:

a = tf.random_uniform([1000, 1000], name='a')
b = tf.random_uniform([1000, 1000], name='b')

这样数据将在 GPU 上并行生成,并且不会浪费时间将其从 RAM 传输到 GPU。

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

GPU 上的 Tensorflow matmul 计算比 CPU 上慢 的相关文章

  • 如何收集列表、字典等中重复计算的结果(或制作修改每个元素的列表的副本)?

    There are a great many existing Q A on Stack Overflow on this general theme but they are all either poor quality typical
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • 交换keras中的张量轴

    我想将图像批次的张量轴从 batch size row col ch 交换为 批次大小 通道 行 列 在 numpy 中 这可以通过以下方式完成 X batch np moveaxis X batch 3 1 我该如何在 Keras 中做到
  • 在 nHibernate 关系中使用实体的 Lite 版本?

    在某些情况下 出于性能原因 创建一个实体的轻量级版本 指向同一个表 但映射的列较少 这是一个好主意吗 例如 如果我有一个包含 50 列的联系人表 并且在一些相关实体中 我可能对 FirstName 和 LastName 属性感兴趣 那么创建
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • 如何将客户端属性添加到 FirebaseListObservable 中的项目?

    我正在构建一个由 Firebase 数据库结构支持的简单聊天应用程序 messages KTjL oLrKOboa2su2zk name puf text Look I m smiling KTjNfaNem752ChFBcnC name
  • 如何动态更改log4j日志文件?

    我想要一个 log4j 配置 使得日志文件名应类似于 System name log log 也就是说 如果应用程序在任何系统上启动 则无需更改配置文件或代码 它应该生成如上所述的日志文件名 谢谢 我这样做 1 通过以下方式初始化记录器 S
  • 如何在页面加载时使用 ajax 将 php include 加载到页面中

    我有一个 php include 需要一段时间才能加载 因为 PHP 必须获取大量数据 我不想减慢整个网页加载等待此包含的速度 那么如何使用 ajax 加载此包含 我不希望通过单击按钮来触发ajax 我只是希望它在页面加载时加载包含内容 这
  • 图像在旋转时会改变大小。我该如何阻止这个?

    我正在为 Android 制作游戏 我需要旋转图像 当我旋转它时 它的尺寸显然会发生变化 例如 当它旋转 45 度时 它是正方形 但我希望它适用于任何矩形 因此它是一个更通用的解决方案 它的宽度和高度变成对角线的长度 比原来的长 经过一些代
  • 如何使用MacWire(播放框架)将依赖项注入到服务中

    我有一个服务类 该服务有一种方法getSomethingFromApi 现在 我想要有 play 配置实例 以便我可以从 application conf 中提取内容 并有一个 play WSClient 以便我可以执行 http 调用 这
  • 在Python中组合with语句和for循环

    考虑以下 python 代码 它使用上下文管理器来获取和释放资源 from contextlib import contextmanager contextmanager def res i print f Opening resource
  • Git 无法在 Linux 上使用 LF 检出使用 CRLF 存储的文件

    我正在检查第三方项目 libjpeg https github com winlibs libjpeg在Linux上 这只是一个例子 实际上我在许多其他项目中也遇到了同样的问题 我有以下 Git 行结尾配置 我只配置了全局设置 设置为以 L
  • 检查用户是否使用 Tor 请求网站的现代方法是什么? (php)

    我尝试了很多方法 但所有方法都不适合我 我想它们已经过时了 事情已经改变了 也许有人可以告诉我挖掘的方向 我是一个名为的 PHP 库的作者TorUtils它提供了许多与 Tor 和中继相关的类 One of the classes it p
  • 在测试期间覆盖 DateTime.Now 的好方法是什么?

    我有一些 C 代码 它们依赖今天的日期来正确计算未来的事情 如果我在测试中使用今天的日期 我必须在测试中重复计算 这感觉不对 在测试中将日期设置为已知值以便我可以测试结果是否为已知值的最佳方法是什么 我的偏好是让使用时间的类实际上依赖于接口
  • 是否可以在事务内(在 SQL Server 内)运行多个 DDL 语句?

    我想知道是否可以在一个事务内运行多个 DDL 语句 我对 SQL Server 特别感兴趣 尽管其他数据库 至少是 Oracle PostgreSQL 的答案也可能很有趣 我一直在为事务内创建的表执行一些 CREATE TABLE 和 CR
  • jquery 中 angularjs 拦截器的等效项

    我想像 httpProvider interceptors 在 angularjs 中那样拦截 REST 请求的响应 https docs angularjs org api ng service http 我正在使用 jQuery 制作一
  • Spark GraphX:添加多个边权重

    我是 GraphX 的新手 有一个包含四列的 Spark 数据框 如下所示 src ip dst ip flow count sum bytes 8 8 8 8 1 2 3 4 435 1137 基本上我想映射两者src ip and ds
  • NetworkX:从字典中将边添加到图形中,并将列表作为值

    我有一个关于如何从包含列表作为值的字典向图形添加边的问题 我想定义一个函数 该函数将字典作为参数 然后为值列表中的每个键 对象添加一条边 我创建了空的图形结构 想知道是否有一种聪明的方法来添加整个字典 def build network 字
  • 将焦点设置在 div contenteditable 元素上

    我有一个 div 我通过所见即所得定义了一些元素 例如 p p h1 等等 我想直接将焦点放在这些元素之一上 例如关于 p 但似乎focus 功能不起作用 p div 元素 p 元素 在我的案例中 还有其他方法来定义焦点吗 老帖子 但没有一
  • IntelliJ IDEA 似乎忽略了代码格式

    我一直在尝试让我的 Intellij IDEA 确认类似 google 的 Java 标准 然而导入和手动设置似乎都被忽略了 Here s how my indentations are currently set 然而 我的代码仍然格式化
  • 从 matplotlib 图像获取 RGBA 数组

    我正在使用imshow使用自定义颜色图和边界范数绘制数组 但是 这将是一个自动化脚本 我想保存由imshow没有轴 所以我不确定imshow是执行此操作的最佳方法 因为它将在后台运行 有没有一种替代方法 我可以设置颜色图和边界规范并生成一个
  • raw vs. html_safe vs. h 来取消转义 html

    假设我有以下字符串 x a href Turn me into a link a 在我看来 我希望显示一个链接 也就是说 我不希望 x 中的所有内容都未转义并显示为字符串 使用有什么区别 考虑 Rails 3 html safe实际上 将字
  • 如何在 Perl 中处理具有依赖关系的调度线程?

    我有以下场景 sub 1 can run immediately sub 2 can run immediately sub 3 can run only after sub 1 finishes sub 4 can run only af
  • JSONStore searchFields 中“数字”和“整数”之间的差异

    我有关于 JSONStore searchFields 的问题 如果我使用number作为 searchFields 键并尝试通过以下方式查找数据WL JSONStore find方法与0作为查询 它将命中所有数据 未过滤 随着intege
  • GPU 上的 Tensorflow matmul 计算比 CPU 上慢

    我是第一次尝试 GPU 计算 当然希望能有很大的加速 然而 对于张量流中的基本示例 情况实际上更糟 在 cpu 0 上 十次运行中的每一次平均需要 2 秒 gpu 0 需要 2 7 秒 gpu 1 比 cpu 0 差 50 需要 3 秒 这