XlaOp
ネイティブ C++ 値からを作成するための関数が多数あります。それぞれを使用してグラフを作成する方法を理解しようとしています。xla_builder.h を調べて、いくつかの候補を選び出し、オーバーロードと便利なラッパーを省略しました。有力候補は以下の2つだそうです
// Enqueues a "retrieve parameter value" instruction for a parameter that was
// passed to the computation.
XlaOp Parameter(XlaBuilder* builder, int64 parameter_number, const Shape& shape,
const string& name);
// Enqueues a constant with the value of the given literal onto the
// computation.
XlaOp ConstantLiteral(XlaBuilder* builder, const LiteralSlice& literal);
Parameter
は「シンボル」用でConstantLiteral
あり、定数値用であると考えるのは正しいですか? たとえば、 では、としてf(x) = x + 1
エンコードします。1
ConstantLiteral
x
- C++ 関数として記述
f(x)
し、アプリケーション サイトConstantLiteral
で の値に別の関数を使用するx
、または x
を使用してエンコードし、対応Parameter
する から を構築します。そうは言っても、複数の s afaictで動作しない以外の を使用してを実際に呼び出す方法については明確ではありません。XlaComputation
XlaBuilder
XlaComputation
Literal
LocalClient
XlaComputation
これら2つのアプローチの違いは何ですか? 一方が他方よりも優れていますか?前者は、高階関数、つまりXlaComputation
s を受け入れる関数では使用できないように見えることに気付きました。
次は
Infeed
のストリーミング バージョンだと思いParameter
ます。Recv
これは、計算間でデータを渡す方法のように見えますが、実際にはまったく新しいものを作成するわけではありませんXlaOp
。ReplicaId
、Iota
、およびXlaOp CreateToken(XlaBuilder* builder);
この議論にはほとんど関係ないようです。
私はこれを正しく理解していますか?私が見逃した他の重要な機能はありますか?