def test_multi_process_simultaneous(n_gpu=2, worker_func_maker=unpickle_func, bar_loop=False):
barrier = mp.Barrier(n_gpu)
if PROFILE:
target = sim_profiling_worker
else:
target = simultaneous_worker
procs = [mp.Process(target=target,
args=(rank, worker_func_maker, barrier, bar_loop))
for rank in range(1, n_gpu)]
for p in procs:
p.start()
theano.gpuarray.use("cuda0")
f_train, name = build_train_func()
barrier.wait()
# workers build or unpickle
time.sleep(1)
barrier.wait()
# workers are ready.
test_the_function(f_train, name=name, barrier=barrier, bar_loop=bar_loop)
for p in procs:
p.join()
评论列表
文章目录