Kokkos Node API and Local Linear Algebra Kernels Version of the Day
Kokkos_SerialNode.hpp
00001 #ifndef KOKKOS_SERIALNODE_HPP_
00002 #define KOKKOS_SERIALNODE_HPP_
00003 
00004 #include <Teuchos_ParameterList.hpp>
00005 #include <Kokkos_StandardNodeMemoryModel.hpp>
00006 #include "Kokkos_NodeHelpers.hpp"
00007 
00008 namespace Kokkos {
00009 
00013   class SerialNode : public StandardNodeMemoryModel {
00014     public:
00016       SerialNode(Teuchos::ParameterList &pl) {}
00017 
00019       template <class WDP>
00020       static void parallel_for(int beg, int end, WDP wd) {
00021         for (int i=beg; i != end; ++i) {
00022           wd.execute(i);
00023         }
00024       }
00025 
00027       template <class WDP>
00028       static typename WDP::ReductionType
00029       parallel_reduce(int begin, int end, WDP wd) {
00030         typename WDP::ReductionType result = wd.identity();
00031         for (int i=begin; i != end; ++i) {
00032           result = wd.reduce( result, wd.generate(i) );
00033         }
00034         return result;
00035       }
00036 
00038       inline void sync() const {};
00039 
00040   };
00041 
00042   template <> class ArrayOfViewsHelper<SerialNode> : public ArrayOfViewsHelperTrivialImpl<SerialNode> {};
00043 
00044 } // end of Kokkos namespace
00045 
00046 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends