Commit 330361cc authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

Finished MapReduce example and added ReductionWithArgument example to the tutorials.

parent 09d14d30
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -11,14 +11,14 @@ IF( BUILD_CUDA )
   ADD_CUSTOM_COMMAND( COMMAND ComparisonExample > ComparisonExample.out OUTPUT ComparisonExample.out )
   CUDA_ADD_EXECUTABLE( UpdateAndResidueExample UpdateAndResidueExample.cu )
   ADD_CUSTOM_COMMAND( COMMAND UpdateAndResidueExample > UpdateAndResidueExample.out OUTPUT UpdateAndResidueExample.out )
   CUDA_ADD_EXECUTABLE( MaskAndReduceExample-1 MaskAndReduceExample-1.cu )
   ADD_CUSTOM_COMMAND( COMMAND MaskAndReduceExample-1 > MaskAndReduceExample-1.out OUTPUT MaskAndReduceExample-1.out )
   CUDA_ADD_EXECUTABLE( MaskAndReduceExample-2 MaskAndReduceExample-2.cu )
   ADD_CUSTOM_COMMAND( COMMAND MaskAndReduceExample-2 > MaskAndReduceExample-2.out OUTPUT MaskAndReduceExample-2.out )
   CUDA_ADD_EXECUTABLE( MaskAndReduceExample-3 MaskAndReduceExample-3.cu )
   ADD_CUSTOM_COMMAND( COMMAND MaskAndReduceExample-3 > MaskAndReduceExample-3.out OUTPUT MaskAndReduceExample-3.out )
   ADD_EXECUTABLE( ReductionInMethodsExample ReductionInMethodsExample.cpp )
   ADD_CUSTOM_COMMAND( COMMAND ReductionInMethodsExample > ReductionInMethodsExample.out OUTPUT ReductionInMethodsExample.out )
   CUDA_ADD_EXECUTABLE( MapReduceExample-1 MapReduceExample-1.cu )
   ADD_CUSTOM_COMMAND( COMMAND MapReduceExample-1 > MapReduceExample-1.out OUTPUT MapReduceExample-1.out )
   CUDA_ADD_EXECUTABLE( MapReduceExample-2 MapReduceExample-2.cu )
   ADD_CUSTOM_COMMAND( COMMAND MapReduceExample-2 > MapReduceExample-2.out OUTPUT MapReduceExample-2.out )
   CUDA_ADD_EXECUTABLE( MapReduceExample-3 MapReduceExample-3.cu )
   ADD_CUSTOM_COMMAND( COMMAND MapReduceExample-3 > MapReduceExample-3.out OUTPUT MapReduceExample-3.out )
   CUDA_ADD_EXECUTABLE( ReductionWithArgument ReductionWithArgument.cu )
   ADD_CUSTOM_COMMAND( COMMAND ReductionWithArgument > ReductionWithArgument.out OUTPUT ReductionWithArgument.out )
ENDIF()

IF( BUILD_CUDA )
@@ -29,8 +29,8 @@ ADD_CUSTOM_TARGET( TutorialsReduction-cuda ALL DEPENDS
   MaximumNormExample.out 
   ComparisonExample.out
   UpdateAndResidueExample.out
   MaskAndReduceExample-1.out
   MaskAndReduceExample-2.out
   MaskAndReduceExample-3.out
   ReductionInMethodsExample.out )
   MapReduceExample-1.out
   MapReduceExample-2.out
   MapReduceExample-3.out
   ReductionWithArgument.out )
ENDIF()
+3 −3
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ using namespace TNL::Containers;
using namespace TNL::Containers::Algorithms;

template< typename Device >
double maskAndReduce( Vector< double, Device >& u )
double mapReduce( Vector< double, Device >& u )
{
   auto u_view = u.getView();
   auto fetch = [=] __cuda_callable__ ( int i )->double {
@@ -23,13 +23,13 @@ int main( int argc, char* argv[] )
   Timer timer;
   Vector< double, Devices::Host > host_u( 10 );
   host_u.evaluate( [] __cuda_callable__ ( int i ) { return sin( ( double ) i ); } );
   double result = maskAndReduce( host_u );
   double result = mapReduce( host_u );
   std::cout << "host_u = " << host_u << std::endl;
   std::cout << "Sum of the positive numbers is:" << result << std::endl;
#ifdef HAVE_CUDA
   Vector< double, Devices::Cuda > cuda_u( 10 );
   cuda_u = host_u;
   result = maskAndReduce( cuda_u );
   result = mapReduce( cuda_u );
   std::cout << "cuda_u = " << cuda_u << std::endl;
   std::cout << "Sum of the positive numbers is:" << result << std::endl;
#endif
+3 −3
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ using namespace TNL::Containers;
using namespace TNL::Containers::Algorithms;

template< typename Device >
double maskAndReduce( Vector< double, Device >& u )
double mapReduce( Vector< double, Device >& u )
{
   auto u_view = u.getView();
   auto fetch = [=] __cuda_callable__ ( int i )->double {
@@ -25,7 +25,7 @@ int main( int argc, char* argv[] )
   Vector< double, Devices::Host > host_u( 100000 );
   host_u = 1.0;
   timer.start();
   double result = maskAndReduce( host_u );
   double result = mapReduce( host_u );
   timer.stop();
   std::cout << "Host tesult is:" << result << ". It took " << timer.getRealTime() << "seconds." << std::endl;
#ifdef HAVE_CUDA
@@ -33,7 +33,7 @@ int main( int argc, char* argv[] )
   cuda_u = 1.0;
   timer.reset();
   timer.start();
   result = maskAndReduce( cuda_u );
   result = mapReduce( cuda_u );
   timer.stop();
   std::cout << "CUDA result is:" << result << ". It took " << timer.getRealTime() << "seconds." << std::endl;
#endif
+4 −4
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ using namespace TNL::Containers;
using namespace TNL::Containers::Algorithms;

template< typename Device >
double maskAndReduce( Vector< double, Device >& u )
double mapReduce( Vector< double, Device >& u )
{
   auto u_view = u.getView();
   auto fetch = [=] __cuda_callable__ ( int i )->double {
@@ -24,15 +24,15 @@ int main( int argc, char* argv[] )
   Vector< double, Devices::Host > host_u( 100000 );
   host_u = 1.0;
   timer.start();
   double result = maskAndReduce( host_u );
   double result = mapReduce( host_u );
   timer.stop();
   std::cout << "Host tesult is:" << result << ". It took " << timer.getRealTime() << "seconds." << std::endl;
   std::cout << "Host result is:" << result << ". It took " << timer.getRealTime() << "seconds." << std::endl;
#ifdef HAVE_CUDA
   Vector< double, Devices::Cuda > cuda_u( 100000 );
   cuda_u = 1.0;
   timer.reset();
   timer.start();
   result = maskAndReduce( cuda_u );
   result = mapReduce( cuda_u );
   timer.stop();
   std::cout << "CUDA result is:" << result << ". It took " << timer.getRealTime() << "seconds." << std::endl;
#endif
+0 −1
Original line number Diff line number Diff line
MaskAndReduceExample-1.cpp
 No newline at end of file
Loading