MCPcopy Create free account
hub / github.com/VCIP-RGBD/DFormer / multi_process_evaluation

Method multi_process_evaluation

utils/engine/dist_test.py:109–139  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

107 results.close()
108
109 def multi_process_evaluation(self):
110 start_eval_time = time.perf_counter()
111 nr_devices = len(self.devices)
112 stride = int(np.ceil(self.ndata / nr_devices))
113
114 # start multi-process on multi-gpu
115 procs = []
116 for d in range(nr_devices):
117 e_record = min((d + 1) * stride, self.ndata)
118 shred_list = list(range(d * stride, e_record))
119 device = self.devices[d]
120 logger.info("GPU %s handle %d data." % (device, len(shred_list)))
121 p = self.context.Process(target=self.worker, args=(shred_list, device))
122 procs.append(p)
123
124 for p in procs:
125 p.start()
126
127 all_results = []
128 for _ in tqdm(range(self.ndata)):
129 t = self.results_queue.get()
130 all_results.append(t)
131 if self.verbose:
132 self.compute_metric(all_results)
133
134 for p in procs:
135 p.join()
136
137 result_line = self.compute_metric(all_results)
138 logger.info("Evaluation Elapsed Time: %.2fs" % (time.perf_counter() - start_eval_time))
139 return result_line
140
141 def worker(self, shred_list, device):
142 start_load_time = time.time()

Callers 1

runMethod · 0.95

Calls 2

compute_metricMethod · 0.95
startMethod · 0.80

Tested by

no test coverage detected