|
| 1 | +# TensorFlow Plugin demo |
| 2 | +This sample is a simple demo shows how to implement, build, install and run a TensorFlow plugin. |
| 3 | + |
| 4 | +## Supported OS |
| 5 | +* Linux |
| 6 | + |
| 7 | +## Prerequisites |
| 8 | + |
| 9 | +* [Bazel](https://docs.bazel.build/versions/master/install-ubuntu.html) (version 3.1 and above) |
| 10 | +* Git (version 1.8 and above) |
| 11 | +* Python (version 3.6 and above) |
| 12 | + |
| 13 | +## Build and Run |
| 14 | + |
| 15 | +### Linux |
| 16 | +1. Run the following command to install the latest `tensorflow`. |
| 17 | +``` |
| 18 | +$ pip install tensorflow |
| 19 | +``` |
| 20 | +2. In the plug-in `sample` code folder, configure the build options: |
| 21 | +``` |
| 22 | +$ ./configure |
| 23 | +
|
| 24 | +Please specify the location of python. [Default is /home/test/miniconda2/envs/sycl3.6/bin/python]: |
| 25 | +
|
| 26 | +
|
| 27 | +Found possible Python library paths: |
| 28 | + /home/test/miniconda2/envs/sycl3.6/lib/python3.6/site-packages |
| 29 | +Please input the desired Python library path to use. Default is [/home/test/miniconda2/envs/sycl3.6/lib/python3.6/site-packages] |
| 30 | +
|
| 31 | +Do you wish to build TensorFlow plug-in with MPI support? [y/N]: |
| 32 | +No MPI support will be enabled for TensorFlow plug-in. |
| 33 | +
|
| 34 | +Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native -Wno-sign-compare]: |
| 35 | +``` |
| 36 | + |
| 37 | +3. Built the plug-in with |
| 38 | +``` |
| 39 | +$ bazel build -c opt //tensorflow_plugin/tools/pip_package:build_pip_package --verbose_failures |
| 40 | +``` |
| 41 | +4. Then generate a python wheel and install it. |
| 42 | +``` |
| 43 | +$ bazel-bin/tensorflow_plugin/tools/pip_package/build_pip_package . |
| 44 | +$ pip install tensorflow_plugins-0.0.1-cp36-cp36m-linux_x86_64.whl |
| 45 | +``` |
| 46 | +5. Now we can run the TensorFlow with plug-in device enabled. |
| 47 | +``` |
| 48 | +$ python |
| 49 | +>>> import tensorflow as tf |
| 50 | +>>> tf.config.list_physical_devices() |
| 51 | +[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), PhysicalDevice(name='/physical_device:MY_DEVICE:0', device_type='MY_DEVICE')] |
| 52 | +``` |
| 53 | +* Relu case: |
| 54 | +``` |
| 55 | +$ python relu.py |
| 56 | +random_normal/RandomStandardNormal: (RandomStandardNormal): /job:localhost/replica:0/task:0/device:CPU:0 |
| 57 | +2021-10-21 12:48:20.714819: I tensorflow/core/common_runtime/placer.cc:114] random_normal/RandomStandardNormal: (RandomStandardNormal): /job:localhost/replica:0/task:0/device:CPU:0 |
| 58 | +random_normal/mul: (Mul): /job:localhost/replica:0/task:0/device:CPU:0 |
| 59 | +2021-10-21 12:48:20.714864: I tensorflow/core/common_runtime/placer.cc:114] random_normal/mul: (Mul): /job:localhost/replica:0/task:0/device:CPU:0 |
| 60 | +random_normal: (AddV2): /job:localhost/replica:0/task:0/device:CPU:0 |
| 61 | +2021-10-21 12:48:20.714903: I tensorflow/core/common_runtime/placer.cc:114] random_normal: (AddV2): /job:localhost/replica:0/task:0/device:CPU:0 |
| 62 | +Relu: (Relu): /job:localhost/replica:0/task:0/device:MY_DEVICE:0 |
| 63 | +2021-10-21 12:48:20.714937: I tensorflow/core/common_runtime/placer.cc:114] Relu: (Relu): /job:localhost/replica:0/task:0/device:MY_DEVICE:0 |
| 64 | +random_normal/shape: (Const): /job:localhost/replica:0/task:0/device:CPU:0 |
| 65 | +2021-10-21 12:48:20.714968: I tensorflow/core/common_runtime/placer.cc:114] random_normal/shape: (Const): /job:localhost/replica:0/task:0/device:CPU:0 |
| 66 | +random_normal/mean: (Const): /job:localhost/replica:0/task:0/device:CPU:0 |
| 67 | +2021-10-21 12:48:20.714997: I tensorflow/core/common_runtime/placer.cc:114] random_normal/mean: (Const): /job:localhost/replica:0/task:0/device:CPU:0 |
| 68 | +random_normal/stddev: (Const): /job:localhost/replica:0/task:0/device:CPU:0 |
| 69 | +2021-10-21 12:48:20.715022: I tensorflow/core/common_runtime/placer.cc:114] random_normal/stddev: (Const): /job:localhost/replica:0/task:0/device:CPU:0 |
| 70 | +[2.9109507 0. 0. 0. 0. 0. 0. |
| 71 | + 0. 0. 1.316411 ] |
| 72 | +
|
| 73 | +``` |
| 74 | +* Conv + Relu case: |
| 75 | +``` |
| 76 | +$ python conv_relu.py |
| 77 | +2021-10-21 12:53:36.389514: I tensorflow/core/common_runtime/placer.cc:114] random_normal_3/mul: (Mul): /job:localhost/replica:0/task:0/device:CPU:0 |
| 78 | +random_normal_3: (AddV2): /job:localhost/replica:0/task:0/device:CPU:0 |
| 79 | +2021-10-21 12:53:36.389537: I tensorflow/core/common_runtime/placer.cc:114] random_normal_3: (AddV2): /job:localhost/replica:0/task:0/device:CPU:0 |
| 80 | +Relu: (Relu): /job:localhost/replica:0/task:0/device:MY_DEVICE:0 |
| 81 | +2021-10-21 12:53:36.389565: I tensorflow/core/common_runtime/placer.cc:114] Relu: (Relu): /job:localhost/replica:0/task:0/device:MY_DEVICE:0 |
| 82 | +Conv2D: (Conv2D): /job:localhost/replica:0/task:0/device:MY_DEVICE:0 |
| 83 | +2021-10-21 12:53:36.389592: I tensorflow/core/common_runtime/placer.cc:114] Conv2D: (Conv2D): /job:localhost/replica:0/task:0/device:MY_DEVICE:0 |
| 84 | +Relu_1: (Relu): /job:localhost/replica:0/task:0/device:CPU:0 |
| 85 | +2021-10-21 12:53:36.389617: I tensorflow/core/common_runtime/placer.cc:114] Relu_1: (Relu): /job:localhost/replica:0/task:0/device:CPU:0 |
| 86 | +Conv2D_1: (Conv2D): /job:localhost/replica:0/task:0/device:CPU:0 |
| 87 | +2021-10-21 12:53:36.389641: I tensorflow/core/common_runtime/placer.cc:114] Conv2D_1: (Conv2D): /job:localhost/replica:0/task:0/device:CPU:0 |
| 88 | +``` |
| 89 | +* Profiler case: |
| 90 | +``` |
| 91 | +$python test_profiler.py |
| 92 | +``` |
| 93 | +<div> |
| 94 | +<img src=profiler_result.png> |
| 95 | +</div> |
| 96 | + |
0 commit comments