小分けにして保存したデータをh5pyで一つにまとめる
小分けして保存したデータをひとまとめにしてhdf5ファイルに保存したい。クラスタのマスターノードはメモリ搭載量が小さいが、計算実行ノードではデータ全体がメモリに入る。小分けしたデータをnumpy arrayに一度に入れてしまうとマスターノードのメモリが足りない。小分けしたデータを逐次的にhdf5ファイルに書き込むことで問題を解決した。
with h5py.File("large_data.hdf5", 'w') as w: large_data = w.create_dataset('values', values_shape, dtype=dtype) idx = 0 for fname, npts in zip(filenames, num_points): large_data[idx:(idx + npts)] = read_piece_data(fname) idx += npts