У меня есть массивы (изображения) и я выполняю некоторые операции фильтрации. Работа на локальном компьютере работает быстрее, чем в распределенной среде из 2 компьютеров.
На локальном компьютере с 4 ядрами это занимает 32 секунды, в то время как в распределенном с 4 ядрами на рабочем месте это занимает 400 секунд.
ray.init('192.168.0.115:6379')
num_cpus=4
@ray.remote
class Counter(object):
- def f(self,image, random_filter):
# Do some image processing
- return scipy.signal.convolve2d(image, random_filter)[::5, ::5]
filters = [np.random.normal(size=(4, 4)) for _ in range(num_cpus)]
counters = [Counter.remote() for _ in range(num_cpus)]
print('counters',counters)
for _ in range(15):
- image = np.zeros((3000, 3000))
- image_id = ray.put(image)
- results=ray.get([c.f.remote(image_id, filters[i]) for i,c in enumerate(counters)])
print('result',results)
Я хочу распараллелить его на двух машинах, чтобы сократить время вычислений.