Commit 09d14d30 authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

Fixed tutorials to work with new implementation of reduction and replaced...

Fixed tutorials to work with new implementation of reduction and replaced getView with getConstView in tutorials.
parent 19569d8e
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -10,8 +10,8 @@ using namespace TNL::Containers::Algorithms;
template< typename Device >
bool comparison( const Vector< double, Device >& u, const Vector< double, Device >& v )
{
   auto u_view = u.getView();
   auto v_view = v.getView();
   auto u_view = u.getConstView();
   auto v_view = v.getConstView();

   /***
    * Fetch compares corresponding elements of both vectors
@@ -21,9 +21,8 @@ bool comparison( const Vector< double, Device >& u, const Vector< double, Device
   /***
    * Reduce performs logical AND on intermediate results obtained by fetch.
    */
   auto reduce = [] __cuda_callable__ ( bool& a, const bool& b ) { a = ( a && b ); };
   auto volatileReduce = [=] __cuda_callable__ ( volatile bool& a, const volatile bool& b ) { a = ( a && b ); };
   return Reduction< Device >::reduce( v_view.getSize(), reduce, volatileReduce, fetch, true );
   auto reduce = [] __cuda_callable__ ( const bool& a, const bool& b ) { return a && b; };
   return Reduction< Device >::reduce( v_view.getSize(), reduce, fetch, true );
}

int main( int argc, char* argv[] )
+2 −3
Original line number Diff line number Diff line
@@ -14,9 +14,8 @@ double maskAndReduce( Vector< double, Device >& u )
   auto u_view = u.getView();
   auto fetch = [=] __cuda_callable__ ( int i )->double {
      return u_view[ i ] > 0 ? u_view[ i ] : 0.0; };
   auto reduce = [] __cuda_callable__ ( double& a, const double& b ) { a += b; };
   auto volatileReduce = [=] __cuda_callable__ ( volatile double& a, const volatile double& b ) { a += b; };
   return Reduction< Device >::reduce( u_view.getSize(), reduce, volatileReduce, fetch, 0.0 );
   auto reduce = [] __cuda_callable__ ( const double& a, const double& b ) { return a + b; };
   return Reduction< Device >::reduce( u_view.getSize(), reduce, fetch, 0.0 );
}

int main( int argc, char* argv[] )
+2 −3
Original line number Diff line number Diff line
@@ -15,9 +15,8 @@ double maskAndReduce( Vector< double, Device >& u )
   auto fetch = [=] __cuda_callable__ ( int i )->double {
      if( i % 2 == 0 ) return u_view[ i ];
      return 0.0; };
   auto reduce = [] __cuda_callable__ ( double& a, const double& b ) { a += b; };
   auto volatileReduce = [=] __cuda_callable__ ( volatile double& a, const volatile double& b ) { a += b; };
   return Reduction< Device >::reduce( u_view.getSize(), reduce, volatileReduce, fetch, 0.0 );
   auto reduce = [] __cuda_callable__ ( const double& a, const double& b ) { return a + b; };
   return Reduction< Device >::reduce( u_view.getSize(), reduce, fetch, 0.0 );
}

int main( int argc, char* argv[] )
+2 −3
Original line number Diff line number Diff line
@@ -14,9 +14,8 @@ double maskAndReduce( Vector< double, Device >& u )
   auto u_view = u.getView();
   auto fetch = [=] __cuda_callable__ ( int i )->double {
      return u_view[ 2 * i ]; };
   auto reduce = [] __cuda_callable__ ( double& a, const double& b ) { a += b; };
   auto volatileReduce = [=] __cuda_callable__ ( volatile double& a, const volatile double& b ) { a += b; };
   return Reduction< Device >::reduce( u_view.getSize() / 2, reduce, volatileReduce, fetch, 0.0 );
   auto reduce = [] __cuda_callable__ ( const double& a, const double& b ) { return a + b; };
   return Reduction< Device >::reduce( u_view.getSize() / 2, reduce, fetch, 0.0 );
}

int main( int argc, char* argv[] )
+3 −4
Original line number Diff line number Diff line
@@ -10,11 +10,10 @@ using namespace TNL::Containers::Algorithms;
template< typename Device >
double maximumNorm( const Vector< double, Device >& v )
{
   auto view = v.getView();
   auto view = v.getConstView();
   auto fetch = [=] __cuda_callable__ ( int i ) { return abs( view[ i ] ); };
   auto reduce = [] __cuda_callable__ ( double& a, const double& b ) { a = max( a, b ); };
   auto volatileReduce = [=] __cuda_callable__ ( volatile double& a, const volatile double& b ) { a = max( a ,b ); };
   return Reduction< Device >::reduce( view.getSize(), reduce, volatileReduce, fetch, 0.0 );
   auto reduce = [] __cuda_callable__ ( const double& a, const double& b ) { return max( a, b ); };
   return Reduction< Device >::reduce( view.getSize(), reduce, fetch, 0.0 );
}

int main( int argc, char* argv[] )
Loading