openmp_solver.cpp
Go to the documentation of this file.
00001 #include <openmp_solver.h>
00002 #include <parallel_utils.h>
00003 
00004 #include "openmp_kernels.h"
00005 
00006 namespace parallel_ode
00007 {
00008 
00009 template class OpenMPPGSSolver<dReal>;
00010 
00011 template<typename T>
00012 void OpenMPPGSSolver<T>::solveAndReduce( const int offset, const int batchSize )
00013 {
00014   ompPGSSolve<T>( this->bodyIDs.getHostBuffer( ),
00015                   this->fIDs.getHostBuffer( ),
00016                   this->j0.getHostBuffer( ),
00017                   this->ij0.getHostBuffer( ),
00018                   this->bodyFAcc.getHostBuffer( ),
00019                   this->bodyTAcc.getHostBuffer( ),
00020                   this->bodyFAccReduction.getHostBuffer( ),
00021                   this->bodyTAccReduction.getHostBuffer( ),
00022                   this->lambda0.getHostBuffer( ),
00023                   this->adcfm.getHostBuffer( ),
00024                   this->rhs.getHostBuffer( ),
00025                   this->lohiD.getHostBuffer( ),
00026                   offset,
00027                   batchSize,
00028                   this->atomicsEnabled( ),
00029                   this->getBodyStride( ),
00030                   this->getConstraintStride( ) );
00031 
00032   if( this->reduceEnabled( ) ) {
00033     ompPGSReduce<T>( this->bodyFAcc.getHostBuffer( ),
00034                      this->bodyTAcc.getHostBuffer( ),
00035                      this->bodyFAccReduction.getHostBuffer( ),
00036                      this->bodyTAccReduction.getHostBuffer( ),
00037                      this->reduceStrategy_ );
00038   }
00039 }
00040 
00041 template<typename T>
00042 void OpenMPPGSSolver<T>::loadConstraints( )
00043 {
00044   ParallelPGSSolver<T,T,ParallelTypes::OpenMP>::loadConstraints( );
00045 
00046   // Zero out the force accumulation vector
00047   if( this->reduceEnabled( ) ) {
00048     ompZeroVector<Vec4T>(this->bodyFAccReduction.getHostBuffer( ), this->bodyFAccReduction.getSize( ));
00049     ompZeroVector<Vec4T>(this->bodyTAccReduction.getHostBuffer( ), this->bodyTAccReduction.getSize( ));
00050   }
00051 }
00052 
00053 }


parallel_quickstep
Author(s): Jared Duke
autogenerated on Wed Apr 23 2014 10:23:51