Joe*_*ley 7 c++ tensorflow tensorflow-xla
XLA 课程有什么XlaBuilder用?该文档描述了它的界面,但没有提供动机。
XlaBuilder文档中的演示,以及源代码中上面的注释
// A convenient interface for building up computations.
Run Code Online (Sandbox Code Playgroud)
表明它只不过是一个实用程序。然而,这似乎并不能解释它在其他地方的行为。例如,我们可以XlaOp用一个XlaBuilder过孔构造一个,例如
XlaOp ConstantLiteral(XlaBuilder* builder, const LiteralSlice& literal);
Run Code Online (Sandbox Code Playgroud)
在这里,我不清楚扮演什么角色builder(注意构建XlaOps 的函数没有记录在已发布的文档中)。此外,当我添加两个XlaOps (使用+或Add)时,似乎操作必须使用相同的构建器构建,否则我看到
// A convenient interface for building up computations.
Run Code Online (Sandbox Code Playgroud)
事实上,XlaOp保留了 的句柄XlaBuilder。这对我来说意味着XlaBuilder具有更根本的意义。
除了标题问题之外,是否存在使用多个XlaBuilders 的用例,或者您通常会使用一个全局实例来处理所有事情?
XlaBuilder是用于构建 XLA 计算的 C++ API——从概念上讲,这就像构建一个充满各种操作的函数,您可以在不同的输入数据上一遍又一遍地执行该函数。
一些背景知识,XLA 充当抽象层,用于创建在各种目标加速器(CPU、GPU、TPU、IPU 等)上运行的可执行 blob,概念上类似于“加速器虚拟机”,与PeakStream等早期系统在概念上相似或导致ArBB 的工作线。
这XlaBuilder是一种将操作排队到“计算”(类似于函数)中的方法,您希望针对 XLA 可以针对的各种加速器集运行该计算。此级别的操作通常称为“高级操作”(HLO)。
返回的值XlaOp代表您刚刚排队的操作的结果。(旁白/书呆子:这是“构建器”API 中使用的一种经典技术,它在底层以“静态单赋值”形式表示程序,操作本身和操作结果可以统一为一个概念!)
XLA 计算与函数非常相似,因此您可以像XlaBuilder构建函数一样思考您正在做什么。(旁白:它们被称为“计算”,因为它们所做的不仅仅是简单的功能——从概念上讲,它们是可以与外部“主机”世界对话并通过网络设施相互对话的协程。)
因此,事实XlaOps 不能跨XlaBuilders 使用,在这种情况下可能更有意义——就像构建一个函数时,你无法在其他函数的内部获取中间结果一样,你必须将它们组合起来函数调用/参数。XlaBuilder您可以在其中进行Call另一个构建计算,这就是您可能使用多个构建器的原因。
正如您所注意到的,您可以选择将所有内容内联到一个“大型构建器”中,但程序通常被构造为组合在一起的函数,并最终从几个不同的“入口点”调用。XLA 目前积极致力于 API 用户使用的入口点,但这是一个类似于内联决策的设计工件,XLA 从概念上讲可以重用从多个调用者构建/调用的计算(如果它认为这是正确的做法)。通常,将事物排队到 XLA 中是最自然的,但这对于您从“外部世界”进行描述来说很方便,并允许 XLA 内联并积极专门化您在执行时建立的“入口点”计算,在 Just-in 中-时间编译时尚。
| 归档时间: |
|
| 查看次数: |
344 次 |
| 最近记录: |