Intel nGraph Library を TensorFlow から使えるようにする「Bridge TensorFlow to run on Intel nGraph backends」の
v0.4 のソースコードを解析資料を Slideshare にアップしました。
v0.4 のソースコードを解析資料を Slideshare にアップしました。
作成は、8月11日と19日で公開は、2018年9月3日に公開ということに。
v0.5についても解析したので、明日公開します。
5月24日にLeapMindさんで行った
「TensorFlow : Dynamically loadable XLA Pluginソースコード解析」独演会
では、Intel Nervana が提案した「Dynamically loadable XLA Plugin」というものについて説明しました。
「TensorFlow : Dynamically loadable XLA Pluginソースコード解析」独演会
では、Intel Nervana が提案した「Dynamically loadable XLA Plugin」というものについて説明しました。
この「Dyamically loadable XLA Plugin」を使った
Bridge TensorFlow*/XLA to run on Intel® nGraph™ backendsについても調べました。
Bridge TensorFlow*/XLA to run on Intel® nGraph™ backendsについても調べました。
にあるように、
We developed a new implementation of the nGraph-TensorFlow bridge without the XLA and is available
だって。。。。
ということで、今回公開したスライドは、
この新しいコードであるBridge TensorFlow* to run on Intel® nGraph™ backendsの v0.4 のソースコードの解析結果です。
この新しいコードであるBridge TensorFlow* to run on Intel® nGraph™ backendsの v0.4 のソースコードの解析結果です。
XLAデバイスではなく、独自に、NGRAPHというデバイスを作り、Passを使ったグラフ変換において、
・PRE_PLACEMENT ・POST_REWRITE_FOR_EXECの2つのPassにて、それぞれグラフ変換をやっています。
やっていることは、XLAと同じで、
_Xlalaunch_ ノードの代わりに、
NGgraphEncapsulate ノードにて Intel nGraph Library を使って計算するようにしています。
_Xlalaunch_ ノードの代わりに、
NGgraphEncapsulate ノードにて Intel nGraph Library を使って計算するようにしています。
追記)、2018.09.01
LinkedInにて見つけたよ。
LinkedInにて見つけたよ。
Intel nGraph Library を TensorFlow にインテグレートされていました。
nGraph Integration with TensorFlow #21122
実際に、TensorFlowのgithub を覗いてみたら、ありました。ここ
ngraph_tf.BUILDを見ると、
nGraph Integration with TensorFlow #21122
実際に、TensorFlowのgithub を覗いてみたら、ありました。ここ
ngraph_tf.BUILDを見ると、
引用します。 licenses(["notice"]) # 3-Clause BSD exports_files(["LICENSE"]) load( "@org_tensorflow//tensorflow:tensorflow.bzl", "tf_cc_test", ) cc_library( name = "ngraph_libs_linux", srcs = [ "lib/libiomp5.so", "lib/libmklml_intel.so", ], visibility = ["//visibility:public"], ) cc_library( name = "ngraph_tf", srcs = [ "src/ngraph_builder.h", "src/ngraph_builder.cc", "src/ngraph_cluster.h", "src/ngraph_cluster.cc", "src/ngraph_cluster_manager.h", "src/ngraph_cluster_manager.cc", "src/ngraph_confirm_pass.cc", "src/ngraph_device.cc", "src/ngraph_encapsulate_op.cc", "src/ngraph_encapsulate_pass.cc", "src/ngraph_freshness_tracker.h", "src/ngraph_freshness_tracker.cc", "src/ngraph_graph_rewrite_passes.cc", "src/ngraph_liberate_pass.cc", "src/ngraph_op_kernels.cc", "src/ngraph_stub_ops.cc", "src/ngraph_utils.h", "src/ngraph_utils.cc", "src/ngraph_send_recv_ops.cc", "src/ngraph_variable_ops.cc", "src/tf_graphcycles.cc", "logging/ngraph_log.h", "logging/ngraph_log.cc", "logging/tf_graph_writer.h", "logging/tf_graph_writer.cc", ], hdrs = [ "src/tf_graphcycles.h", ], deps = [ "@org_tensorflow//tensorflow/core:protos_all_proto_text", "@org_tensorflow//tensorflow/core:framework_headers_lib", "@org_tensorflow//tensorflow/core:core_cpu_headers_lib", "@ngraph//:ngraph_core", ], copts = [ "-I external/ngraph_tf/src", "-I external/ngraph_tf/logging", "-I external/ngraph/src", "-D NGRAPH_EMBEDDED_IN_TENSORFLOW=1", ], alwayslink = 1, visibility = ["//visibility:public"], ) tf_cc_test( name = "ngraph_tf_tests", size = "small", srcs = [ "test/tf_exec.cpp", "test/main.cpp", ], deps = [ ":ngraph_tf", "@com_google_googletest//:gtest", "@org_tensorflow//tensorflow/cc:cc_ops", "@org_tensorflow//tensorflow/cc:client_session", "@org_tensorflow//tensorflow/core:tensorflow", ], extra_copts = [ "-fexceptions ", "-D NGRAPH_EMBEDDED_IN_TENSORFLOW=1", "-I external/ngraph_tf/src", "-I external/ngraph_tf/logging", "-I external/ngraph/src", ], )
知らんかったわ。