relion_run_motioncorr std::bad_alloc

Issue #37 resolved
jon fay created an issue

Seem to be experiencing a error with relion_run_motioncorr 100 frame 8k tif movies works fine with CPU and GPU versions 200 frame 8k tif movies errors out: * terminate called after throwing an instance of 'std::bad_alloc' * what(): std::bad_alloc

CL run of same 200 frame 8k tif with MotionCor2 works fine. Relion3 GUI wrapper run of same 200 frame 8k mrc with MortionCor2 works fine.

Please advise.

Comments (6)

  1. Takanori Nakane

    How much memory do you have and how many MPI processes do you use? 200 frames x 8K x 8K is very large! It will consume > 100 GB of RAM per MPI process. Also consider using the --early_binning option if you apply binning.

  2. jon fay reporter

    I have ~64GB RAM which is fine for GPU version, not run through relion_run_motioncorr.

    For testing, I ran the CPU version on a machine with 500GB RAM and it proceeds, although it seems the output has worse patch alignment than the gpu version. I'll test differing groupings, patches, and other options to improve.

  3. Takanori Nakane

    Thanks for testing.

    For testing, I ran the CPU version on a machine with 500GB RAM and it proceeds

    This proves that the problem was memory shortage. 200 frames x 8K x 8K are beyond my design consideration for the CPU version. If such large datasets become common in future, I will improve my implementation for better memory handling.

    it seems the output has worse patch alignment than the gpu version. I'll test differing groupings, patches, and other options to improve.

    My CPU version might not give as good trajectories as the UCSF MotionCor2 in some datasets. As long as you use Bayesian Polishing afterwards, the accuracy of initial motion correction is not very important.

  4. Log in to comment