diff --git a/KokkosStream.cpp b/KokkosStream.cpp index 09c1eaf..00efe92 100644 --- a/KokkosStream.cpp +++ b/KokkosStream.cpp @@ -119,6 +119,21 @@ void KokkosStream::triad() Kokkos::fence(); } +template +void KokkosStream::nstream() +{ + Kokkos::View a(*d_a); + Kokkos::View b(*d_b); + Kokkos::View c(*d_c); + + const T scalar = startScalar; + Kokkos::parallel_for(array_size, KOKKOS_LAMBDA (const long index) + { + a[index] += b[index] + scalar*c[index]; + }); + Kokkos::fence(); +} + template T KokkosStream::dot() { diff --git a/KokkosStream.hpp b/KokkosStream.hpp index e88622c..3aa7cf5 100644 --- a/KokkosStream.hpp +++ b/KokkosStream.hpp @@ -41,6 +41,7 @@ class KokkosStream : public Stream virtual void add() override; virtual void mul() override; virtual void triad() override; + virtual void nstream() override; virtual T dot() override; virtual void init_arrays(T initA, T initB, T initC) override;