0

我正在使用 XLA C++ API,并且我设法运行了一个简单的添加,但我不知道我是否做得对。似乎有很多我没有使用过的类。这是我的例子

auto builder = new XlaBuilder("XlaBuilder");
auto one = ConstantR0(builder, 1);
auto two = ConstantR0(builder, 2);
auto res = one + two;

ValueInferenceMode value_inf_mode;
auto value_inf = new ValueInference(builder_);

auto lit = value_inf
    ->AnalyzeConstant(res, value_inf_mode)
    ->GetValue()
    ->Clone();

// I'm using `untyped_data` because I can't express arbitrary array types.
// I guess I could use `data<int32>` in this simple case
auto data = lit.untyped_data();

std::cout << ((int32*) data)[0] << std::endl;  // prints 3
4

1 回答 1

0

我怀疑我实际上并没有通过 XLA 运行该计算。这是基于XLA 源代码中的示例工具的另一种方法

XlaComputation computation = res.builder()->Build().ConsumeValueOrDie();
ExecutionProfile profile;
Literal lit = ClientLibrary::LocalClientOrDie()
    ->ExecuteAndTransfer(computation, {}, nullptr, &profile)
    .ConsumeValueOrDie();

data = lit.untyped_data()
于 2021-12-14T02:07:07.800 回答