@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
昨日のブログで、Graphcore の IPU が ホストのメモリを使う addRemoteBuffer を紹介しました。その中で、GraphcoreのTensorFlowでも使っていたのですが、その使っていた部分のコードは、XLA の中だったのです。
ということで、今日は、Graphcore の TensorFlow XLA のコードを見ていきます。
コードは、ここ。
3rd party XLA devices のディレクトリにあります。最新のTensorFlowにも同じディレクトリがあります。このディレクトリに XLA のコードがあるのを知らなかったのです。
ディレクトリには、poplar というディレクトリがあり、その下にいろいろなコードがあります。
メモとして、
- xla_ipu_device.cc にて、DEVICE_XLA_IPUを登録
- xla_ipu_backend.cc にて、DEVICE_IPU_XLA_JITを登録
- poplar_platform.cc にて、Platformを登録
- poplar_executor.cc が executor (PoplarExecutor)
- poplar_execution.cc が execution (PoplarExecution)
- poplar_compiler.cc が compiler (PoplarCompiler)
Kernelのディレクトリを見たら、
- popfloat
- popnn
- popops
- poprand
- poputil
を使うものもあるみたい。
Send/Recv の Op は、sendrecv_kernel.cc にあるね。
ipu_kerne.cc の中には、CPU上で動くOpが
Poplarで使うOpは、ops.proto に
Pipeline用のOpは、pipelining.cc にある
面白いOp? dataset_benchmark.cc ConsumerThread/ProducerThread なるものが