#ifndef PFOR_PFOR_STRATEGIES_OPENMP_H #define PFOR_PFOR_STRATEGIES_OPENMP_H #include #include "parameters.h" namespace pfor { template struct ForLoopOMP; template struct ForLoopOMP { static void eval(Range const& range, E e) { if(range.step() > 0) for(auto it = +range.begin(); it < range.end(); it += range.step()) e[it]; else for(auto it = +range.begin(); it > range.end(); it += range.step()) e[it]; } }; template struct ForLoopOMP { static void eval(Range const& range, E e) { if(range.step() > 0) { #pragma omp parallel for num_threads(ParallelForParameters::nThreads) for(auto it = +range.begin(); it < range.end(); it += range.step()) e[it]; } else { #pragma omp parallel for num_threads(ParallelForParameters::nThreads) for(auto it = +range.begin(); it > range.end(); it += range.step()) e[it]; } } }; } #endif