|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r70818 - in sandbox/odeint/branches/karsten: boost/numeric/odeint/external/thrust boost/numeric/odeint/integrate boost/numeric/odeint/stepper boost/numeric/odeint/stepper/base libs/numeric/odeint/examples/thrust libs/numeric/odeint/ideas libs/numeric/odeint/ideas/rosenbrock4 libs/numeric/odeint/ideas/units libs/numeric/odeint/test_external/thrust
From: mario.mulansky_at_[hidden]
Date: 2011-04-01 10:33:32
Author: mariomulansky
Date: 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
New Revision: 70818
URL: http://svn.boost.org/trac/boost/changeset/70818
Log:
added routines to thrust algebra and a thrust example
Added:
sandbox/odeint/branches/karsten/libs/numeric/odeint/examples/thrust/
sandbox/odeint/branches/karsten/libs/numeric/odeint/examples/thrust/Makefile (contents, props changed)
sandbox/odeint/branches/karsten/libs/numeric/odeint/examples/thrust/phase_osc_chain.cu (contents, props changed)
Text files modified:
sandbox/odeint/branches/karsten/boost/numeric/odeint/external/thrust/thrust_algebra.hpp | 94 ++++++++++++++++++++++++++++++++++-
sandbox/odeint/branches/karsten/boost/numeric/odeint/external/thrust/thrust_operations.hpp | 105 +++++++++++++++++++++++++++++++++++++++
sandbox/odeint/branches/karsten/boost/numeric/odeint/integrate/integrate.hpp | 2
sandbox/odeint/branches/karsten/boost/numeric/odeint/integrate/integrate_const.hpp | 4 +
sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/base/explicit_stepper_and_error_stepper_fsal_base.hpp | 2
sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/implicit_euler.hpp | 1
sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/odeint_ref_problem.cpp | 4
sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/rosenbrock4/Jamfile | 2
sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/units/Jamfile | 2
sandbox/odeint/branches/karsten/libs/numeric/odeint/test_external/thrust/Makefile | 2
10 files changed, 205 insertions(+), 13 deletions(-)
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/external/thrust/thrust_algebra.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/external/thrust/thrust_algebra.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/external/thrust/thrust_algebra.hpp 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -42,8 +42,10 @@
static void for_each2( StateType1 &s1 , StateType2 &s2 , Operation op )
{
thrust::for_each(
- thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) , boost::begin(s2) ) ) ,
- thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) , boost::end(s2) ) ) ,
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
+ boost::begin(s2) ) ) ,
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
+ boost::end(s2) ) ) ,
op);
}
@@ -51,10 +53,94 @@
static void for_each3( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , Operation op )
{
thrust::for_each(
- thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) , boost::begin(s2) , boost::begin(s3) ) ) ,
- thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) , boost::end(s2) , boost::begin(s3) ) ) ,
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
+ boost::begin(s2) ,
+ boost::begin(s3) ) ) ,
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
+ boost::end(s2) ,
+ boost::end(s3) ) ) ,
op);
}
+
+ template< class StateType1 , class StateType2 , class StateType3 , class StateType4 ,
+ class Operation >
+ static void for_each4( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType3 &s4 ,
+ Operation op )
+ {
+ thrust::for_each(
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
+ boost::begin(s2) ,
+ boost::begin(s3) ,
+ boost::begin(s4) ) ) ,
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
+ boost::end(s2) ,
+ boost::end(s3) ,
+ boost::end(s4) ) ) ,
+ op);
+ }
+
+ template< class StateType1 , class StateType2 , class StateType3 ,
+ class StateType4 , class StateType5 ,class Operation >
+ static void for_each5( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
+ StateType5 &s5 , Operation op )
+ {
+ thrust::for_each(
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
+ boost::begin(s2) ,
+ boost::begin(s3) ,
+ boost::begin(s4) ,
+ boost::begin(s5) ) ) ,
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
+ boost::end(s2) ,
+ boost::end(s3) ,
+ boost::end(s4) ,
+ boost::end(s5) ) ) ,
+ op);
+ }
+
+ template< class StateType1 , class StateType2 , class StateType3 ,
+ class StateType4 , class StateType5 , class StateType6 , class Operation >
+ static void for_each6( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
+ StateType5 &s5 , StateType6 &s6 , Operation op )
+ {
+ thrust::for_each(
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
+ boost::begin(s2) ,
+ boost::begin(s3) ,
+ boost::begin(s4) ,
+ boost::begin(s5) ,
+ boost::begin(s6) ) ) ,
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
+ boost::end(s2) ,
+ boost::end(s3) ,
+ boost::end(s4) ,
+ boost::end(s5) ,
+ boost::end(s6) ) ) ,
+ op);
+ }
+
+ template< class StateType1 , class StateType2 , class StateType3 , class StateType4 ,
+ class StateType5 , class StateType6 , class StateType7 , class Operation >
+ static void for_each7( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 ,
+ StateType5 &s5 , StateType6 &s6 , StateType7 &s7 , Operation op )
+ {
+ thrust::for_each(
+ thrust::make_zip_iterator( thrust::make_tuple( boost::begin(s1) ,
+ boost::begin(s2) ,
+ boost::begin(s3) ,
+ boost::begin(s4) ,
+ boost::begin(s5) ,
+ boost::begin(s6) ,
+ boost::begin(s7) ) ) ,
+ thrust::make_zip_iterator( thrust::make_tuple( boost::end(s1) ,
+ boost::end(s2) ,
+ boost::end(s3) ,
+ boost::end(s4) ,
+ boost::end(s5) ,
+ boost::end(s6) ,
+ boost::end(s7) ) ) ,
+ op);
+ }
};
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/external/thrust/thrust_operations.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/external/thrust/thrust_operations.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/external/thrust/thrust_operations.hpp 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -22,13 +22,14 @@
struct thrust_operations
{
- template< class Fac1 , class Fac2 >
+ template< class Fac1 = double , class Fac2 = Fac1 >
struct scale_sum2
{
const Fac1 m_alpha1;
const Fac2 m_alpha2;
- scale_sum2( const Fac1 alpha1 , const Fac2 alpha2 ) : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) { }
+ scale_sum2( const Fac1 alpha1 , const Fac2 alpha2 )
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) { }
template< class Tuple >
__host__ __device__
@@ -38,6 +39,106 @@
}
};
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac1 >
+ struct scale_sum3
+ {
+ const Fac1 m_alpha1;
+ const Fac2 m_alpha2;
+ const Fac3 m_alpha3;
+
+ scale_sum3( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 )
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) { }
+
+ template< class Tuple >
+ __host__ __device__
+ void operator()( Tuple t ) const
+ {
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
+ m_alpha2 * thrust::get<2>(t) +
+ m_alpha3 * thrust::get<3>(t);
+ }
+ };
+
+
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac1 , class Fac4 = Fac1 >
+ struct scale_sum4
+ {
+ const Fac1 m_alpha1;
+ const Fac2 m_alpha2;
+ const Fac3 m_alpha3;
+ const Fac4 m_alpha4;
+
+ scale_sum4( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 , const Fac4 alpha4 )
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) , m_alpha4( alpha4 ){ }
+
+ template< class Tuple >
+ __host__ __device__
+ void operator()( Tuple t ) const
+ {
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
+ m_alpha2 * thrust::get<2>(t) +
+ m_alpha3 * thrust::get<3>(t) +
+ m_alpha4 * thrust::get<4>(t);
+ }
+ };
+
+
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac1 ,
+ class Fac4 = Fac1 , class Fac5 = Fac1>
+ struct scale_sum5
+ {
+ const Fac1 m_alpha1;
+ const Fac2 m_alpha2;
+ const Fac3 m_alpha3;
+ const Fac4 m_alpha4;
+ const Fac5 m_alpha5;
+
+ scale_sum5( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 ,
+ const Fac4 alpha4 , const Fac5 alpha5 )
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) ,
+ m_alpha4( alpha4 ) , m_alpha5( alpha5 ) { }
+
+ template< class Tuple >
+ __host__ __device__
+ void operator()( Tuple t ) const
+ {
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
+ m_alpha2 * thrust::get<2>(t) +
+ m_alpha3 * thrust::get<3>(t) +
+ m_alpha4 * thrust::get<4>(t) +
+ m_alpha5 * thrust::get<5>(t);
+ }
+ };
+
+
+ template< class Fac1 = double , class Fac2 = Fac1 , class Fac3 = Fac1 ,
+ class Fac4 = Fac1 , class Fac5 = Fac1 , class Fac6 = Fac1>
+ struct scale_sum6
+ {
+ const Fac1 m_alpha1;
+ const Fac2 m_alpha2;
+ const Fac3 m_alpha3;
+ const Fac4 m_alpha4;
+ const Fac5 m_alpha5;
+ const Fac6 m_alpha6;
+
+ scale_sum6( const Fac1 alpha1 , const Fac2 alpha2 , const Fac3 alpha3 ,
+ const Fac4 alpha4 , const Fac5 alpha5 , const Fac6 alpha6 )
+ : m_alpha1( alpha1 ) , m_alpha2( alpha2 ) , m_alpha3( alpha3 ) ,
+ m_alpha4( alpha4 ) , m_alpha5( alpha5 ) , m_alpha6( alpha6 ) { }
+
+ template< class Tuple >
+ __host__ __device__
+ void operator()( Tuple t ) const
+ {
+ thrust::get<0>(t) = m_alpha1 * thrust::get<1>(t) +
+ m_alpha2 * thrust::get<2>(t) +
+ m_alpha3 * thrust::get<3>(t) +
+ m_alpha4 * thrust::get<4>(t) +
+ m_alpha5 * thrust::get<5>(t) +
+ m_alpha6 * thrust::get<6>(t);
+ }
+ };
};
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/integrate/integrate.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/integrate/integrate.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/integrate/integrate.hpp 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -21,7 +21,7 @@
#include <boost/numeric/odeint/stepper/explicit_error_rk54_ck.hpp>
#include <boost/numeric/odeint/stepper/controlled_error_stepper.hpp>
#include <boost/numeric/odeint/integrate/do_nothing_observer.hpp>
-#include <boost/numeric/odeint/integrate/integrate_const.hpp>
+#include <boost/numeric/odeint/integrate/integrate_adaptive.hpp>
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/integrate/integrate_const.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/integrate/integrate_const.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/integrate/integrate_const.hpp 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -35,6 +35,10 @@
// we want to get as fast as possible to the end
if( boost::is_same< do_nothing_observer , Observer >::value )
{
+ /**
+ * ToDo: discuss if it actually makes sense to call integrate_adaptive
+ * from an integrate_const routine! (mario)
+ */
return detail::integrate_adaptive(
stepper , system , start_state ,
start_time , end_time , dt ,
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/base/explicit_stepper_and_error_stepper_fsal_base.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/base/explicit_stepper_and_error_stepper_fsal_base.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/base/explicit_stepper_and_error_stepper_fsal_base.hpp 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -105,7 +105,7 @@
explicit_stepper_and_error_stepper_fsal_base& operator=( const explicit_stepper_and_error_stepper_fsal_base &b )
{
boost::numeric::odeint::copy( b.m_dxdt , m_dxdt );
- m_first_call( true );
+ m_first_call = true;
return *this;
}
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/implicit_euler.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/implicit_euler.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/implicit_euler.hpp 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -94,6 +94,7 @@
implicit_euler& operator=( const implicit_euler &euler )
{
copy( euler );
+ return *this;
}
template< class System >
Added: sandbox/odeint/branches/karsten/libs/numeric/odeint/examples/thrust/Makefile
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/examples/thrust/Makefile 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -0,0 +1,27 @@
+CUDA_ROOT = /usr/local/cuda
+ARCH = sm_13
+
+CC = g++
+CXX = g++
+NVCC = $(CUDA_ROOT)/bin/nvcc
+
+INCLUDES += -I$(BOOST_ROOT) -I$(THRUST_ROOT) -I$(CUDA_ROOT)/include -I../../../../..
+
+NVCCFLAGS = -O3 $(INCLUDES) -arch $(ARCH) --compiler-bindir=/usr/bin/g++
+
+LDLIBS = -lcudart
+LDFLAGS = -L$(CUDA_ROOT)/lib64
+
+%.co : %.cu
+ $(NVCC) $(NVCCFLAGS) -o $@ -c $<
+
+
+all : phase_osc_chain
+
+
+phase_osc_chain : phase_osc_chain.co
+ $(CC) -o phase_osc_chain $(LDFLAGS) $(LDLIBS) phase_osc_chain.co
+phase_osc_chain.co : phase_osc_chain.cu
+
+clean :
+ -rm *~ *.o *.co phase_osc_chain
\ No newline at end of file
Added: sandbox/odeint/branches/karsten/libs/numeric/odeint/examples/thrust/phase_osc_chain.cu
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/examples/thrust/phase_osc_chain.cu 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -0,0 +1,164 @@
+/*
+ * phase_osc_chain.cu
+ *
+ * Created on: Apr 1, 2011
+ * Author: mario
+ */
+
+/*
+ * This example shows how to use odeint on CUDA devices with thrust.
+ * Note that we require at least Version 3.2 of the nVidia CUDA SDK
+ * and the thrust library should be installed in the CUDA include
+ * folder.
+ *
+ * As example we use a chain of phase oscillators with nearest neighbour
+ * coupling, as described in:
+ *
+ * Avis H. Cohen, Philip J. Holmes and Richard H. Rand:
+ * JOURNAL OF MATHEMATICAL BIOLOGY Volume 13, Number 3, 345-369,
+ *
+ */
+
+#include <iostream>
+#include <cmath>
+#include <cstdlib>
+#include <ctime>
+
+#include <thrust/device_vector.h>
+
+#include <boost/numeric/odeint.hpp>
+#include <boost/numeric/odeint/external/thrust/thrust_algebra.hpp>
+#include <boost/numeric/odeint/external/thrust/thrust_operations.hpp>
+#include <boost/numeric/odeint/external/thrust/thrust_resize.hpp>
+
+using namespace std;
+
+using namespace boost::numeric::odeint;
+
+//change this to float if your device does not support double computation
+typedef double value_type;
+
+//change this to host_vector< ... > of you want to run on CPU
+typedef thrust::device_vector< value_type > state_type;
+typedef thrust::device_vector< size_t > index_vector_type;
+//typedef thrust::host_vector< value_type > state_type;
+//typedef thrust::host_vector< size_t > index_vector_type;
+
+
+/*
+ * This implements the rhs of the dynamical equation:
+ * \phi'_0 = \omega_0 + sin( \phi_1 - \phi_0 )
+ * \phi'_i = \omega_i + sin( \phi_i+1 - \phi_i ) + sin( \phi_i - \phi_i-1 )
+ * \phi'_N-1 = \omega_N-1 + sin( \phi_N-1 - \phi_N-2 )
+ */
+class phase_oscillators
+{
+
+public:
+
+ struct sys_functor
+ {
+ template< class Tuple >
+ __host__ __device__
+ void operator()( Tuple t )
+ {
+ const value_type phi = thrust::get<0>(t);
+ const value_type phi_left = thrust::get<1>(t);
+ const value_type phi_right = thrust::get<2>(t);
+ const value_type omega = thrust::get<3>(t);
+ // the dynamical equation
+ thrust::get<4>(t) = omega + sin( phi_right - phi ) + sin( phi - phi_left );
+ }
+ };
+
+ phase_oscillators( state_type &omega )
+ : m_omega( omega ) , m_N( omega.size() ) , m_prev( m_N ) , m_next( m_N )
+ {
+ // build indices pointing to left and right neighbours
+ thrust::counting_iterator<size_t> c( 0 );
+ thrust::copy( c , c+m_N-1 , m_prev.begin()+1 );
+ m_prev[0] = 0; // m_prev = { 0 , 0 , 1 , 2 , 3 , ... , N-1 }
+
+ thrust::copy( c+1 , c+m_N , m_next.begin() );
+ m_next[m_N-1] = m_N-1; // m_next = { 1 , 2 , 3 , ... , N-1 , N-1 }
+
+ /*thrust::copy( m_prev.begin() , m_prev.end() ,
+ std::ostream_iterator< size_t >(std::cout, " ") );
+ std::cout << std::endl;*/
+ }
+
+
+
+ void operator() ( const state_type &x , state_type &dxdt , const value_type dt )
+ {
+ thrust::for_each(
+ thrust::make_zip_iterator(
+ thrust::make_tuple(
+ x.begin() ,
+ thrust::make_permutation_iterator( x.begin() , m_prev.begin() ) ,
+ thrust::make_permutation_iterator( x.begin() , m_next.begin() ) ,
+ m_omega.begin() ,
+ dxdt.begin()
+ ) ),
+ thrust::make_zip_iterator(
+ thrust::make_tuple(
+ x.end() ,
+ thrust::make_permutation_iterator( x.begin() , m_prev.end() ) ,
+ thrust::make_permutation_iterator( x.begin() , m_next.end() ) ,
+ m_omega.end() ,
+ dxdt.end()) ) ,
+ sys_functor()
+ );
+ }
+
+private:
+ const state_type &m_omega;
+ const size_t m_N;
+ index_vector_type m_prev;
+ index_vector_type m_next;
+};
+
+
+const size_t N = 16;
+const value_type epsilon = 6.0/(N*N); // should be < 8/N^2 to see phase locking
+
+int main( int arc , char* argv[] )
+{
+ srand( time(NULL) );
+ // create initial conditions on host:
+ vector< value_type > x_host( N );
+ //create omegas on host
+ vector< value_type > omega_host( N );
+ for( size_t i=0 ; i<N ; ++i )
+ {
+ x_host[i] = 2.0*3.14159265*(double)(rand())/RAND_MAX;
+ omega_host[i] = (N-i)*epsilon; // decreasing frequencies
+ }
+
+ //copy to device
+ state_type x = x_host;
+ state_type omega = omega_host;
+
+ //create error stepper
+ explicit_rk4< state_type , value_type , state_type , value_type ,
+ thrust_algebra , thrust_operations , adjust_size_initially_tag > stepper;
+
+ phase_oscillators sys( omega );
+
+ value_type t = 0.0;
+ const value_type dt = 0.1;
+ while( t < 10.0 )
+ {
+ stepper.do_step( sys , x , t , dt );
+ t += dt;
+ }
+
+ /**ToDo: use integrate functions, maybe with algebra_dispatcher */
+
+ //perform integration using standard Runge-Kutta-Cash-Carp Stepper and error bounds ~ 1E-6
+ //integrate_const( phase_oscillators(omega) , x , 0.0 , 100.0 , 0.1 );
+
+ thrust::copy( x.begin() , x.end() ,
+ std::ostream_iterator< value_type >(std::cout, " ") );
+ std::cout << std::endl;
+}
Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/odeint_ref_problem.cpp
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/odeint_ref_problem.cpp (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/odeint_ref_problem.cpp 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -19,8 +19,8 @@
#include <boost/timer.hpp>
#include <boost/numeric/odeint.hpp>
-#include <boost/numeric/odeint/detail/iterator_algebra.hpp>
-#include <boost/numeric/odeint/container_traits.hpp>
+//#include <boost/numeric/odeint/algebra/iterator_algebra.hpp>
+//#include <boost/numeric/odeint/container_traits.hpp>
#define tab "\t"
Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/rosenbrock4/Jamfile
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/rosenbrock4/Jamfile (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/rosenbrock4/Jamfile 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -7,7 +7,7 @@
import path ;
path-constant HOME : [ os.environ HOME ] ;
-path-constant CHRONO_ROOT : [ os.environ CHRONO_ROOT ] ;
+#path-constant CHRONO_ROOT : [ os.environ CHRONO_ROOT ] ;
project
: requirements
Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/units/Jamfile
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/units/Jamfile (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/ideas/units/Jamfile 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -7,7 +7,7 @@
import path ;
path-constant HOME : [ os.environ HOME ] ;
-path-constant CHRONO_ROOT : [ os.environ CHRONO_ROOT ] ;
+#path-constant CHRONO_ROOT : [ os.environ CHRONO_ROOT ] ;
project
: requirements
Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/test_external/thrust/Makefile
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/test_external/thrust/Makefile (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/test_external/thrust/Makefile 2011-04-01 10:33:30 EDT (Fri, 01 Apr 2011)
@@ -4,7 +4,7 @@
CXX = g++
NVCC = $(CUDA_ROOT)/bin/nvcc
-INCLUDES += -I$(BOOST_ROOT) -I$(THRUST_ROOT) -I$(CUDA_ROOT)/include -I../../../..
+INCLUDES += -I$(BOOST_ROOT) -I$(THRUST_ROOT) -I$(CUDA_ROOT)/include -I../../../../..
NVCCFLAGS = -O3 $(INCLUDES) --compiler-bindir=/usr/bin/g++
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk