2016-12-11 12:25:31 -08:00
|
|
|
from __future__ import absolute_import
|
|
|
|
from __future__ import division
|
2016-12-09 17:49:31 -08:00
|
|
|
from __future__ import print_function
|
|
|
|
|
|
|
|
import unittest
|
|
|
|
import ray
|
|
|
|
import numpy as np
|
|
|
|
import time
|
|
|
|
|
|
|
|
class TaskTests(unittest.TestCase):
|
|
|
|
|
|
|
|
def testSubmittingTasks(self):
|
|
|
|
for num_local_schedulers in [1, 4]:
|
|
|
|
for num_workers_per_scheduler in [4]:
|
|
|
|
num_workers = num_local_schedulers * num_workers_per_scheduler
|
2016-12-28 14:17:29 -08:00
|
|
|
ray.worker._init(start_ray_local=True, num_workers=num_workers,
|
|
|
|
num_local_schedulers=num_local_schedulers)
|
2016-12-09 17:49:31 -08:00
|
|
|
|
|
|
|
@ray.remote
|
|
|
|
def f(x):
|
|
|
|
return x
|
|
|
|
|
|
|
|
for _ in range(1):
|
|
|
|
ray.get([f.remote(1) for _ in range(1000)])
|
|
|
|
|
|
|
|
for _ in range(10):
|
|
|
|
ray.get([f.remote(1) for _ in range(100)])
|
|
|
|
|
|
|
|
for _ in range(100):
|
|
|
|
ray.get([f.remote(1) for _ in range(10)])
|
|
|
|
|
|
|
|
for _ in range(1000):
|
|
|
|
ray.get([f.remote(1) for _ in range(1)])
|
|
|
|
|
|
|
|
self.assertTrue(ray.services.all_processes_alive())
|
|
|
|
ray.worker.cleanup()
|
|
|
|
|
|
|
|
def testDependencies(self):
|
|
|
|
for num_local_schedulers in [1, 4]:
|
|
|
|
for num_workers_per_scheduler in [4]:
|
|
|
|
num_workers = num_local_schedulers * num_workers_per_scheduler
|
2016-12-28 14:17:29 -08:00
|
|
|
ray.worker._init(start_ray_local=True, num_workers=num_workers,
|
|
|
|
num_local_schedulers=num_local_schedulers)
|
2016-12-09 17:49:31 -08:00
|
|
|
|
|
|
|
@ray.remote
|
|
|
|
def f(x):
|
|
|
|
return x
|
|
|
|
|
|
|
|
x = 1
|
|
|
|
for _ in range(1000):
|
|
|
|
x = f.remote(x)
|
|
|
|
ray.get(x)
|
|
|
|
|
|
|
|
@ray.remote
|
|
|
|
def g(*xs):
|
|
|
|
return 1
|
|
|
|
|
|
|
|
xs = [g.remote(1)]
|
|
|
|
for _ in range(100):
|
|
|
|
xs.append(g.remote(*xs))
|
|
|
|
xs.append(g.remote(1))
|
|
|
|
ray.get(xs)
|
|
|
|
|
|
|
|
self.assertTrue(ray.services.all_processes_alive())
|
|
|
|
ray.worker.cleanup()
|
|
|
|
|
|
|
|
def testGettingAndPutting(self):
|
2017-01-10 17:35:27 -08:00
|
|
|
ray.init(num_workers=1)
|
2016-12-09 17:49:31 -08:00
|
|
|
|
|
|
|
for n in range(8):
|
|
|
|
x = np.zeros(10 ** n)
|
|
|
|
|
|
|
|
for _ in range(100):
|
|
|
|
ray.put(x)
|
|
|
|
|
|
|
|
x_id = ray.put(x)
|
|
|
|
for _ in range(1000):
|
|
|
|
ray.get(x_id)
|
|
|
|
|
|
|
|
self.assertTrue(ray.services.all_processes_alive())
|
|
|
|
ray.worker.cleanup()
|
|
|
|
|
|
|
|
def testWait(self):
|
2016-12-09 19:26:11 -08:00
|
|
|
for num_local_schedulers in [1, 4]:
|
2016-12-09 17:49:31 -08:00
|
|
|
for num_workers_per_scheduler in [4]:
|
|
|
|
num_workers = num_local_schedulers * num_workers_per_scheduler
|
2016-12-28 14:17:29 -08:00
|
|
|
ray.worker._init(start_ray_local=True, num_workers=num_workers,
|
|
|
|
num_local_schedulers=num_local_schedulers)
|
2016-12-09 17:49:31 -08:00
|
|
|
|
|
|
|
@ray.remote
|
|
|
|
def f(x):
|
|
|
|
return x
|
|
|
|
|
2016-12-09 19:26:11 -08:00
|
|
|
x_ids = [f.remote(i) for i in range(100)]
|
2016-12-09 17:49:31 -08:00
|
|
|
for i in range(len(x_ids)):
|
|
|
|
ray.wait([x_ids[i]])
|
|
|
|
for i in range(len(x_ids) - 1):
|
|
|
|
ray.wait(x_ids[i:])
|
|
|
|
|
|
|
|
@ray.remote
|
|
|
|
def g(x):
|
|
|
|
time.sleep(x)
|
|
|
|
|
|
|
|
for i in range(1, 5):
|
2016-12-09 19:26:11 -08:00
|
|
|
x_ids = [g.remote(np.random.uniform(0, i)) for _ in range(2 * num_workers)]
|
2016-12-09 17:49:31 -08:00
|
|
|
ray.wait(x_ids, num_returns=len(x_ids))
|
|
|
|
|
|
|
|
self.assertTrue(ray.services.all_processes_alive())
|
|
|
|
ray.worker.cleanup()
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
unittest.main(verbosity=2)
|