diff options
Diffstat (limited to 'boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp')
-rw-r--r-- | boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp | 61 |
1 files changed, 58 insertions, 3 deletions
diff --git a/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp b/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp index 0105a4e344..e9b3a64234 100644 --- a/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp +++ b/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp @@ -6,8 +6,8 @@ operations_dispatcher specialization for thrust [end_description] - Copyright 2013 Karsten Ahnert - Copyright 2013 Mario Mulansky + Copyright 2013-2014 Karsten Ahnert + Copyright 2013-2014 Mario Mulansky Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or @@ -24,6 +24,7 @@ #include <boost/numeric/odeint/external/thrust/thrust_operations.hpp> #include <boost/numeric/odeint/algebra/operations_dispatcher.hpp> +// support for the standard thrust containers namespace boost { namespace numeric { @@ -47,6 +48,60 @@ struct operations_dispatcher< thrust::device_vector< T , A > > } // namespace numeric } // namespace boost +// add support for thrust backend vectors, if available -#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_ALGEBRA_DISPATCHER_HPP_DEFINED +#include <thrust/version.h> + +#if THRUST_VERSION >= 100600 + +// specialization for thrust cpp vector +#include <thrust/system/cpp/vector.h> +namespace boost { namespace numeric { namespace odeint { + template< class T , class A > + struct operations_dispatcher< thrust::cpp::vector< T , A > > + { + typedef thrust_operations operations_type; + }; +} } } + +// specialization for thrust omp vector +#ifdef _OPENMP +#include <thrust/system/omp/vector.h> +namespace boost { namespace numeric { namespace odeint { + template< class T , class A > + struct operations_dispatcher< thrust::omp::vector< T , A > > + { + typedef thrust_operations operations_type; + }; +} } } +#endif // _OPENMP + +// specialization for thrust tbb vector +#ifdef TBB_VERSION_MAJOR +#include <thrust/system/tbb/vector.h> +namespace boost { namespace numeric { namespace odeint { + template< class T , class A > + struct operations_dispatcher< thrust::tbb::vector< T , A > > + { + typedef thrust_operations operations_type; + }; +} } } +#endif // TBB_VERSION_MAJOR + +// specialization for thrust cuda vector +#ifdef __CUDACC__ +#include <thrust/system/cuda/vector.h> +namespace boost { namespace numeric { namespace odeint { + template< class T , class A > + struct operations_dispatcher< thrust::cuda::vector< T , A > > + { + typedef thrust_operations operations_type; + }; +} } } +#endif // __CUDACC__ + +#endif // THRUST_VERSION >= 100600 + + +#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_THRUST_THRUST_OPERATIONS_DISPATCHER_HPP_DEFINED |