def _write_solocache_group_to_file(self, data_dict, group_prefix="/"):
if self._is_master() and group_prefix != "/" and group_prefix not in self._f:
self._f.create_group(group_prefix)
keys = data_dict.keys()
keys.sort()
for k in keys:
name = group_prefix + str(k)
if isinstance(data_dict[k], dict):
self._write_solocache_group_to_file(data_dict[k], group_prefix=name+"/")
else:
(data, op) = data_dict[k]
if op is not None:
if numpy.isscalar(data):
sendobj = numpy.array(data)
else:
sendobj = data
recvobj = numpy.empty_like(data)
log_debug(logger, self._log_prefix + "Reducing data %s" % (name))
self.comm.Reduce(
[sendobj, MPI.DOUBLE],
[recvobj, MPI.DOUBLE],
op = op,
root = 0
)
data = recvobj
if self._is_master():
log_debug(logger, self._log_prefix + "Writing data %s" % (name))
self._write_to_f(name, data)
评论列表
文章目录