Skip to content

BLAS 1::nrm1

Christian Trott edited this page Jan 22, 2018 · 1 revision

KokkosBlas::nrm1()

Header File: KokkosBlas1_nrm1.hpp

Usage: nrm = KokkosBlas::nrm1(x); KokkosBlas::nrm1(r,x);

Computes the sum of all absolute values of x.

Interface Single Vector Only

template<class VectorX, class VectorY>
InnerProductSpaceTraits<VectorX::non_const_value_type>::mag_type
nrm1 (const VectorX& X);

Parameters:

  • VectorX: A rank-1 Kokkos::View

Requirements:

  • X.rank == 1

Interface Single and MultiVector

template<class ReturnVector, class VectorX>
void nrm1 (const ReturnVector& R, const VectorX& X);

Parameters:

  • ReturnVector: A rank-0 or rank-1 Kokkos::View
  • VectorX: A rank-1 or rank-2 Kokkos::View

Requirements:

  • X.rank == R.rank + 1
  • R.extent(0) == X.extent(1)
  • ReturnVector::non_const_value_type == ReturnVector::value_type

Example

#include<Kokkos_Core.hpp>
#include<KokkosBlas1_nrm1.hpp>

int main(int argc, char* argv[]) {
   Kokkos::initialize();

   int N = atoi(argv[1]);

   Kokkos::View<double*> x("X",N);
   Kokkos::deep_copy(x,3.0);

   double x_nrm = KokkosBlas::nrm1(x);

   printf("X_nrm: %lf Expected: %lf Diff: %e\n",x_nrm,1.0*N*3.0,x_nrm-1.0*N*3.0);

   Kokkos::finalize();
}
Clone this wiki locally