Xmipp  v3.23.11-Nereus
Macros | Functions | Variables
ml_align2d.cpp File Reference
#include "ml_align2d.h"
#include "core/metadata_sql.h"
#include "core/transformations.h"
Include dependency graph for ml_align2d.cpp:

Go to the source code of this file.

Macros

#define IIFLIP   (imirror * nr_nomirror_flips + iflip)
 Some macro definitions for the following function. More...
 
#define IROT   (IIFLIP * nr_psi + ipsi)
 
#define IREFMIR   ()
 
#define WEIGHT   (dAij(pfs_weight, refno, IROT))
 
#define MAX_WEIGHT   (dAij(pfs_maxweight, imirror, refno))
 
#define MSIGNIFICANT   (dAij(Msignificant, refno, IROT))
 
#define DP(x)   << std::setw(15) << x
 
#define ASSIGN(var)   local_model.var = var
 
#define ITER_PREFIX   "iter"
 
#define FINAL_PREFIX   "final"
 
#define IS_FINAL   outputType == OUT_FINAL
 

Functions

void * doThreadsTasks (void *data)
 Function for threads do different tasks. More...
 

Variables

pthread_mutex_t update_mutex
 
pthread_mutex_t refno_mutex
 

Macro Definition Documentation

◆ ASSIGN

#define ASSIGN (   var)    local_model.var = var

◆ DP

#define DP (   x)    << std::setw(15) << x

◆ FINAL_PREFIX

#define FINAL_PREFIX   "final"

Definition at line 2168 of file ml_align2d.cpp.

◆ IIFLIP

#define IIFLIP   (imirror * nr_nomirror_flips + iflip)

Some macro definitions for the following function.

Definition at line 1159 of file ml_align2d.cpp.

◆ IREFMIR

#define IREFMIR   ()

Definition at line 1161 of file ml_align2d.cpp.

◆ IROT

#define IROT   (IIFLIP * nr_psi + ipsi)

Definition at line 1160 of file ml_align2d.cpp.

◆ IS_FINAL

#define IS_FINAL   outputType == OUT_FINAL

Definition at line 2169 of file ml_align2d.cpp.

◆ ITER_PREFIX

#define ITER_PREFIX   "iter"

Definition at line 2167 of file ml_align2d.cpp.

◆ MAX_WEIGHT

#define MAX_WEIGHT   (dAij(pfs_maxweight, imirror, refno))

Definition at line 1163 of file ml_align2d.cpp.

◆ MSIGNIFICANT

#define MSIGNIFICANT   (dAij(Msignificant, refno, IROT))

Definition at line 1164 of file ml_align2d.cpp.

◆ WEIGHT

#define WEIGHT   (dAij(pfs_weight, refno, IROT))

Definition at line 1162 of file ml_align2d.cpp.

Function Documentation

◆ doThreadsTasks()

void* doThreadsTasks ( void *  data)

Function for threads do different tasks.

Definition at line 967 of file ml_align2d.cpp.

968 {
969  auto * thread_data = (structThreadTasks *) data;
970 
971  ProgML2D * prm = thread_data->prm;
972 
973  barrier_t & barrier = prm->barrier;
974  barrier_t & barrier2 = prm->barrier2;
975 
976  //Loop until the threadTask become TH_EXIT
977 
978  do
979  {
980  //Wait until main threads order to start
981  //debug_print("Waiting on barrier, th ", thread_id);
982  barrier_wait(&barrier);
983 
984  //Check task to do
985 
986  switch (prm->threadTask)
987  {
988 
989  case TH_PFS_REFNO:
991  break;
992 
993  case TH_ESI_REFNO:
995  break;
996 
997  case TH_ESI_UPDATE_REFNO:
998  prm->doThreadESIUpdateRefno();
999  break;
1000 
1001  case TH_RR_REFNO:
1003  break;
1004 
1005  case TH_RRR_REFNO:
1007  break;
1008 
1009  case TH_EXIT:
1010  pthread_exit(nullptr);
1011  break;
1012 
1013  }
1014 
1015  barrier_wait(&barrier2);
1016 
1017  }
1018  while (1);
1019 
1020 }//close function doThreadsTasks
int threadTask
Definition: ml_align2d.h:67
barrier_t barrier2
Definition: ml_align2d.h:68
void doThreadExpectationSingleImageRefno()
Thread code to parallelize refno loop in expectationSingleImage.
barrier_t barrier
Definition: ml_align2d.h:68
Barrier * barrier
void doThreadRotateReferenceRefno()
Thread code to parallelize refno loop in rotateReference.
void doThreadReverseRotateReferenceRefno()
Thread code to parallelize refno loop in reverseRotateReference.
void doThreadPreselectFastSignificantRefno()
Thread code to parallelize refno loop in preselectFastSignificant.
Definition: ml2d.h:74
void doThreadESIUpdateRefno()
Thread code to parallelize update loop in ESI.
ProgClassifyCL2D * prm
int barrier_wait(barrier_t *barrier)

Variable Documentation

◆ refno_mutex

pthread_mutex_t refno_mutex
Initial value:
=
PTHREAD_MUTEX_INITIALIZER

Definition at line 34 of file ml_align2d.cpp.

◆ update_mutex

pthread_mutex_t update_mutex
Initial value:
=
PTHREAD_MUTEX_INITIALIZER

Definition at line 31 of file ml_align2d.cpp.