67 ml2d->addPartialDocfileData(docfiledata, ml2d->myFirstImg, ml2d->myLastImg);
69 size_t first_img, last_img;
72 for (
size_t docCounter = 1; docCounter <
node->
size; ++docCounter)
76 MPI_COMM_WORLD, &status);
79 MPI_COMM_WORLD, &status);
81 ml2d->addPartialDocfileData(docfiledata, first_img, last_img);
118 MPI_Allreduce(&
LL, &aux, 1, MPI_DOUBLE, MPI_SUM,
125 MPI_SUM, MPI_COMM_WORLD);
128 MPI_SUM, MPI_COMM_WORLD);
135 MPI_SUM, MPI_COMM_WORLD);
137 MPI_Allreduce(&
sumw[refno], &aux, 1, MPI_DOUBLE,
138 MPI_SUM, MPI_COMM_WORLD);
140 MPI_Allreduce(&
sumwsc2[refno], &aux, 1, MPI_DOUBLE,
141 MPI_SUM, MPI_COMM_WORLD);
143 MPI_Allreduce(&
sumw_mirror[refno], &aux, 1, MPI_DOUBLE,
144 MPI_SUM, MPI_COMM_WORLD);
146 MPI_Allreduce(&
sumw2[refno], &aux, 1, MPI_DOUBLE,
147 MPI_SUM, MPI_COMM_WORLD);
149 MPI_Allreduce(&
sumwsc[refno], &aux, 1, MPI_DOUBLE,
150 MPI_SUM, MPI_COMM_WORLD);
188 #define SET_RANK_AND_SIZE() rank = node->rank; size = node->size; 204 MPI_Allreduce(&
LL, &aux, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
206 MPI_Allreduce(&
sumcorr, &aux, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
217 for (
size_t ires = 0; ires <
hdim; ires++)
226 for (
int refno = 0;refno <
model.
n_ref; refno++)
237 MPI_Allreduce(&
sumw[refno], &aux, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
239 MPI_Allreduce(&
sumw2[refno], &aux, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
241 MPI_Allreduce(&
sumwsc2[refno], &aux, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
243 MPI_Allreduce(&
sumwsc[refno], &aux, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
245 MPI_Allreduce(&
sumw_mirror[refno], &aux, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
248 for (
size_t ifocus = 0;ifocus <
nr_focus;ifocus++)
250 for (
size_t ii = 0; ii <
Mwsum_sigma2[ifocus].size(); ii++)
252 MPI_Allreduce(&
Mwsum_sigma2[ifocus][ii], &aux, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
257 MPI_Allreduce(&
sumw_defocus[ifocus], &aux, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
281 LOG(
"MpiProgMLF2D::endIteration : before sendDocfile");
283 LOG(
"MpiProgMLF2D::endIteration : before writeOutputFiles");
285 LOG(
"MpiProgMLF2D::endIteration : before updateWienerFilters");
287 LOG(
"MpiProgMLF2D::endIteration : before barrierWait");
294 LOG(
"MpiProgMLF2D::writeOutputFiles : waiting before writing");
300 LOG(
"MpiProgMLF2D::writeOutputFiles : master writing ");
308 LOG(
"MpiProgMLF2D::writeOutputFiles : waiting after writing");
virtual void usage(int verb=0) const
bool do_student
IN DEVELOPMENT.
virtual void printModel(const String &msg, const ModelML2D &model)
void resize(size_t Ndim, size_t Zdim, size_t Ydim, size_t Xdim, bool copy=true)
constexpr int TAG_DOCFILESIZE
std::vector< double > sumw_mirror
void sendDocfile(const MultidimArray< double > &data)
size_t divide_equally(size_t N, size_t size, size_t rank, size_t &first, size_t &last)
#define MULTIDIM_ARRAY(v)
std::vector< double > sumw_defocus
constexpr int TAG_DOCFILE
void expectation()
Integrate over all experimental images.
virtual void produceSideInfo2()
Try to merge produceSideInfo1 and 2.
void expectation()
After normal ML2D expectation, data must be collected from nodes.
virtual void expectation()
Integrate over all experimental images.
void setNumberOfLocalImages()
#define FN_CLASSES_MD(base)
std::vector< double > sumwsc2
void endIteration()
Redefine endIteration for some synchronization.
MultidimArray< double > spectral_signal
bool do_kstest
Statistical analysis of the noise distributions.
std::vector< double > sumw
std::vector< MultidimArray< double > > wsum_Mref
FileName getIterExtraPath(const FileName &fn_root, int iter, bool makePath)
#define FOR_ALL_DIRECT_ELEMENTS_IN_MULTIDIMARRAY(v)
MultidimArray< double > docfiledata
virtual void produceSideInfo2()
#define DIRECT_MULTIDIM_ELEM(v, n)
std::vector< Histogram1D > resolhist
virtual void writeOutputFiles(const ModelML2D &model, OutputType outputType=OUT_FINAL)
Write model parameters.
std::vector< double > sumwsc2
std::vector< double > sumwsc
std::vector< double > sumw
std::vector< double > sumw_mirror
std::vector< double > sumw2
void writeOutputFiles(const ModelML2D &model, OutputType outputType=OUT_FINAL)
Write model parameters.
std::vector< double > sumwsc
std::vector< MultidimArray< double > > wsum_Mref
std::vector< std::vector< double > > Mwsum_sigma2
String formatString(const char *format,...)
void expectation()
After normal ML2D expectation, data must be collected from nodes.
virtual void usage(int verb=0) const
void endIteration()
Redefine endIteration for some synchronization.
void writeOutputFiles(const ModelML2D &model, OutputType outputType=OUT_FINAL)
Write model parameters.
void updateWienerFilters(const MultidimArray< double > &spectral_signal, std::vector< double > &sumw_defocus, int iter)
#define SET_RANK_AND_SIZE()
void printModel(const String &msg, const ModelML2D &model)
virtual void writeOutputFiles(const ModelML2D &model, OutputType outputType)
Write out reference images, selfile and logfile.
virtual void produceSideInfo()
Setup lots of stuff.
std::vector< double > sumw2
std::vector< MultidimArray< double > > wsum_ctfMref