Start working toward Python3 compatibility. (#117)

This commit is contained in:
Robert Nishihara
2016-12-11 12:25:31 -08:00
committed by Philipp Moritz
parent 3d083c8b58
commit ddba1df802
48 changed files with 206 additions and 103 deletions
+8 -5
View File
@@ -1,3 +1,7 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
# Ray version string
__version__ = "0.01"
@@ -9,8 +13,7 @@ if hasattr(ctypes, "windll"):
# This is done by associating all child processes with a "job" object that imposes this behavior.
(lambda kernel32: (lambda job: (lambda n: kernel32.SetInformationJobObject(job, 9, "\0" * 17 + chr(0x8 | 0x4 | 0x20) + "\0" * (n - 18), n))(0x90 if ctypes.sizeof(ctypes.c_void_p) > ctypes.sizeof(ctypes.c_int) else 0x70) and kernel32.AssignProcessToJobObject(job, ctypes.c_void_p(kernel32.GetCurrentProcess())))(ctypes.c_void_p(kernel32.CreateJobObjectW(None, None))) if kernel32 is not None else None)(ctypes.windll.kernel32)
import config
import serialization
from worker import register_class, error_info, init, connect, disconnect, get, put, wait, remote
from worker import Reusable, reusables
from worker import SCRIPT_MODE, WORKER_MODE, PYTHON_MODE, SILENT_MODE
import ray.serialization
from ray.worker import register_class, error_info, init, connect, disconnect, get, put, wait, remote
from ray.worker import Reusable, reusables
from ray.worker import SCRIPT_MODE, WORKER_MODE, PYTHON_MODE, SILENT_MODE
+7 -3
View File
@@ -1,3 +1,7 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import numpy as np
import ray.array.remote as ra
import ray
@@ -141,10 +145,10 @@ def blockwise_dot(*matrices):
n = len(matrices)
if n % 2 != 0:
raise Exception("blockwise_dot expects an even number of arguments, but len(matrices) is {}.".format(n))
shape = (matrices[0].shape[0], matrices[n / 2].shape[1])
shape = (matrices[0].shape[0], matrices[n // 2].shape[1])
result = np.zeros(shape)
for i in range(n / 2):
result += np.dot(matrices[i], matrices[n / 2 + i])
for i in range(n // 2):
result += np.dot(matrices[i], matrices[n // 2 + i])
return result
@ray.remote
+6 -2
View File
@@ -1,8 +1,12 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import numpy as np
import ray.array.remote as ra
import ray
from core import *
from .core import *
__all__ = ["tsqr", "modified_lu", "tsqr_hr", "qr"]
@@ -68,7 +72,7 @@ def tsqr(a):
else:
lower = [a.shape[1], 0]
upper = [2 * a.shape[1], BLOCK_SIZE]
ith_index /= 2
ith_index //= 2
q_block_current = ra.dot.remote(q_block_current, ra.subarray.remote(q_tree[ith_index, j], lower, upper))
q_result.objectids[i] = q_block_current
r = current_rs[0]
+5 -1
View File
@@ -1,8 +1,12 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import numpy as np
import ray.array.remote as ra
import ray
from core import *
from .core import *
@ray.remote
def normal(shape):
+4
View File
@@ -1,3 +1,7 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import numpy as np
import ray
+4
View File
@@ -1,3 +1,7 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import numpy as np
import ray
+4
View File
@@ -1,3 +1,7 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import numpy as np
import ray
-9
View File
@@ -1,9 +0,0 @@
import datetime
import os.path
import sys
import tempfile
def get_log_file_path(name):
return os.path.join(
os.path.join("/tmp" if sys.platform.startswith("darwin") else tempfile.gettempdir(), "raylogs"),
("{:%Y-%m-%d-%H-%M-%S}-{}").format(datetime.datetime.now(), name.replace(":", "-")))
+4
View File
@@ -1,5 +1,9 @@
# Note that a little bit of code here is taken and slightly modified from the pickler because it was not possible to change its behavior otherwise.
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import sys
from ctypes import c_void_p
from cloudpickle import pickle, cloudpickle, CloudPickler, load, loads
+4 -1
View File
@@ -1,9 +1,12 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import numpy as np
import pickling
import numbuf
import ray.pickling as pickling
def check_serializable(cls):
"""Throws an exception if Ray cannot serialize this class efficiently.
+2 -1
View File
@@ -1,3 +1,5 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import psutil
@@ -10,7 +12,6 @@ import sys
import time
# Ray modules
import config
import photon
import plasma
import global_scheduler
View File
+102
View File
@@ -0,0 +1,102 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import ray
import numpy as np
# Test simple functionality
@ray.remote(num_return_vals=2)
def handle_int(a, b):
return a + 1, b + 1
# Test timing
@ray.remote
def empty_function():
pass
@ray.remote
def trivial_function():
return 1
# Test keyword arguments
@ray.remote
def keyword_fct1(a, b="hello"):
return "{} {}".format(a, b)
@ray.remote
def keyword_fct2(a="hello", b="world"):
return "{} {}".format(a, b)
@ray.remote
def keyword_fct3(a, b, c="hello", d="world"):
return "{} {} {} {}".format(a, b, c, d)
# Test variable numbers of arguments
@ray.remote
def varargs_fct1(*a):
return " ".join(map(str, a))
@ray.remote
def varargs_fct2(a, *b):
return " ".join(map(str, b))
try:
@ray.remote
def kwargs_throw_exception(**c):
return ()
kwargs_exception_thrown = False
except:
kwargs_exception_thrown = True
try:
@ray.remote
def varargs_and_kwargs_throw_exception(a, b="hi", *c):
return "{} {} {}".format(a, b, c)
varargs_and_kwargs_exception_thrown = False
except:
varargs_and_kwargs_exception_thrown = True
# test throwing an exception
@ray.remote
def throw_exception_fct1():
raise Exception("Test function 1 intentionally failed.")
@ray.remote
def throw_exception_fct2():
raise Exception("Test function 2 intentionally failed.")
@ray.remote(num_return_vals=3)
def throw_exception_fct3(x):
raise Exception("Test function 3 intentionally failed.")
# test Python mode
@ray.remote
def python_mode_f():
return np.array([0, 0])
@ray.remote
def python_mode_g(x):
x[0] = 1
return x
# test no return values
@ray.remote
def no_op():
pass
class TestClass(object):
def __init__(self):
self.a = 5
@ray.remote
def test_unknown_type():
return TestClass()
+5 -4
View File
@@ -1,3 +1,5 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import hashlib
@@ -16,10 +18,9 @@ import threading
import string
# Ray modules
import config
import pickling
import serialization
import services
import ray.pickling as pickling
import ray.serialization as serialization
import ray.services as services
import numbuf
import photon
import plasma
+2
View File
@@ -1,3 +1,5 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import sys
+2
View File
@@ -1,3 +1,5 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import os