OUT of Memory

Hi there,

I have to PCs one with 32 GB and the other one with 16 GB RAM.
The 32GB RAM runs nearly perfectly through.
If I do the exact same thing on the 16GB one it gives me an OUT of Memory during dwifslpreproc.

Here is the message:

dwifslpreproc: [ERROR] eddy_openmp --imain=eddy_in.nii --mask=eddy_mask.nii --acqp=eddy_config.txt --index=eddy_indices.txt --bvecs=bvecs --bvals=bvals --topup=field --data_is_shelled --slm=linear --out=dwi_post_eddy --verbose (dwifslpreproc:916)
dwifslpreproc: [ERROR] Information from failed command:
dwifslpreproc:
               Reading images
               Performing volume-to-volume registration
               Running Register
               Loading prediction maker
               Evaluating prediction maker model
               Calculating parameter updates
               Iter: 0, Total mss = 26.4142
               Loading prediction maker
               Evaluating prediction maker model
               Calculating parameter updates
               Iter: 1, Total mss = 15.7662
               Loading prediction maker
               Evaluating prediction maker model
               Calculating parameter updates
               Iter: 2, Total mss = 14.7557
               Loading prediction maker
               Evaluating prediction maker model
               Calculating parameter updates
               Iter: 3, Total mss = 14.6141
               Loading prediction maker
               Evaluating prediction maker model
               Calculating parameter updates
               Iter: 4, Total mss = 14.5962
               Running sm.ApplyB0LocationReference
               Running sm.PolateB0MovPar
               Running Register
               Loading prediction maker
               Evaluating prediction maker model
               Estimated hyperparameters: 1.827512 
               0.425221 
               7.352032 
               4.780985 
               4.503050 
               4.695224 
               
               Calculating parameter updates
               Out of memory
               Out of memory
               EDDY:::  EddyUtils.h:::  static NEWIMAGE::volume<float> EDDY::FieldUtils::Voxel2MMDisplacements(const NEWIMAGE::volume<float>&):  Exception thrown
               EDDY:::  EddyUtils.h:::  static NEWIMAGE::volume<float> EDDY::FieldUtils::Voxel2MMDisplacements(const NEWIMAGE::volume<float>&):  Exception thrown
               EDDY:::  ECScanClasses.cpp:::  NEWIMAGE::volume<float> EDDY::ECScan::field_for_model_to_scan_transform(std::shared_ptr<const NEWIMAGE::volume<float> >, NEWIMAGE::volume<float>*, NEWIMAGE::volume<float>*) const:  Exception thrown
               EDDY:::  ECScanClasses.cpp:::  NEWIMAGE::volume<float> EDDY::ECScan::field_for_model_to_scan_transform(std::shared_ptr<const NEWIMAGE::volume<float> >, NEWIMAGE::volume<float>*, NEWIMAGE::volume<float>*) const:  Exception thrown
               EDDY:::  ECScanClasses.h:::  NEWIMAGE::volume<float> EDDY::ECScan::FieldForModelToScanTransformWithJac(std::shared_ptr<const NEWIMAGE::volume<float> >, NEWIMAGE::volume<float>&) const:  Exception thrown
               EDDY:::  EddyUtils.cpp:::  static double EDDY::EddyUtils::param_update(const NEWIMAGE::volume<float>&, std::shared_ptr<const NEWIMAGE::volume<float> >, const NEWIMAGE::volume<float>&, EDDY::Parameters, bool, float, unsigned int, unsigned int, unsigned int, EDDY::ECScan&, NEWMAT::ColumnVector*):  Exception thrown
               EDDY:::  ECScanClasses.h:::  NEWIMAGE::volume<float> EDDY::ECScan::FieldForModelToScanTransformWithJac(std::shared_ptr<const NEWIMAGE::volume<float> >, NEWIMAGE::volume<float>&) const:  Exception thrown
               EDDY:::  EddyUtils.cpp:::  static double EDDY::EddyUtils::param_update(const NEWIMAGE::volume<float>&, std::shared_ptr<const NEWIMAGE::volume<float> >, const NEWIMAGE::volume<float>&, EDDY::Parameters, bool, float, unsigned int, unsigned int, unsigned int, EDDY::ECScan&, NEWMAT::ColumnVector*):  Exception thrown
               Image Exception : #Image Exception : #99 :: Out of memory
               99 :: Out of memory
               terminate called recursively
               terminate called after throwing an instance of 'EDDY::EddyException'
dwifslpreproc:
dwifslpreproc: [ERROR] For debugging, inspect contents of scratch directory: /mnt/DATEN2/Interpolations_Projekt/Auswertung_1.0_Interpol_v04_multi shell single tissue_ VMWare/Auswertung_01_ew166_1.0mmInterpol_/dwifslpreproc-tmp-9RY7DT/

Maybe you have an idea.

The data is 1mm iso and whole brain. Its a lot of voxel.

Yours,

Ralf

Given that dwifslpreproc is a pretty thinthick wrapper around FSL eddy, I suspect it’s really just that your data are too large to fit in 16Gb, alongside all the intermediate data that eddy needs to generate during processing. Not a lot we can do here…

Thanks for the answer. I think you are right. Its a docker and I gave it 32 GB RAM and it runs now with the 1mm iso wholbrain. So its really a limit there.

Thanks, Donald