From e347d2ff6c7a6af3b20a76df969130685c6ad40a Mon Sep 17 00:00:00 2001 From: Tom Lin Date: Sat, 7 Oct 2023 09:41:18 +0100 Subject: [PATCH] Aggregate initialise numeric types, resolves #134 --- src/acc/ACCStream.cpp | 2 +- src/hip/HIPStream.cpp | 4 ++-- src/kokkos/KokkosStream.cpp | 2 +- src/main.cpp | 10 +++++----- src/ocl/OCLStream.cpp | 2 +- src/omp/OMPStream.cpp | 2 +- src/raja/RAJAStream.cpp | 2 +- src/std-data/STDDataStream.cpp | 2 +- src/std-indices/STDIndicesStream.cpp | 2 +- src/std-ranges/STDRangesStream.cpp | 2 +- src/sycl/SYCLStream.cpp | 4 ++-- 11 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/acc/ACCStream.cpp b/src/acc/ACCStream.cpp index 1e38c8b3..48b9f2de 100644 --- a/src/acc/ACCStream.cpp +++ b/src/acc/ACCStream.cpp @@ -149,7 +149,7 @@ void ACCStream::nstream() template T ACCStream::dot() { - T sum = 0.0; + T sum{}; int array_size = this->array_size; T * restrict a = this->a; diff --git a/src/hip/HIPStream.cpp b/src/hip/HIPStream.cpp index 56c46ed3..aa64dbd3 100644 --- a/src/hip/HIPStream.cpp +++ b/src/hip/HIPStream.cpp @@ -244,7 +244,7 @@ __global__ void dot_kernel(const T * a, const T * b, T * sum, int array_size) const size_t local_i = threadIdx.x; size_t i = blockDim.x * blockIdx.x + local_i; - tb_sum[local_i] = 0.0; + tb_sum[local_i]{}; for (; i < array_size; i += blockDim.x*gridDim.x) tb_sum[local_i] += a[i] * b[i]; @@ -269,7 +269,7 @@ T HIPStream::dot() hipDeviceSynchronize(); check_error(); - T sum = 0.0; + T sum{}; for (int i = 0; i < dot_num_blocks; i++) sum += sums[i]; diff --git a/src/kokkos/KokkosStream.cpp b/src/kokkos/KokkosStream.cpp index 158e109d..66b96622 100644 --- a/src/kokkos/KokkosStream.cpp +++ b/src/kokkos/KokkosStream.cpp @@ -140,7 +140,7 @@ T KokkosStream::dot() Kokkos::View a(*d_a); Kokkos::View b(*d_b); - T sum = 0.0; + T sum{}; Kokkos::parallel_reduce(array_size, KOKKOS_LAMBDA (const long index, T &tmp) { diff --git a/src/main.cpp b/src/main.cpp index d946d775..54a3ed97 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -309,7 +309,7 @@ void run() stream->init_arrays(startA, startB, startC); // Result of the Dot kernel, if used. - T sum = 0.0; + T sum{}; std::vector> timings; @@ -467,7 +467,7 @@ void check_solution(const unsigned int ntimes, std::vector& a, std::vector T goldA = startA; T goldB = startB; T goldC = startC; - T goldSum = 0.0; + T goldSum{}; const T scalar = startScalar; @@ -493,11 +493,11 @@ void check_solution(const unsigned int ntimes, std::vector& a, std::vector goldSum = goldA * goldB * ARRAY_SIZE; // Calculate the average error - long double errA = std::accumulate(a.begin(), a.end(), 0.0, [&](double sum, const T val){ return sum + std::fabs(val - goldA); }); + long double errA = std::accumulate(a.begin(), a.end(), T{}, [&](double sum, const T val){ return sum + std::fabs(val - goldA); }); errA /= a.size(); - long double errB = std::accumulate(b.begin(), b.end(), 0.0, [&](double sum, const T val){ return sum + std::fabs(val - goldB); }); + long double errB = std::accumulate(b.begin(), b.end(), T{}, [&](double sum, const T val){ return sum + std::fabs(val - goldB); }); errB /= b.size(); - long double errC = std::accumulate(c.begin(), c.end(), 0.0, [&](double sum, const T val){ return sum + std::fabs(val - goldC); }); + long double errC = std::accumulate(c.begin(), c.end(), T{}, [&](double sum, const T val){ return sum + std::fabs(val - goldC); }); errC /= c.size(); long double errSum = std::fabs((sum - goldSum)/goldSum); diff --git a/src/ocl/OCLStream.cpp b/src/ocl/OCLStream.cpp index be88ba9b..26b525a8 100644 --- a/src/ocl/OCLStream.cpp +++ b/src/ocl/OCLStream.cpp @@ -260,7 +260,7 @@ T OCLStream::dot() ); cl::copy(queue, d_sum, sums.begin(), sums.end()); - T sum = 0.0; + T sum{}; for (T val : sums) sum += val; diff --git a/src/omp/OMPStream.cpp b/src/omp/OMPStream.cpp index 0cd80358..774f61bf 100644 --- a/src/omp/OMPStream.cpp +++ b/src/omp/OMPStream.cpp @@ -220,7 +220,7 @@ void OMPStream::nstream() template T OMPStream::dot() { - T sum = 0.0; + T sum{}; #ifdef OMP_TARGET_GPU int array_size = this->array_size; diff --git a/src/raja/RAJAStream.cpp b/src/raja/RAJAStream.cpp index d271ea4f..6a99999d 100644 --- a/src/raja/RAJAStream.cpp +++ b/src/raja/RAJAStream.cpp @@ -131,7 +131,7 @@ T RAJAStream::dot() T* RAJA_RESTRICT a = d_a; T* RAJA_RESTRICT b = d_b; - RAJA::ReduceSum sum(0.0); + RAJA::ReduceSum sum(T{}); forall(range, [=] RAJA_DEVICE (RAJA::Index_type index) { diff --git a/src/std-data/STDDataStream.cpp b/src/std-data/STDDataStream.cpp index e426835d..a234d617 100644 --- a/src/std-data/STDDataStream.cpp +++ b/src/std-data/STDDataStream.cpp @@ -94,7 +94,7 @@ template T STDDataStream::dot() { // sum = 0; sum += a[i]*b[i]; return sum; - return std::transform_reduce(exe_policy, a, a + array_size, b, 0.0); + return std::transform_reduce(exe_policy, a, a + array_size, b, T{}); } void listDevices(void) diff --git a/src/std-indices/STDIndicesStream.cpp b/src/std-indices/STDIndicesStream.cpp index 1cf1cccb..fc9f3806 100644 --- a/src/std-indices/STDIndicesStream.cpp +++ b/src/std-indices/STDIndicesStream.cpp @@ -105,7 +105,7 @@ template T STDIndicesStream::dot() { // sum = 0; sum += a[i]*b[i]; return sum; - return std::transform_reduce(exe_policy, a, a + array_size, b, 0.0); + return std::transform_reduce(exe_policy, a, a + array_size, b, T{}); } void listDevices(void) diff --git a/src/std-ranges/STDRangesStream.cpp b/src/std-ranges/STDRangesStream.cpp index d4976918..b29d0c42 100644 --- a/src/std-ranges/STDRangesStream.cpp +++ b/src/std-ranges/STDRangesStream.cpp @@ -135,7 +135,7 @@ T STDRangesStream::dot() return std::transform_reduce( exe_policy, - a, a + array_size, b, 0.0); + a, a + array_size, b, T{}); } void listDevices(void) diff --git a/src/sycl/SYCLStream.cpp b/src/sycl/SYCLStream.cpp index 00c043f9..512517b6 100644 --- a/src/sycl/SYCLStream.cpp +++ b/src/sycl/SYCLStream.cpp @@ -191,7 +191,7 @@ T SYCLStream::dot() size_t li = item.get_local_id(0); size_t global_size = item.get_global_range()[0]; - wg_sum[li] = 0.0; + wg_sum[li] = {}; for (; i < N; i += global_size) wg_sum[li] += ka[i] * kb[i]; @@ -208,7 +208,7 @@ T SYCLStream::dot() }); }); - T sum = 0.0; + T sum{}; auto h_sum = d_sum->template get_access(); for (int i = 0; i < dot_num_groups; i++) {