From a14f41b4ab7f94f04bfb8cbba9062515c24f7235 Mon Sep 17 00:00:00 2001
From: Alessandro Vinciguerra <alessandro.vinciguerra@psi.ch>
Date: Wed, 15 Sep 2021 16:34:10 +0200
Subject: [PATCH 1/2] Fix Cuda host/device function warnings

Don't access particle attributes directly in kernels
---
 src/Particle/ParticleSpatialLayout.hpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/Particle/ParticleSpatialLayout.hpp b/src/Particle/ParticleSpatialLayout.hpp
index 4480d033..d25510ff 100644
--- a/src/Particle/ParticleSpatialLayout.hpp
+++ b/src/Particle/ParticleSpatialLayout.hpp
@@ -158,12 +158,13 @@ namespace ippl {
         IpplTimings::startTimer(destroyTimer);
 
         size_type invalidCount = 0;
+        auto pIDs = pdata.ID.getView();
         Kokkos::parallel_reduce(
             "set/count invalid",
             localnum,
             KOKKOS_LAMBDA(const size_t i, size_type& nInvalid) {
                 if (invalid(i)) {
-                    pdata.ID(i) = -1;
+                    pIDs(i) = -1;
                     nInvalid += 1;
                 }
             }, invalidCount);
-- 
GitLab


From e0e412f05b3794ed249b9ee70abfe96c13a1ceb6 Mon Sep 17 00:00:00 2001
From: Alessandro Vinciguerra <alessandro.vinciguerra@psi.ch>
Date: Wed, 15 Sep 2021 17:05:44 +0200
Subject: [PATCH 2/2] Remove class access in particle creation

---
 src/Particle/ParticleBase.hpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/Particle/ParticleBase.hpp b/src/Particle/ParticleBase.hpp
index 0bb11a7a..c73c97a0 100644
--- a/src/Particle/ParticleBase.hpp
+++ b/src/Particle/ParticleBase.hpp
@@ -112,10 +112,13 @@ namespace ippl {
         }
 
         // set the unique ID value for these new particles
+        auto pIDs = ID.getView();
+        auto nextID = this->nextID_m;
+        auto numNodes = this->numNodes_m;
         Kokkos::parallel_for("ParticleBase<PLayout, Properties...>::create(size_t)",
                              Kokkos::RangePolicy(localNum_m, nLocal),
-                             KOKKOS_CLASS_LAMBDA(const std::int64_t i) {
-                                 ID(i) = this->nextID_m + this->numNodes_m * i;
+                             KOKKOS_LAMBDA(const std::int64_t i) {
+                                 pIDs(i) = nextID + numNodes * i;
                              });
         nextID_m += numNodes_m * (nLocal - localNum_m);
 
-- 
GitLab