Files
WFR-UnitTests/iwir/coderepo/sparselu/atomic4.code
T
2017-04-11 15:49:55 +02:00

22 lines
904 B
Plaintext
Executable File

float** BENCH = sin->BENCH.getEntryValue(0);
int bots_arg_size = sin->bots_arg_size.getValue();
int kk = sin->kk.getValue();
int tmax = sin->tmax.getValue();
int t = sin->tindex.getValue();
int itercount = bots_arg_size - (kk+1);
int iterslice = itercount / (tmax+1);
int start = kk+1 + iterslice*t;
int stop = kk+1 + iterslice*(t+1);
if (t == tmax-1 && stop != bots_arg_size) {
stop = bots_arg_size;
}
for (int ii=start; ii<stop; ii++)
if (BENCH[ii*bots_arg_size+kk] != NULL)
for (int jj=kk+1; jj<bots_arg_size; jj++)
if (BENCH[kk*bots_arg_size+jj] != NULL)
//#pragma omp task untied firstprivate(kk, jj, ii) shared(BENCH)
{
if (BENCH[ii*bots_arg_size+jj]==NULL) BENCH[ii*bots_arg_size+jj] = allocate_clean_block();
bmod(BENCH[ii*bots_arg_size+kk], BENCH[kk*bots_arg_size+jj], BENCH[ii*bots_arg_size+jj]);
}
sout->BENCHout.setValue(BENCH);