From 6208d0a4f45a39f954c92258e1dc8995379cfa0b Mon Sep 17 00:00:00 2001 From: Yibo Zhu Date: Thu, 27 Jun 2019 22:11:29 +0800 Subject: [PATCH 1/2] launcher: support both python2 and python3 --- launcher/launch.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/launcher/launch.py b/launcher/launch.py index 2ea4d72a3..8c909c7c5 100644 --- a/launcher/launch.py +++ b/launcher/launch.py @@ -1,5 +1,6 @@ #!/usr/bin/python +from __future__ import print_function import os import subprocess import threading @@ -18,7 +19,7 @@ def worker(local_rank, local_size, command): subprocess.check_call(command, env=my_env, stdout=sys.stdout, stderr=sys.stderr, shell=True) if __name__ == "__main__": - print "BytePS launching " + os.environ["DMLC_ROLE"] + print("BytePS launching " + os.environ["DMLC_ROLE"]) sys.stdout.flush() if os.environ["DMLC_ROLE"] == "worker": @@ -38,11 +39,8 @@ def worker(local_rank, local_size, command): else: if "BYTEPS_SERVER_MXNET_PATH" not in os.environ: - print "BYTEPS_SERVER_MXNET_PATH env not set" + print("BYTEPS_SERVER_MXNET_PATH env not set") os._exit(0) sys.path.insert(0, os.getenv("BYTEPS_SERVER_MXNET_PATH")+"/python") import mxnet - print "BytePS Server MXNet version: " + mxnet.__version__ - # TODO: terminates when workers quit - while True: - time.sleep(3600) + From 69934376786def7210123a2e888c2c08f15936f2 Mon Sep 17 00:00:00 2001 From: Yibo Zhu Date: Fri, 28 Jun 2019 03:02:50 +0800 Subject: [PATCH 2/2] tensorflow: fix python3 ctypes.c_char_p problem --- byteps/tensorflow/ops.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/byteps/tensorflow/ops.py b/byteps/tensorflow/ops.py index 42809c2ef..aceebf396 100644 --- a/byteps/tensorflow/ops.py +++ b/byteps/tensorflow/ops.py @@ -79,7 +79,9 @@ def _push_pull(tensor, scope='', name=None): """ if name is None and not _executing_eagerly(): name = 'BytePSPushPull_%s' % _normalize_name(tensor.name) - TF_LIB_CTYPES.byteps_tensorflow_declare_tensor(ctypes.c_char_p(scope+name)) + full_name = scope + name + full_name = full_name.encode("ascii") + TF_LIB_CTYPES.byteps_tensorflow_declare_tensor(ctypes.c_char_p(full_name)) return C_LIB.byteps_push_pull(tensor, name=name) @@ -108,7 +110,7 @@ def broadcast(tensor, root_rank, name=None, is_variable=True): # Broadcast is implemented as push + pull after zero-ing non-root tensors if name is None and not _executing_eagerly(): name = 'BytePSBroadcast_%s' % _normalize_name(tensor.name) - TF_LIB_CTYPES.byteps_tensorflow_declare_tensor(ctypes.c_char_p(name)) + TF_LIB_CTYPES.byteps_tensorflow_declare_tensor(ctypes.c_char_p(name.encode("ascii"))) if is_variable and (root_rank != rank()): return C_LIB.byteps_push_pull(tensor.assign(tf.zeros_like(tensor)), name=name) else: