def run_ngtf_pytests(venv_dir, build_dir): root_pwd = os.getcwd() build_dir = os.path.abspath(build_dir) venv_dir = os.path.abspath(venv_dir) test_dir = os.path.join(build_dir, "test") test_dir = os.path.join(test_dir, "python") if not os.path.isdir(test_dir): raise Exception("test directory doesn't exist: " + test_dir) # Change the directory to the test_dir os.chdir(test_dir) # Load venv load_venv(venv_dir) # Next run the ngraph-tensorflow python tests command_executor(["pip", "install", "-U", "pytest"]) command_executor(["pip", "install", "-U", "psutil"]) command_executor([ "python", "-m", "pytest", ('--junitxml=%s/xunit_pytest.xml' % build_dir) ]) os.chdir(root_pwd)
def main(): ''' Tests nGraph-TensorFlow Python 3. This script needs to be run after running build_ngtf.py which builds the ngraph-tensorflow-bridge and installs it to a virtual environment that would be used by this script. ''' parser = argparse.ArgumentParser() parser.add_argument('--test_examples', help="Builds and tests the examples.\n", action="store_true") arguments = parser.parse_args() #------------------------------- # Recipe #------------------------------- root_pwd = os.getcwd() # Constants build_dir = 'build' venv_dir = 'build/venv-tf-py3' # Run the bazel based buil run_bazel_build_test(venv_dir, build_dir) # First run the C++ gtests run_ngtf_gtests(build_dir) # Next run Python unit tests load_venv(venv_dir) run_ngtf_pytests(venv_dir, build_dir) if (arguments.test_examples): # Run the C++ example build/run test run_cpp_example_test('build') # Next run the TensorFlow python tests run_tensorflow_pytests(venv_dir, build_dir, './', 'build/tensorflow') # Finally run Resnet50 based training and inferences run_resnet50(build_dir) os.chdir(root_pwd)
def run_tensorflow_pytests(venv_dir, build_dir, ngraph_tf_src_dir, tf_src_dir): root_pwd = os.getcwd() build_dir = os.path.abspath(build_dir) venv_dir = os.path.abspath(venv_dir) ngraph_tf_src_dir = os.path.abspath(ngraph_tf_src_dir) patch_file = os.path.abspath( os.path.join(ngraph_tf_src_dir, "test/python/tensorflow/tf_unittest_ngraph.patch")) # Load the virtual env venv_dir_absolute = load_venv(venv_dir) # Next patch the TensorFlow so that the tests run using ngraph_bridge pwd = os.getcwd() # Go to the site-packages os.chdir(glob.glob(venv_dir_absolute + "/lib/py*/site-packages")[0]) print("CURRENT DIR: " + os.getcwd()) print("Patching TensorFlow using: %s" % patch_file) result = call(["patch", "-p1", "-N", "-i", patch_file]) print("Patch result: %d" % result) os.chdir(pwd) # Now run the TensorFlow python tests test_src_dir = os.path.join(ngraph_tf_src_dir, "test/python/tensorflow") test_script = os.path.join(test_src_dir, "tf_unittest_runner.py") test_manifest_file = os.path.join(test_src_dir, "python_tests_list.txt") test_xml_report = '%s/junit_tensorflow_tests.xml' % build_dir import psutil num_cores = int(psutil.cpu_count(logical=False)) print("OMP_NUM_THREADS: %s " % str(num_cores)) os.environ['OMP_NUM_THREADS'] = str(num_cores) os.environ['NGRAPH_TF_DISABLE_DEASSIGN_CLUSTERS'] = '1' command_executor([ "python", test_script, "--tensorflow_path", tf_src_dir, "--run_tests_from_file", test_manifest_file, "--xml_report", test_xml_report ]) os.chdir(root_pwd)
def run_bazel_build_test(venv_dir, build_dir): # Load the virtual env venv_dir_absolute = load_venv(venv_dir) # Next patch the TensorFlow so that the tests run using ngraph_bridge root_pwd = os.getcwd() # Now run the configure command_executor(['bash', 'configure_bazel.sh']) # Build the bridge command_executor(['bazel', 'build', 'libngraph_bridge.so']) # Build the backend command_executor(['bazel', 'build', '@ngraph//:libinterpreter_backend.so']) # Return to the original directory os.chdir(root_pwd)
def main(): ''' Tests nGraph-TensorFlow Python 3. This script needs to be run after running build_ngtf.py which builds the ngraph-tensorflow-bridge and installs it to a virtual environment that would be used by this script. ''' parser = argparse.ArgumentParser() parser.add_argument('--test_examples', help="Builds and tests the examples.\n", action="store_true") parser.add_argument('--gpu_unit_tests_enable', help="Builds and tests the examples.\n", action="store_true") arguments = parser.parse_args() #------------------------------- # Recipe #------------------------------- root_pwd = os.getcwd() # Constants build_dir = 'build' venv_dir = 'build/venv-tf-py3' if (platform.system() != 'Darwin'): # Run the bazel based buil run_bazel_build_test(venv_dir, build_dir) # First run the C++ gtests run_ngtf_gtests(build_dir, None) # If the GPU tests are requested, then run them as well if (arguments.gpu_unit_tests_enable): os.environ['NGRAPH_TF_BACKEND'] = 'GPU' run_ngtf_gtests( build_dir, str("-ArrayOps.Quanti*:ArrayOps.Dequant*:BackendManager.BackendAssignment:" "MathOps.AnyKeepDims:MathOps.AnyNegativeAxis:MathOps.AnyPositiveAxis:" "MathOps.AllKeepDims:MathOps.AllNegativeAxis:MathOps.AllPositiveAxis:" "NNOps.Qu*:NNOps.SoftmaxZeroDimTest*:" "NNOps.SparseSoftmaxCrossEntropyWithLogits")) os.environ['NGRAPH_TF_BACKEND'] = 'CPU' # Next run Python unit tests load_venv(venv_dir) run_ngtf_pytests(venv_dir, build_dir) if (arguments.test_examples): # Run the C++ example build/run test run_cpp_example_test('build') # Next run the TensorFlow python tests run_tensorflow_pytests(venv_dir, build_dir, './', 'build/tensorflow') # Finally run Resnet50 based training and inferences run_resnet50(build_dir) os.chdir(root_pwd)