diff options
author | 2021-10-19 22:43:36 +0200 | |
---|---|---|
committer | 2021-10-19 13:43:36 -0700 | |
commit | 82395a83095f7159fd8835debc85e42ff177b7f5 (patch) | |
tree | bf7683a103d7f4c0836063fa3c96381ad77a9460 /Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp | |
parent | fcf88725d9753067b329f11687f5d90ddae79cd2 (diff) | |
download | WarpX-82395a83095f7159fd8835debc85e42ff177b7f5.tar.gz WarpX-82395a83095f7159fd8835debc85e42ff177b7f5.tar.zst WarpX-82395a83095f7159fd8835debc85e42ff177b7f5.zip |
BinaryCollision: implement particle creation functor (#2315)
* BinaryCollision: implement particle creation functor
* Apply suggestions from code review (restrict keyword)
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Don't restrict the particle pointers
* Use atomicSetID
* Use more restricts
* Don't use auto restrict
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Diffstat (limited to 'Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp')
-rw-r--r-- | Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp b/Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp index fff4150c1..ba6b20f1b 100644 --- a/Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp +++ b/Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.cpp @@ -23,23 +23,22 @@ ParticleCreationFunc::ParticleCreationFunc (const std::string collision_name, m_collision_type = BinaryCollisionUtils::get_collision_type(collision_name, mypc); -#ifdef AMREX_USE_GPU - amrex::Vector<int> host_num_products; -#else - amrex::Gpu::DeviceVector<int>& host_num_products = m_num_products; -#endif if (m_collision_type == CollisionType::ProtonBoronFusion) { // Proton-Boron fusion only produces alpha particles m_num_product_species = 1; // Proton-Boron fusion produces 3 alpha particles per fusion reaction - host_num_products.push_back(3); + m_num_products_host.push_back(3); +#ifndef AMREX_USE_GPU + // On CPU, the device vector can be filled immediatly + m_num_products_device.push_back(3); +#endif } #ifdef AMREX_USE_GPU - m_num_products.resize(m_num_product_species); - amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, host_num_products.begin(), - host_num_products.end(), - m_num_products.begin()); + m_num_products_device.resize(m_num_product_species); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, m_num_products_host.begin(), + m_num_products_host.end(), + m_num_products_device.begin()); amrex::Gpu::streamSynchronize(); #endif } |