Go to the documentation of this file.00001 #ifndef OPENMP_SOLVER_H
00002 #define OPENMP_SOLVER_H
00003
00004 #include "parallel_solver.h"
00005
00006 namespace parallel_ode
00007 {
00008
00009 const int DEFAULT_OPENMP_FLAGS =
00010 ParallelFlags::PARALLEL_ALIGN
00011 | ParallelFlags::PARALLEL_RANDOMIZE
00012 | ParallelFlags::PARALLEL_ATOMICS;
00013
00014 template<typename T>
00015 class OpenMPPGSSolver : public ParallelPGSSolver<T, T, ParallelType::OpenMP>
00016 {
00017 public:
00018 typedef typename vec4<T>::Type Vec4T;
00019
00028 OpenMPPGSSolver( int parallelFlags = DEFAULT_OPENMP_FLAGS,
00029 BatchType batchType = BatchTypes::DEFAULT_BATCH_TYPE,
00030 ReduceType reduceType = ReduceTypes::DEFAULT_REDUCE_TYPE,
00031 uint numBatches = ParallelOptions::MAXBATCHES )
00032
00033 : ParallelPGSSolver<T, T, ParallelTypes::OpenMP>( parallelFlags, batchType, reduceType, numBatches ) {
00034
00035 }
00036
00037 virtual ~OpenMPPGSSolver( ) {
00038
00039 }
00040
00041 protected:
00042
00043 virtual void solveAndReduce( const int offset, const int batchSize );
00044
00045 virtual void loadConstraints( );
00046 };
00047
00048 }
00049
00050 #endif