CPU-GPU并行编程(Python)

2024-01-08

有没有一种方法可以在 CPU 和 GPU 上同时运行函数(使用 Python)?我已经在使用 Numba 对 GPU 上的计算密集型函数进行线程级调度,但我现在还需要在 CPU-GPU 之间添加并行性。一旦我们确保 GPU 共享内存拥有开始处理的所有数据,我需要触发 GPU 启动,然后使用 CPU 在主机上并行运行一些函数。

我确信 GPU 返回数据所花费的时间比 CPU 完成任务要多得多。这样,一旦 GPU 完成处理,CPU 就已经在等待将数据获取到主机。是否有标准库/方法来实现这一目标?感谢这方面的任何指示。


谢谢罗伯特和安德。我也有类似的想法,但不太确定。我检查过,直到我在核心之间进行一些任务完成同步(例如使用 CuPy 时的 cp.cuda.Device().synchronize()),我才能有效地并行运行 GPU-CPU。再次感谢。 Numba 的一般流程GPU函数 and 中央处理器功能并行运行将类似于以下内容:

    """ GPU has buffer full to start processing Frame N-1 """
    tmp_gpu = cp.asarray(tmp_cpu)
    gpu_function(tmp_gpu)
    """ CPU receives Frame N over TCP socket """
    tmp_cpu = cpu_function()
    """ For instance we know cpu_function takes [a little] longer than gpu_function """
     cp.cuda.Device().synchronize()

当然,我们甚至可以通过使用 PING-PONG 缓冲区和初始帧延迟来消除将 tmp_cpu 传输到 tmp_gpu 所花费的时间。

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

CPU-GPU并行编程(Python) 的相关文章

随机推荐

  • IronPython Web 框架

    Python 似乎有很多优秀的 Web 框架 有人在 IronPython 中使用过这些 Pylons Web2Py Django 吗 Django 已在 IronPython 上运行 http unbracketed org 2008 m
  • 依赖类型:依赖对类型与不相交联合有何相似之处?

    我一直在研究依赖类型 我了解以下内容 Why 通用量化 https en wikipedia org wiki Universal quantification被表示为依赖函数类型 x A B x means 对全部x类型的A有一个类型的值
  • C# Windows 窗体用户控件控件设计器支持

    我正在寻找的是对用户控件内的控件的相同类型的设计器支持 即 调整用户控件内的文本框大小 移动标签将用户控件放置到表单上之后 我能做的事 创建一个用户控件 使用设计器向其添加控件 创建一个新的窗口窗体应用程序 将用户控件添加到工具箱 将控件拖
  • JQuery 在该位置插入表格行

    我一直在研究一种能够向 html 表插入行的解决方案 这非常棘手 我发现了一些有用的东西 但仅适用于第一个 插入 我不知道我做错了什么 我有一个包含 3 列的基本表格 每个表格都有一个按钮 允许在两行之间插入一行 我在这个网站上搜索了一个解
  • 如何让 .env 预提交 + mypy + django-stubs

    我尝试在提交之前配置启动 mypy django stubs 检查 我使用预提交 当我尝试提交时 出现错误django core exceptions ImproperlyConfigured 设置 POSTGRES DB 环境变量 该变量
  • java.sql 中的日期时间等效项? (有 java.sql.datetime 吗?)

    到目前为止 我还没有找到明确的答案 我想知道使用PreparedStatement 的SQL 类型DATETIME 和java 类型的等价物是什么 我已经发现 http www java2s com Code Java Database S
  • Shell 脚本中的 exec ${PERL-perl} -Sx $0 ${1+"$@"} 是什么意思?

    我的任务是将包含 Shell 脚本 Perl 代码的 shell 脚本转换为 Python 我设法将 Perl 代码转换为 Python 但是有这个shell脚本语句我不明白 usr bin sh exec PERL perl Sx 0 1
  • 没有元素时流的特殊行为

    我如何用 java 8 Streams API 表达这一点 我想表演itemConsumer对于流的每个项目 如果有 没有我想要执行的项目emptyAction 当然我可以写这样的东西 Consumer itemConsumer Syste
  • 没有画布的 HTML5 getImageData [重复]

    这个问题在这里已经有答案了 有没有办法在没有画布的情况下使用图像的 getImageData 我想要获取图像鼠标位置处的像素颜色 不 你不能 但是获取 imageData 可以使用内存中的画布来完成 这既快速又简单 var canvas d
  • Powershell ISE 在使用 GitLab Runner 时抛出 RemoteException

    I am trying to stop GitlabRunner windows service using powershell When I execute the command in elevated powershell prom
  • 如何使用可视化代码编辑器在 chrome 上运行 flutter

    如何在 Chrome 上运行 flutter 应用程序 我已经安装了颤振套件并运行 颤振通道测试版 颤振升级 并在 Visual Studio Code 上安装扩展 就像与flutter mobile create flutter laun
  • Python内存模型和指针

    我正在学习 Python 并对 Python 的内存模型感到困惑 变量包含它所引用的对象的内存地址 这听起来就像 Python 变量实际上是指针 因为它们只直接包含实际对象实例的内存地址 那么当我调用变量名时Python会做什么呢 Pyth
  • 在 Python 中将频谱图存储为图像

    我想将音频的 STFT 频谱图存储为图像 下面的代码向我显示了一个频谱图作为输出 但是当保存为图像时 我得到了不同的图像 import numpy as np import matplotlib pyplot as plt import p
  • UICollectionViewCell 中的标签文本未更新

    我正在尝试更改 a 的文本UILabel in a UICollectionViewCell之后UICollectionViewCell已加载 当点击button 但屏幕上的标签不会更新 控制台显示标签的文本属性已更新 但标签似乎并未使用新
  • 对于没有正文的 4xx 错误,Content-Type 应该是什么?

    考虑一个获得以下响应的 HTTP 请求 405 Method Not Allowed Content Length 0 像这样的内容类型应该是什么 设置为无 Not set Set to text plain or text html 您没
  • Lucene.net 2.9.2 排序(排序不起作用)

    我在 NET 中对 lucene net 索引进行排序时遇到问题 我尝试了 stackoverflow 上的几乎所有解决方案并寻找谷歌答案 我正在使用 Lucene NET 2 9 2 和 ASP NET 2 0 我想像在 sql 中一样对
  • 如何在适用于 iOS 的谷歌地图 sdk 中设置带有位置的中心地图视图

    如何在 iOS 版谷歌地图 sdk 中设置中心地图视图和位置 使用mapkit 我们可以执行setCenter Location 如何使用适用于 iOS 的 google 地图 sdk 执行此操作 使用 GMSCameraPosition
  • 从种子点生成特定半径内的随机地理坐标

    我使用以下函数从种子点生成指定半径内的随机地理坐标 function randomGeo center radius var y0 center latitude var x0 center longitude var rd radius
  • 如何在 Java 中挂载 Windows 驱动器?

    我们正在使用一些通过字母 例如 f 访问共享驱动器的遗留代码 使用 UNC 表示法不是一个选项 我们的 Java 包装应用程序将作为服务运行 作为第一步 我想在代码中显式映射驱动器 有人这样做过吗 考虑执行映射网络驱动器的 DOS 命令 如
  • CPU-GPU并行编程(Python)

    有没有一种方法可以在 CPU 和 GPU 上同时运行函数 使用 Python 我已经在使用 Numba 对 GPU 上的计算密集型函数进行线程级调度 但我现在还需要在 CPU GPU 之间添加并行性 一旦我们确保 GPU 共享内存拥有开始处