The emClarity reconstruct program holds the entire dataset (+ temporaries?), on RAM, which ends up requiring too much RAM. For the EMPIAR-10304 dataset, containing about 10000 particles (190x190x190 Ang mask at bin1), emClarity reconstruct progressively increases to more than 400G of RAM.
Ultimately, output_cell should contain the entire dataset...
Reducing the total exposure at the command line could be a temporary solution for the users (less exposure means less projections), but for large datasets I'm not sure emClarity reconstruct actually works.
Hi,
The
emClarity reconstruct
program holds the entire dataset (+ temporaries?), on RAM, which ends up requiring too much RAM. For the EMPIAR-10304 dataset, containing about 10000 particles (190x190x190 Ang mask at bin1),emClarity reconstruct
progressively increases to more than 400G of RAM.Looking at the code, it looks like
BH_to_cisTEM_mapBack
is simply looping through each projection of each tilt-series and collects every particle tile. It first collects the tiles of a given projection on the GPU, inoutput_particle_stack
: https://github.com/bHimes/emClarity/blob/f06204208e0617fc69e94696f8825d0077cdd637/synthetic/BH_to_cisTEM_mapBack.m#L527Once the projection is done, the output stack is gathered to the RAM: https://github.com/bHimes/emClarity/blob/f06204208e0617fc69e94696f8825d0077cdd637/synthetic/BH_to_cisTEM_mapBack.m#L694
Ultimately,
output_cell
should contain the entire dataset...Reducing the total exposure at the command line could be a temporary solution for the users (less exposure means less projections), but for large datasets I'm not sure
emClarity reconstruct
actually works.Thomas