标签: poplar

virtualGraph 和 pipelineStage Graphcore 的 PopART/Poplar 库的区别

我正在尝试使用 Graphcore 的PopART 框架(Poplar API 的一部分)来实现一个基本的流水线模型,以加速我的模型,该模型被拆分到多个处理器上。

我正在关注他们的示例代码,但我注意到该示例没有使用在pipelineStage()他们的其他一些应用程序(即Bert)中使用的调用,而是使用virtualGraph()定义操作应该运行的处理器。

以下示例的一小段:

#  Dense 1
W0 = builder.addInitializedInputTensor(
    init_weights(num_features, 512))
b0 = builder.addInitializedInputTensor(init_biases(512))

with builder.virtualGraph(0):
    x1 = builder.aiOnnx.gemm([x0, W0, b0], debugPrefix="gemm_x1")
    x2 = builder.aiOnnx.relu([x1], debugPrefix="relu_x2")

#  Dense 2
W1 = builder.addInitializedInputTensor(init_weights(512, num_classes))
b1 = builder.addInitializedInputTensor(init_biases(num_classes))

with builder.virtualGraph(1):
    x3 = builder.aiOnnx.gemm([x2, W1, b1], debugPrefix="gemm_x3")
    x4 = builder.aiOnnx.relu([x3], debugPrefix="relu_x4")
Run Code Online (Sandbox Code Playgroud)

相反,Bert 示例似乎创建了一个结合virtualGraph()pipelineStage()以下内容的上下文:

self.stack.enter_context(self.builder.pipelineStage(self.pipelineStage))
Run Code Online (Sandbox Code Playgroud)

我不确定哪种应该是首选样式。只使用有什么影响virtualGraph()吗?

python python-3.x popart poplar ipu

5
推荐指数
1
解决办法
187
查看次数

Poplar codelets 如何包含来自其他头文件的代码?

小码是否可以引用其他文件(如头文件)中的代码?

如果我有一个codelet文件

    //FileA.cpp
    #include "FileB.h"
    class SomeCustomVertex : public Vertex { 
    public:
       bool compute() {
          int a = SomeConstantDefinedInFileB; 
       }
    ... 
    }
Run Code Online (Sandbox Code Playgroud)

和其他一些“codelet”文件

    //FileB.h
    const int SomeConstantDefineInFileB = 42;
Run Code Online (Sandbox Code Playgroud)

并在主机图程序中:

graph.addCodelets({"codelets/FileA.cpp", "codelets/FileB.h"});
Run Code Online (Sandbox Code Playgroud)

我收到一个编译错误popc

fatal error: 'FileB.h' file not found
#include "FileB.h"
         ^~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
terminate called after throwing an instance of 'poplar::graph_program_compilation_error'
  what():  Codelet compilation failed (see compiler output for details)
Run Code Online (Sandbox Code Playgroud)

poplar ipu

5
推荐指数
1
解决办法
67
查看次数

图形核心 IPU 的 Linux /dev/ipu* 设备名称的含义和目的是什么?

为什么我像下面的命令一样指定ipu4并且ipu4_ex都在 docker 中使用 ipu 设备?

docker run --device=/dev/**ipu4**:/dev/ipu4 --device=/dev/**ipu4_ex**:/dev/ipu4_ex -ti graphcore/tools gc-inventory
Run Code Online (Sandbox Code Playgroud)

docker tensorflow popart poplar ipu

2
推荐指数
1
解决办法
131
查看次数

标签 统计

ipu ×3

poplar ×3

popart ×2

docker ×1

python ×1

python-3.x ×1

tensorflow ×1