Tensorflow 跨设备通信

2023-11-24

正如tensorflow论文所述,Tensorflow的跨设备通信是通过在设备中添加“接收节点”和“发送节点”来实现的。

根据我的理解,设备(请考虑仅涉及CPU设备)负责执行操作的计算。然而,数据(例如:操作产生的张量、变量缓冲区)驻留在内存中。不知道如何实现从一台设备到另一台设备的数据传输身体上的。我猜数据传输是通过共享内存来实现的。是对的吗?

我将感谢有关如何实现数据传输的任何解释/相应代码。 附:TensorFlow 论文链接,图4展示了跨设备通信机制。


在 TensorFlow 中,跨设备通信是通过使用Rendezvous接口,它有多种不同的实现,具体取决于部署。该界面的评论描述了总体思路:

// A Rendezvous is an abstraction for passing a Tensor
// from a producer to a consumer, where the consumer may safely
// request the Tensor before or after it has been produced.  A
// producer never blocks when using a Rendezvous.  A consumer has the
// choice of making a blocking call or providing a callback: in either
// case, the consumer receives the Tensor as soon as it is available.

正如您在问题中指出的,TensorFlow 使用以下方式表示数据流图中的通信Send and Recv当图表跨设备分区时自动添加到图表中的操作。对于在不同设备上具有源和目标的每条边,图分区器会插入一对Send and Recv共享相同“集合点键”(自动生成的字符串名称,用作要通信的待处理张量的集合点索引中的键)的操作。这的实施Send op很简单:它调用Rendezvous::Send(),传入其集合点键和单个输入张量,然后立即返回而不会阻塞。这的实施Recv op稍微复杂一些:它注册一个回调,当具有给定键的张量可用时调用。那callback负责“产生”输出Recvop,并解除后续计算的阻塞。

The Rendezvous实现执行传输数据的实际工作:

  • IntraProcessRendezvous在同一进程中处理设备之间的数据传输。如果传输发生在同一进程中的两个 CPU 设备之间(不太可能),则可以通过simple Tensor任务。否则,TensorFlow揭开序幕用于在 CPU 和 GPU 设备之间传输数据的设备特定 DMA 例程。

  • The BaseRemoteRendezvous类及其子类在发送方和接收方可以位于不同进程的情况下处理跨设备通信。该类的主要实现是RpcRemoteRendezvous, which 使用 gRPC处理远程传输。

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

Tensorflow 跨设备通信 的相关文章

随机推荐

  • 添加注释到pdf

    我开发了一个 pdf 查看器 其中包含您的所有建议和代码片段 谢谢 现在我想把它变成一个pdf编辑器 我想为 iphone ipad 创建一个类似于 PDFKit 的应用程序 仅适用于桌面 我希望用户能够添加注释并突出显示文本部分 我该怎么
  • 为什么卷积神经网络可以具有低损失,但精度却非常低?

    I am new to machine learning and am currently trying to train a convolutional neural net with 3 convolutional layers and
  • jQuery SVG,为什么我不能 addClass?

    我正在使用 jQuery SVG 我无法向对象添加或删除类 有人知道我的错误吗 The SVG
  • 同步两个RichTextBox的滚动位置?

    在我的申请表中 我有两个RichTextBox对象 它们的文本行数始终相同 我想 同步 这两者之间的垂直滚动 以便当用户更改其中一个的垂直滚动位置时 另一个滚动相同的量 我该怎么做呢 感谢杰伊的回答 经过更多搜索 我也找到了所描述的方法he
  • Formik + 是的:如何在安装时立即验证表单?

    我想在安装表单时显示字段错误 提交后不行 Yup const validation Yup object shape field Yup string required Required Formik
  • golang中星号(*struct)表示法是什么意思

    NewReaderSize returns a new Reader whose buffer has at least the specified 43 size If the argument io Reader is already
  • geom_area 绘图默认堆叠区域

    我在用geom area绘制一个非常简单的数据集 绘图时使用geom line一切正常 但是当我切换到geom area绘制更高的值 我认为查看图表是代表我的问题的最佳方式 require tidyverse x lt structure
  • 在 CPanel 中编辑 DNS 记录的 PHP 脚本

    我想变得自给自足 因此不需要 DNSDynamic 和 DYNDNS 等服务 而且我不喜欢为我自己可以做的服务付费 场景如下 我的主网站由托管公司托管 我还有一个家庭服务器 上面有我的音乐等 但问题是我的 ISP BT 不向消费者提供静态
  • 确保第一个 ajax 函数在第二个之前完成

    我有一个 JavaScript 函数 它使用 jQuery 发出两个连续的 Ajax 请求 我想确保在调用第二个函数之前第一个请求已加载 我有办法做到这一点吗 要么指定async false in the ajax选项 或者进行第二个 aj
  • 样式图标标记 - 融合表

    这是为像我这样的其他新手提供的帮助 我花了很长时间才弄清楚如何在我的融合表项目中将不同的图标分配给不同类别的标记 我发现文档有限且令人困惑 我想如果我感到困惑 那么其他人可能也会如此 在其他人的帮助和大量测试的帮助下 我现在可以与您分享两种
  • JMeter、JUnit 和 Spring Java 配置

    是否可以使用 JUnit 插件 采样器和 Spring Java 配置来运行 JMeter 当我尝试执行此操作时 未创建 Spring 自动装配 bean 尽管测试用例运行 但由于尚未创建 bean 我收到了空指针异常 我正在使用Sprin
  • 如何从 char 数组进行转换 [char; N] 到字符串切片 &str?

    给定一个固定长度char数组如 let s char 5 h e l l o 我如何获得 str 你不能没有一些分配 这意味着你最终会得到一个String let s2 String s iter collect 问题是 Rust 中的字符
  • 如何修复我的包中的“.dist-info 目录未找到”?

    我有一个 Python 2 软件包 我正在尝试将其升级到 Python 3 它是由曾经在我现在所在的同一团队工作的某个人编写的 但他已不再在公司工作 不幸的是 没有人离开公司团队能够提供帮助 对包的文件运行 2to3 后 我运行python
  • R匹配2个以上条件并返回响应值

    您好 我有两个数据集 其中第一个是一组索引 ind1 lt rep c E W times 20 ind2 lt sample 100 150 40 y lt c 1 40 index lt data frame cbind ind1 in
  • 如果内存大小相等,如何将 C 结构体转换为另一种结构体类型?

    我有 2 个矩阵结构意味着相同的数据 但具有不同的形式 如下所示 Matrix type 1 typedef float Scalar typedef struct Scalar e 4 Vector typedef struct Vect
  • 该字符串未被识别为有效的日期时间。有一个从索引 0 开始的未知单词

    我有以下 C 在尝试将字符串解析为日期时间时出现上述错误 DateTime backupdate System Convert ToDateTime imageflowlabel Text DateTime currentdate Syst
  • gTTS直接输出

    我想让聊天机器人做出回应audio和文字 所有使用 gTTS 的示例代码似乎都需要 将文本保存到文件中 然后播放该文件 是否有另一种方法可以简化流程 例如使用 gTTS 自动播放 聊天机器人的响应 如果你简单地看一下the docs 您会看
  • 悬停时开始和暂停 SVG 动画

    当用户将鼠标悬停在以下 SVG 上时 我想对齿轮进行动画处理 也就是说 当鼠标进入时 两个齿轮都开始从它们停止的地方旋转 当鼠标离开时 齿轮会停止在它们所在的任何位置 如果可能的话 我希望动画使用缓入 缓出功能开始和结束 如何使用 SVG
  • 使用 sf 在 R 中求多边形的交集

    我想通过查看 400m 步行 5 分钟 内其他点的数量来评估每个点与其他等效点的空间接近程度 我在地图上有一些点 我可以在它们周围画一个简单的 400 m 缓冲区 我想确定哪些缓冲区重叠 然后计算重叠的数量 这个重叠数应该与原始点相关 这样
  • Tensorflow 跨设备通信

    正如tensorflow论文所述 Tensorflow的跨设备通信是通过在设备中添加 接收节点 和 发送节点 来实现的 根据我的理解 设备 请考虑仅涉及CPU设备 负责执行操作的计算 然而 数据 例如 操作产生的张量 变量缓冲区 驻留在内存