页面树结构

2017-11-09 ApacheCN 开源组织,第二期邀请成员活动,一起走的更远 : http://www.apachecn.org/member/209.html


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

这个初步指南是针对早期采用者,希望以有效的方式轻松地将TensorFlow重新定位到硬件。该指南是不是一步一步的,并假定的知识LLVM, 巴泽尔和TensorFlow。

XLA提供了一个新架构或加速器可以实现的抽象接口,用于创建运行TensorFlow图形的后端。重新定位XLA应该比实现每个现有的TensorFlow Op新硬件要简单和可扩展。

大多数实现将落入以下情况之一:

  1. 现有的CPU架构还没有被XLA正式支持,有或没有现有的LLVM后端。
  2. 具有现有LLVM后端的非CPU类硬件。
  3. 非CPU类硬件,不带现有的LLVM后端。
注意:LLVM后端可能意味着官方发布的LLVM后端之一或内部开发的自定义LLVM后端。

 

情况1:XLA尚未正式支持现有的CPU架构

在这种情况下,首先查看现有的XLA CPU后端 。XLA通过使用LLVM可以轻松地将TensorFlow重定向到不同的CPU,因为用于CPU的XLA后端的主要区别是LLVM生成的代码。Google测试XLA for x64和ARM64架构。

如果硬件供应商的硬件具有LLVM后端,则将后端与使用XLA构建的LLVM进行链接很简单。在JIT模式下,XLA CPU后端会为主机CPU发出代码。为了提前编译, xla::AotCompilationOptions 可以提供一个LLVM三元组来配置目标架构。

如果没有现有的LLVM后端,但存在另一种代码生成器,则可以重用大部分现有的CPU后端。

 

场景2:具有现有LLVM后端的非CPU类硬件

可以对xla::Compiler 现有xla::CPUCompiler 和xla::GPUCompiler 类上的新实现进行建模 ,因为这些已经发布了LLVM IR。根据硬件的性质,可能需要更改许多LLVM IR生成方面,但可以与现有的后端共享许多代码。

一个很好的例子是 XLA 的GPU后端。GPU后端目标为非CPU类似的ISA,因此其代码生成的某些方面对于GPU域是唯一的。其他类型的硬件,例如像Hexagon(具有上游LLVM后端)的DSP,可以重用LLVM IR发射逻辑的部分,但其他部分将是独一无二的。

 

情况3:不具有现有LLVM后端的非CPU类硬件

如果不可能使用LLVM,则最佳选择是为所需的硬件实现XLA的新后端。此选项需要最大的努力。需要实施的课程如下:

  • StreamExecutor:对于许多设备,不是所有的方法StreamExecutor都是必需的。有关StreamExecutor详细信息,请参阅现有实现。
  • xla :: Compiler:此类将HLO计算的编译封装到 xla::Executable
  • xla::Executable:该类用于在平台上启动编译的计算。
  • xla::TransferManager:该类使后端能够提供特定于平台的机制,用于从给定的设备内存句柄构建XLA文字数据。换句话说,它有助于将数据从主机传输到设备并返回。

 

  • 无标签