8#if defined(QDP_USE_OMP_THREADS)
18 return omp_get_max_threads();
25 return omp_get_thread_num();
33#pragma omp parallel shared(numSiteTable, a)
36 int threads_num = omp_get_num_threads();
37 int myId = omp_get_thread_num();
39 int active_threads_num = threads_num > numSiteTable ? numSiteTable : threads_num;
41 if( myId < numSiteTable ) {
42 int low = (numSiteTable*myId)/active_threads_num;
49 int high =(numSiteTable*(myId+1))/active_threads_num;
51 func(low, high, myId, &a);
59#if defined(QDP_USE_QMT_THREADS)
72 return qmt_num_threads();
78 return qmt_thread_num();
85 qmt_call((qmt_userfunc_t)func, numSiteTable, &a);
108 int high = numSiteTable;
110 func(low, high, 0, &a);
Yet another random number generator.
void dispatch_to_threads(int numSiteTable, Arg a, void(*func)(int, int, int, Arg *))