00001 #ifndef OPENMP_KERNELS_H 00002 #define OPENMP_KERNELS_H 00003 00004 class ReduceStrategy; 00005 00006 #include <parallel_common.h> 00007 #include <parallel_math.h> 00008 00009 namespace parallel_ode 00010 { 00011 00012 template <typename T> 00013 void ompZeroVector( T *buffer, int bufferSize ); 00014 00015 template <typename T> 00016 void ompPGSReduce( typename vec4<T>::Type *fc0, 00017 typename vec4<T>::Type *fc1, 00018 typename vec4<T>::Type *fc0_reduction, 00019 typename vec4<T>::Type *fc1_reduction, 00020 ReduceStrategy* reduceStrategy ); 00021 00022 template <typename T> 00023 void ompPGSSolve( int4 *bodyIDs, 00024 int *fIDs, 00025 typename vec4<T>::Type *j, 00026 typename vec4<T>::Type *ij, 00027 typename vec4<T>::Type *fc0, 00028 typename vec4<T>::Type *fc1, 00029 typename vec4<T>::Type *fc0_reduction, 00030 typename vec4<T>::Type *fc1_reduction, 00031 T* lambda, 00032 T* adcfm, 00033 T* rhs, 00034 T* hilo, 00035 int offset, int numConstraints, bool bUseAtomics, int bStride, int cStride ); 00036 00037 } 00038 #endif