346 int rank = self->rank;
347 std::vector<size_t> &objId=self->objId;
358 const size_t unroll=8;
364 std::cout <<
"Applying Tt ...\n";
367 while (self->taskDistributor->getTasks(first, last))
369 for (
size_t idx=first; idx<=last; ++idx)
372 I.readApplyGeo(MD,objId[idx]);
377 for (
int mirror=0; mirror<2; ++mirror)
384 for (
double psi=0;
psi<360;
psi+=
self->psi_step)
387 for (
double y=-self->max_shift_change; y<=self->max_shift_change;
y+=self->shift_step)
390 for (
double x=-self->max_shift_change; x<=self->max_shift_change;
x+=self->shift_step, ++block_idx)
403 const double *ptrWtranspose=&
MAT_ELEM(Wtranspose,
j,0);
404 for (
size_t n=0;
n<
nmax;
n+=unroll, ptrIaux+=unroll, ptrMask+=unroll)
407 dotproduct+=(*ptrIaux)*(*ptrWtranspose++);
409 dotproduct+=(*(ptrIaux+1))*(*ptrWtranspose++);
411 dotproduct+=(*(ptrIaux+2))*(*ptrWtranspose++);
413 dotproduct+=(*(ptrIaux+3))*(*ptrWtranspose++);
415 dotproduct+=(*(ptrIaux+4))*(*ptrWtranspose++);
417 dotproduct+=(*(ptrIaux+5))*(*ptrWtranspose++);
419 dotproduct+=(*(ptrIaux+6))*(*ptrWtranspose++);
421 dotproduct+=(*(ptrIaux+7))*(*ptrWtranspose++);
423 for (
size_t n=nmax;
n<
MAT_XSIZE(Wtranspose); ++
n, ++ptrMask, ++ptrIaux)
425 dotproduct+=(*ptrIaux)*(*ptrWtranspose++);
435 size_t Hidx=idx*2*
self->Nangles*
self->Nshifts;
void init_progress_bar(long total)
#define MULTIDIM_ARRAY(v)
#define MAT_ELEM(m, i, j)
void progress_bar(long rlen)
#define DIRECT_MULTIDIM_ELEM(v, n)
void * workClass
The class in which threads will be working.
double psi(const double x)
int thread_id
The thread id.