diff --git a/alpine/BumponTailInstability.cpp b/alpine/BumponTailInstability.cpp index c8f1e3d1cf1ec12d983b0e5953db374e80ef05ed..4e98bebd2508b1dee7ce4f7e8a65962b44110ea3 100644 --- a/alpine/BumponTailInstability.cpp +++ b/alpine/BumponTailInstability.cpp @@ -183,6 +183,7 @@ int main(int argc, char *argv[]){ static IpplTimings::TimerRef PTimer = IpplTimings::getTimer("kick"); static IpplTimings::TimerRef RTimer = IpplTimings::getTimer("drift"); static IpplTimings::TimerRef updateTimer = IpplTimings::getTimer("update"); + static IpplTimings::TimerRef DummySolveTimer = IpplTimings::getTimer("solveWarmup"); static IpplTimings::TimerRef SolveTimer = IpplTimings::getTimer("solve"); static IpplTimings::TimerRef domainDecomposition = IpplTimings::getTimer("domainDecomp"); @@ -366,6 +367,12 @@ int main(int argc, char *argv[]){ //The update after the particle creation is not needed as the //particles are generated locally + IpplTimings::startTimer(DummySolveTimer); + P->rho_m = 0.0; + P->solver_mp->solve(); + IpplTimings::stopTimer(DummySolveTimer); + + P->scatterCIC(totalP, 0, hr); IpplTimings::startTimer(SolveTimer); diff --git a/alpine/LandauDamping.cpp b/alpine/LandauDamping.cpp index 98b7eb15a3ac7d1d95997a4cec8459918e112b5f..4febc3bd33422d56012c1f82c687fd1c0989e8b7 100644 --- a/alpine/LandauDamping.cpp +++ b/alpine/LandauDamping.cpp @@ -168,6 +168,7 @@ int main(int argc, char *argv[]){ static IpplTimings::TimerRef PTimer = IpplTimings::getTimer("kick"); static IpplTimings::TimerRef RTimer = IpplTimings::getTimer("drift"); static IpplTimings::TimerRef updateTimer = IpplTimings::getTimer("update"); + static IpplTimings::TimerRef DummySolveTimer = IpplTimings::getTimer("solveWarmup"); static IpplTimings::TimerRef SolveTimer = IpplTimings::getTimer("solve"); static IpplTimings::TimerRef domainDecomposition = IpplTimings::getTimer("domainDecomp"); @@ -315,6 +316,11 @@ int main(int argc, char *argv[]){ //The update after the particle creation is not needed as the //particles are generated locally + IpplTimings::startTimer(DummySolveTimer); + P->rho_m = 0.0; + P->solver_mp->solve(); + IpplTimings::stopTimer(DummySolveTimer); + P->scatterCIC(totalP, 0, hr); IpplTimings::startTimer(SolveTimer); diff --git a/alpine/PenningTrap.cpp b/alpine/PenningTrap.cpp index 35437b01ba334f7669f89d36c0dea176b042a89c..fbbdfd3d9837dfc11dd3148d2b09d4c389828aaf 100644 --- a/alpine/PenningTrap.cpp +++ b/alpine/PenningTrap.cpp @@ -168,7 +168,18 @@ int main(int argc, char *argv[]){ }; static IpplTimings::TimerRef mainTimer = IpplTimings::getTimer("mainTimer"); + static IpplTimings::TimerRef particleCreation = IpplTimings::getTimer("particlesCreation"); + static IpplTimings::TimerRef dumpDataTimer = IpplTimings::getTimer("dumpData"); + static IpplTimings::TimerRef PTimer = IpplTimings::getTimer("kick"); + static IpplTimings::TimerRef RTimer = IpplTimings::getTimer("drift"); + static IpplTimings::TimerRef updateTimer = IpplTimings::getTimer("update"); + static IpplTimings::TimerRef DummySolveTimer = IpplTimings::getTimer("solveWarmup"); + static IpplTimings::TimerRef SolveTimer = IpplTimings::getTimer("Solve"); + static IpplTimings::TimerRef domainDecomposition = IpplTimings::getTimer("domainDecomp"); + + IpplTimings::startTimer(mainTimer); + size_type totalP = std::atol(argv[4]); const unsigned int nt = std::atoi(argv[5]); @@ -217,13 +228,6 @@ int main(int argc, char *argv[]){ P->nr_m = nr; - static IpplTimings::TimerRef particleCreation = IpplTimings::getTimer("particlesCreation"); - static IpplTimings::TimerRef updateTimer = IpplTimings::getTimer("update"); - static IpplTimings::TimerRef domainDecomposition = IpplTimings::getTimer("domainDecomp"); - static IpplTimings::TimerRef SolveTimer = IpplTimings::getTimer("Solve"); - static IpplTimings::TimerRef dumpDataTimer = IpplTimings::getTimer("dumpData"); - static IpplTimings::TimerRef PTimer = IpplTimings::getTimer("velocityPush"); - static IpplTimings::TimerRef RTimer = IpplTimings::getTimer("positionPush"); Vector_t length = rmax - rmin; @@ -333,6 +337,11 @@ int main(int argc, char *argv[]){ //The update after the particle creation is not needed as the //particles are generated locally + IpplTimings::startTimer(DummySolveTimer); + P->rho_m = 0.0; + P->solver_mp->solve(); + IpplTimings::stopTimer(DummySolveTimer); + P->scatterCIC(totalP, 0, hr); IpplTimings::startTimer(SolveTimer); diff --git a/alpine/UniformPlasmaTest.cpp b/alpine/UniformPlasmaTest.cpp index d740a70577d8a42f9c646585a5d59724b3ca6ed9..6a662d6d1078b7f145b82f9955ec4c5a817825b1 100644 --- a/alpine/UniformPlasmaTest.cpp +++ b/alpine/UniformPlasmaTest.cpp @@ -92,12 +92,12 @@ int main(int argc, char *argv[]){ static IpplTimings::TimerRef mainTimer = IpplTimings::getTimer("mainTimer"); static IpplTimings::TimerRef particleCreation = IpplTimings::getTimer("particlesCreation"); - static IpplTimings::TimerRef FirstUpdateTimer = IpplTimings::getTimer("initialisation"); static IpplTimings::TimerRef dumpDataTimer = IpplTimings::getTimer("dumpData"); static IpplTimings::TimerRef PTimer = IpplTimings::getTimer("kick"); static IpplTimings::TimerRef temp = IpplTimings::getTimer("randomMove"); static IpplTimings::TimerRef RTimer = IpplTimings::getTimer("drift"); static IpplTimings::TimerRef updateTimer = IpplTimings::getTimer("update"); + static IpplTimings::TimerRef DummySolveTimer = IpplTimings::getTimer("solveWarmup"); static IpplTimings::TimerRef SolveTimer = IpplTimings::getTimer("solve"); static IpplTimings::TimerRef domainDecomposition = IpplTimings::getTimer("domainDecomp"); @@ -172,7 +172,6 @@ int main(int argc, char *argv[]){ P->P = 0.0; IpplTimings::stopTimer(particleCreation); - IpplTimings::startTimer(FirstUpdateTimer); P->E_m.initialize(mesh, FL); P->rho_m.initialize(mesh, FL); @@ -188,7 +187,12 @@ int main(int argc, char *argv[]){ P->initSolver(); P->time_m = 0.0; P->loadbalancefreq_m = std::atoi(argv[7]); - + + IpplTimings::startTimer(DummySolveTimer); + P->rho_m = 0.0; + P->solver_mp->solve(); + IpplTimings::stopTimer(DummySolveTimer); + P->scatterCIC(totalP, 0, hr); P->initializeORB(FL, mesh); @@ -205,7 +209,6 @@ int main(int argc, char *argv[]){ P->gatherStatistics(totalP); IpplTimings::stopTimer(dumpDataTimer); - IpplTimings::stopTimer(FirstUpdateTimer); // begin main timestep loop msg << "Starting iterations ..." << endl; diff --git a/src/Particle/ParticleAttrib.h b/src/Particle/ParticleAttrib.h index 16a05513f67e9db59feaa3d5fec9eaec5b55a433..99276a82c178dc8605d1b5e9acbf2ce29ae2c636 100644 --- a/src/Particle/ParticleAttrib.h +++ b/src/Particle/ParticleAttrib.h @@ -79,11 +79,11 @@ namespace ippl { virtual ~ParticleAttrib() = default; - size_type size() const { + size_type size() const override { return dview_m.extent(0); } - size_type packedSize(const size_type count) const { + size_type packedSize(const size_type count) const override { return count * sizeof(value_type); } diff --git a/src/Particle/ParticleBase.hpp b/src/Particle/ParticleBase.hpp index c7ffc972d9ca0da6eda00b6dba81076064cf3ff4..71e9d03316c442d0b0a19e2f400269fe24639536 100644 --- a/src/Particle/ParticleBase.hpp +++ b/src/Particle/ParticleBase.hpp @@ -116,7 +116,7 @@ namespace ippl { 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::RangePolicy<size_type>(localNum_m, nLocal), KOKKOS_LAMBDA(const std::int64_t i) { pIDs(i) = nextID + numNodes * i; }); @@ -208,7 +208,7 @@ namespace ippl { // Find the indices of the valid particles in the invalid region Kokkos::parallel_scan("Second scan in ParticleBase::destroy()", - Kokkos::RangePolicy(localNum_m - destroyNum, localNum_m), + Kokkos::RangePolicy<size_type>(localNum_m - destroyNum, localNum_m), KOKKOS_LAMBDA(const size_t i, int& idx, const bool final) { if (final && !invalid(i)) locKeepIndex(idx) = i; diff --git a/src/Solver/FFTPeriodicPoissonSolver.h b/src/Solver/FFTPeriodicPoissonSolver.h index 91d29945d786c48b8cb05bf5966ced7466e44a4e..85b0073290265ad44f06e117d7808e9b98342c75 100644 --- a/src/Solver/FFTPeriodicPoissonSolver.h +++ b/src/Solver/FFTPeriodicPoissonSolver.h @@ -60,7 +60,7 @@ namespace ippl { //~FFTPeriodicPoissonSolver() {} - void setRhs(rhs_type& rhs); + void setRhs(rhs_type& rhs) override; void solve() override; diff --git a/src/Utility/ParameterList.h b/src/Utility/ParameterList.h index 74cea3ce04ea6678b1f8c45a4e86f4eadaf2208e..edd986fed96ed4c0baf41642a19b46992967584a 100644 --- a/src/Utility/ParameterList.h +++ b/src/Utility/ParameterList.h @@ -131,39 +131,40 @@ namespace ippl { params_m[key] = value; } +// The following commented portion has compiler errors with Intel and Clang // Disable parameter list printing for Cuda builds until // the lambda issue is resolved -#ifndef KOKKOS_ENABLE_CUDA - /*! - * Print this parameter list. - */ - friend - std::ostream& operator<<(std::ostream& os, const ParameterList& sp) { - static int indent = -4; - - indent += 4; - if (indent > 0) { - os << '\n'; - } - for (const auto& [key, value] : sp.params_m) { - std::visit([&](auto&& arg){ - // 21 March 2021 - // https://stackoverflow.com/questions/15884284/c-printing-spaces-or-tabs-given-a-user-input-integer - os << std::string(indent, ' ') - << std::left << std::setw(20) << key - << " " << arg; - }, value); - // 21 March 2021 - // https://stackoverflow.com/questions/289715/last-key-in-a-stdmap - if (key != std::prev(sp.params_m.end())->first) { - os << '\n'; - } - } - indent -= 4; - - return os; - } -#endif +//#ifndef KOKKOS_ENABLE_CUDA +// /*! +// * Print this parameter list. +// */ +// friend +// std::ostream& operator<<(std::ostream& os, const ParameterList& sp) { +// static int indent = -4; +// +// indent += 4; +// if (indent > 0) { +// os << '\n'; +// } +// for (const auto& [key, value] : sp.params_m) { +// std::visit([&](auto&& arg){ +// // 21 March 2021 +// // https://stackoverflow.com/questions/15884284/c-printing-spaces-or-tabs-given-a-user-input-integer +// os << std::string(indent, ' ') +// << std::left << std::setw(20) << key +// << " " << arg; +// }, value); +// // 21 March 2021 +// // https://stackoverflow.com/questions/289715/last-key-in-a-stdmap +// if (key != std::prev(sp.params_m.end())->first) { +// os << '\n'; +// } +// } +// indent -= 4; +// +// return os; +// } +//#endif private: std::map<std::string, variant_t> params_m; diff --git a/test/particle/PIC3d.cpp b/test/particle/PIC3d.cpp index e2b1a1d5e6cd1184ff5e9eeaff2c665d23f13e15..dd507bd607fbf4eccf84e76de6088b3f0f700a1d 100644 --- a/test/particle/PIC3d.cpp +++ b/test/particle/PIC3d.cpp @@ -249,7 +249,6 @@ public: val += viewqm(i); }, lqm); - double lQ = lq / this->EFDMag_m.sum(); } void initFields() { diff --git a/test/serialization/serialize01.cpp b/test/serialization/serialize01.cpp index 97eb90ac5dd9017c46a219531148395ed70bef89..0df7dbc3690202e3fbeee5d4b6e43e835f9fe1b7 100644 --- a/test/serialization/serialize01.cpp +++ b/test/serialization/serialize01.cpp @@ -105,7 +105,7 @@ public: auto& this_view = this->getView(j); Kokkos::parallel_for("assign", - Kokkos::RangePolicy(5, 15), KOKKOS_LAMBDA(const size_t i) { + Kokkos::RangePolicy<size_t>(5, 15), KOKKOS_LAMBDA(const size_t i) { bview(i-5) = this_view(i); }); }