Skip to content

Commit

Permalink
Finish Compilation
Browse files Browse the repository at this point in the history
  • Loading branch information
ax3l committed Feb 4, 2025
1 parent 1f5643f commit e95a324
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 64 deletions.
2 changes: 1 addition & 1 deletion Source/Diagnostics/ParticleDiag/ParticleDiag.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ ParticleDiag::ParticleDiag (
// Always write out theta, whether or not it's requested,
// to be consistent with always writing out r and z.
// TODO: openPMD does a reconstruction to Cartesian, so we can now skip force-writing this
m_plot_flags[pc->GetRealSoANames().at("theta")] = 1;
m_plot_flags[pc->GetRealCompIndex("theta")] = 1;
#endif

// build filter functors
Expand Down
13 changes: 4 additions & 9 deletions Source/Particles/AddPlasmaUtilities.H
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,6 @@ struct PlasmaParserHelper
PlasmaParserHelper (SoAType& a_soa, std::size_t old_size,
const std::vector<std::string>& a_user_int_attribs,
const std::vector<std::string>& a_user_real_attribs,
std::map<std::string,int>& a_particle_icomps,
std::map<std::string,int>& a_particle_comps,
const PlasmaParserWrapper& wrapper) :
m_wrapper_ptr(&wrapper) {
m_pa_user_int_pinned.resize(a_user_int_attribs.size());
Expand All @@ -266,10 +264,10 @@ struct PlasmaParserHelper
#endif

for (std::size_t ia = 0; ia < a_user_int_attribs.size(); ++ia) {
m_pa_user_int_pinned[ia] = a_soa.GetIntData(a_particle_icomps[a_user_int_attribs[ia]]).data() + old_size;
m_pa_user_int_pinned[ia] = a_soa.GetIntData(a_user_int_attribs[ia]).data() + old_size;
}
for (std::size_t ia = 0; ia < a_user_real_attribs.size(); ++ia) {
m_pa_user_real_pinned[ia] = a_soa.GetRealData(a_particle_comps[a_user_real_attribs[ia]]).data() + old_size;
m_pa_user_real_pinned[ia] = a_soa.GetRealData(a_user_real_attribs[ia]).data() + old_size;
}

#ifdef AMREX_USE_GPU
Expand Down Expand Up @@ -308,7 +306,6 @@ struct QEDHelper
{
template <typename SoAType>
QEDHelper (SoAType& a_soa, std::size_t old_size,
std::map<std::string,int>& a_particle_comps,
bool a_has_quantum_sync, bool a_has_breit_wheeler,
const std::shared_ptr<QuantumSynchrotronEngine>& a_shr_p_qs_engine,
const std::shared_ptr<BreitWheelerEngine>& a_shr_p_bw_engine)
Expand All @@ -317,14 +314,12 @@ struct QEDHelper
if(has_quantum_sync){
quantum_sync_get_opt =
a_shr_p_qs_engine->build_optical_depth_functor();
p_optical_depth_QSR = a_soa.GetRealData(
a_particle_comps["opticalDepthQSR"]).data() + old_size;
p_optical_depth_QSR = a_soa.GetRealData("opticalDepthQSR").data() + old_size;
}
if(has_breit_wheeler){
breit_wheeler_get_opt =
a_shr_p_bw_engine->build_optical_depth_functor();
p_optical_depth_BW = a_soa.GetRealData(
a_particle_comps["opticalDepthBW"]).data() + old_size;
p_optical_depth_BW = a_soa.GetRealData("opticalDepthBW").data() + old_size;
}
}

Expand Down
16 changes: 6 additions & 10 deletions Source/Particles/ParticleBoundaryBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -443,11 +443,9 @@ void ParticleBoundaryBuffer::gatherParticlesFromDomainBoundaries (MultiParticleC
WARPX_PROFILE("ParticleBoundaryBuffer::gatherParticles::filterAndTransform");
auto& warpx = WarpX::GetInstance();
const auto dt = warpx.getdt(pti.GetLevel());
auto string_to_index_intcomp = buffer[i].getParticleRuntimeiComps();
const int step_scraped_index = string_to_index_intcomp.at("stepScraped");
auto string_to_index_realcomp = buffer[i].getParticleRuntimeComps();
const int delta_index = string_to_index_realcomp.at("deltaTimeScraped");
const int normal_index = string_to_index_realcomp.at("nx");
const int step_scraped_index = buffer[i].GetIntCompIndex("stepScraped");
const int delta_index = buffer[i].GetRealCompIndex("deltaTimeScraped");
const int normal_index = buffer[i].GetRealCompIndex("nx");
const int step = warpx_instance.getistep(0);
amrex::filterAndTransformParticles(ptile_buffer, ptile,
predicate,
Expand Down Expand Up @@ -546,11 +544,9 @@ void ParticleBoundaryBuffer::gatherParticlesFromEmbeddedBoundaries (
}
auto &warpx = WarpX::GetInstance();
const auto dt = warpx.getdt(pti.GetLevel());
auto string_to_index_intcomp = buffer[i].getParticleRuntimeiComps();
const int step_scraped_index = string_to_index_intcomp.at("stepScraped");
auto string_to_index_realcomp = buffer[i].getParticleRuntimeComps();
const int delta_index = string_to_index_realcomp.at("deltaTimeScraped");
const int normal_index = string_to_index_realcomp.at("nx");
const int step_scraped_index = buffer[i].GetIntCompIndex("stepScraped");
const int delta_index = buffer[i].GetRealCompIndex("deltaTimeScraped");
const int normal_index = buffer[i].GetRealCompIndex("nx");
const int step = warpx_instance.getistep(0);

{
Expand Down
35 changes: 20 additions & 15 deletions Source/Particles/ParticleCreation/DefaultInitialization.H
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@ namespace ParticleCreation {
* These are NOT initialized by this function.
* @param[in] user_real_attribs The names of the real components for this particle tile
* @param[in] user_int_attribs The names of the int components for this particle tile
* @param[in] particle_comps map between particle component index and component name for real comps
* @param[in] particle_icomps map between particle component index and component name for int comps
* @param[in] particle_comps particle component names for real comps
* @param[in] particle_icomps particle component names for int comps
* @param[in] user_real_attrib_parser the parser functions used to initialize the user real components
* @param[in] user_int_attrib_parser the parser functions used to initialize the user int components
* @param[in] do_qed_comps whether to initialize the qed components (these are usually handled by
Expand All @@ -120,8 +120,8 @@ void DefaultInitializeRuntimeAttributes (PTile& ptile,
const int n_external_attr_int,
const std::vector<std::string>& user_real_attribs,
const std::vector<std::string>& user_int_attribs,
const std::map<std::string, int>& particle_comps,
const std::map<std::string, int>& particle_icomps,
const std::vector<std::string>& particle_comps,
const std::vector<std::string>& particle_icomps,
const std::vector<amrex::Parser*>& user_real_attrib_parser,
const std::vector<amrex::Parser*>& user_int_attrib_parser,
#ifdef WARPX_QED
Expand Down Expand Up @@ -151,8 +151,9 @@ void DefaultInitializeRuntimeAttributes (PTile& ptile,
auto attr_ptr = ptile.GetStructOfArrays().GetRealData(j).data();
#ifdef WARPX_QED
// Current runtime comp is quantum synchrotron optical depth
if (particle_comps.find("opticalDepthQSR") != particle_comps.end() &&
particle_comps.at("opticalDepthQSR") == j)
auto const it_qsr = std::find(particle_comps.begin(), particle_comps.end(), "opticalDepthQSR");
if (it_qsr != particle_comps.end() &&
std::distance(particle_comps.begin(), it_qsr) == j)
{
if (!do_qed_comps) { continue; }
const QuantumSynchrotronGetOpticalDepth quantum_sync_get_opt =
Expand All @@ -172,9 +173,10 @@ void DefaultInitializeRuntimeAttributes (PTile& ptile,
}
}

// Current runtime comp is Breit-Wheeler optical depth
if (particle_comps.find("opticalDepthBW") != particle_comps.end() &&
particle_comps.at("opticalDepthBW") == j)
// Current runtime comp is Breit-Wheeler optical depth
auto const it_bw = std::find(particle_comps.begin(), particle_comps.end(), "opticalDepthBW");
if (it_bw != particle_comps.end() &&
std::distance(particle_comps.begin(), it_bw) == j)
{
if (!do_qed_comps) { continue; }
const BreitWheelerGetOpticalDepth breit_wheeler_get_opt =
Expand All @@ -198,8 +200,9 @@ void DefaultInitializeRuntimeAttributes (PTile& ptile,
for (int ia = 0; ia < n_user_real_attribs; ++ia)
{
// Current runtime comp is ia-th user defined attribute
if (particle_comps.find(user_real_attribs[ia]) != particle_comps.end() &&
particle_comps.at(user_real_attribs[ia]) == j)
auto const it_ura = std::find(particle_comps.begin(), particle_comps.end(), user_real_attribs[ia]);
if (it_ura != particle_comps.end() &&
std::distance(particle_comps.begin(), it_ura) == j)
{
const amrex::ParserExecutor<7> user_real_attrib_parserexec =
user_real_attrib_parser[ia]->compile<7>();
Expand Down Expand Up @@ -232,8 +235,9 @@ void DefaultInitializeRuntimeAttributes (PTile& ptile,
auto attr_ptr = ptile.GetStructOfArrays().GetIntData(j).data();

// Current runtime comp is ionization level
if (particle_icomps.find("ionizationLevel") != particle_icomps.end() &&
particle_icomps.at("ionizationLevel") == j)
auto const it_ioniz = std::find(particle_icomps.begin(), particle_icomps.end(), "ionizationLevel");
if (it_ioniz != particle_icomps.end() &&
std::distance(particle_icomps.begin(), it_ioniz) == j)
{
if constexpr (amrex::RunOnGpu<typename PTile::template AllocatorType<int>>::value) {
amrex::ParallelFor(stop - start,
Expand All @@ -251,8 +255,9 @@ void DefaultInitializeRuntimeAttributes (PTile& ptile,
for (int ia = 0; ia < n_user_int_attribs; ++ia)
{
// Current runtime comp is ia-th user defined attribute
if (particle_icomps.find(user_int_attribs[ia]) != particle_icomps.end() &&
particle_icomps.at(user_int_attribs[ia]) == j)
auto const it_uia = std::find(particle_icomps.begin(), particle_icomps.end(), user_int_attribs[ia]);
if (it_uia != particle_icomps.end() &&
std::distance(particle_icomps.begin(), it_uia) == j)
{
const amrex::ParserExecutor<7> user_int_attrib_parserexec =
user_int_attrib_parser[ia]->compile<7>();
Expand Down
4 changes: 2 additions & 2 deletions Source/Particles/ParticleCreation/SmartUtils.H
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ struct SmartCopyTag
[[nodiscard]] int size () const noexcept { return static_cast<int>(common_names.size()); }
};

PolicyVec getPolicies (const NameMap& names) noexcept;
PolicyVec getPolicies (std::vector<std::string> const & names) noexcept;

SmartCopyTag getSmartCopyTag (const NameMap& src, const NameMap& dst) noexcept;
SmartCopyTag getSmartCopyTag (std::vector<std::string> const & src, std::vector<std::string> const & dst) noexcept;

/**
* \brief Sets the ids of newly created particles to the next values.
Expand Down
13 changes: 11 additions & 2 deletions Source/Particles/ParticleCreation/SmartUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@
#include <utility>
#include <vector>

PolicyVec getPolicies (const NameMap& names) noexcept
PolicyVec getPolicies (std::vector<std::string> const & names_vec) noexcept
{
NameMap names;
for (auto i = 0u; i < names_vec.size(); ++i) { names.emplace(names_vec[i], i); }

std::vector<InitializationPolicy> h_policies;
h_policies.resize(names.size());
for (const auto& kv : names)
Expand All @@ -31,10 +34,16 @@ PolicyVec getPolicies (const NameMap& names) noexcept
return policies;
}

SmartCopyTag getSmartCopyTag (const NameMap& src, const NameMap& dst) noexcept
SmartCopyTag getSmartCopyTag (std::vector<std::string> const & src_names, std::vector<std::string> const & dst_names) noexcept
{
SmartCopyTag tag;

// We want to avoid running an NxM algorithm to find pairs, so sort the components first.
NameMap src;
NameMap dst;
for (auto i = 0u; i < src_names.size(); ++i) { src.emplace(src_names[i], i); }
for (auto i = 0u; i < dst_names.size(); ++i) { dst.emplace(dst_names[i], i); }

std::vector<int> h_src_comps;
std::vector<int> h_dst_comps;

Expand Down
Loading

0 comments on commit e95a324

Please sign in to comment.