From c24397af592eecc8f2efaf7fda972f96adbf13d5 Mon Sep 17 00:00:00 2001 From: Berenger Bramas <bbramas@mpcdf.mpg.de> Date: Thu, 13 Apr 2017 13:57:36 +0200 Subject: [PATCH] Debug computation indexes -- size of mpi message for rhs/position --- bfps/cpp/particles/abstract_particles_distr.hpp | 6 +++--- bfps/cpp/particles/particles_field_computer.hpp | 9 +++++---- bfps/cpp/particles/particles_system.hpp | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/bfps/cpp/particles/abstract_particles_distr.hpp b/bfps/cpp/particles/abstract_particles_distr.hpp index 9cd206ff..7fe0cea3 100644 --- a/bfps/cpp/particles/abstract_particles_distr.hpp +++ b/bfps/cpp/particles/abstract_particles_distr.hpp @@ -262,7 +262,7 @@ public: if(descriptor.nbParticlesToSend){ whatNext.emplace_back(std::pair<Action,int>{NOTHING_TODO, -1}); mpiRequests.emplace_back(); - AssertMpi(MPI_Isend(const_cast<real_number*>(&particles_positions[current_offset_particles_for_partition[current_partition_size-descriptor.nbPartitionsToSend]]), descriptor.nbParticlesToSend*size_particle_positions, particles_utils::GetMpiType(real_number()), descriptor.destProc, TAG_UP_LOW_PARTICLES, + AssertMpi(MPI_Isend(const_cast<real_number*>(&particles_positions[(current_offset_particles_for_partition[current_partition_size-descriptor.nbPartitionsToSend])*size_particle_positions]), descriptor.nbParticlesToSend*size_particle_positions, particles_utils::GetMpiType(real_number()), descriptor.destProc, TAG_UP_LOW_PARTICLES, current_com, &mpiRequests.back())); assert(descriptor.toRecvAndMerge == nullptr); @@ -385,8 +385,8 @@ public: DEBUG_MSG("[%d] up buffer received\n", my_rank); TIMEZONE("reduce"); assert(descriptor.toRecvAndMerge != nullptr); - reduce_particles(&particles_positions[current_offset_particles_for_partition[current_partition_size]-descriptor.nbParticlesToSend], - &particles_current_rhs[current_offset_particles_for_partition[current_partition_size]-descriptor.nbParticlesToSend], + reduce_particles(&particles_positions[(current_offset_particles_for_partition[current_partition_size]-descriptor.nbParticlesToSend)*size_particle_positions], + &particles_current_rhs[(current_offset_particles_for_partition[current_partition_size]-descriptor.nbParticlesToSend)*size_particle_rhs], descriptor.toRecvAndMerge.get(), descriptor.nbParticlesToSend); descriptor.toRecvAndMerge.release(); } diff --git a/bfps/cpp/particles/particles_field_computer.hpp b/bfps/cpp/particles/particles_field_computer.hpp index ed254b9e..e912f99f 100644 --- a/bfps/cpp/particles/particles_field_computer.hpp +++ b/bfps/cpp/particles/particles_field_computer.hpp @@ -70,6 +70,7 @@ class particles_field_computer : public abstract_particles_distr<real_number, 3, const int interp_limit_x = partGridIdx_x+interp_neighbours+1; const int interp_limit_my = partGridIdx_y-interp_neighbours; const int interp_limit_y = partGridIdx_y+interp_neighbours+1; + const int interp_limit_mz_bz = partGridIdx_z-interp_neighbours; int interp_limit_mz[2]; int interp_limit_z[2]; @@ -104,7 +105,7 @@ class particles_field_computer : public abstract_particles_distr<real_number, 3, for(int idx_z = interp_limit_mz[idx_inter] ; idx_z <= interp_limit_z[idx_inter] ; ++idx_z ){ const int idx_z_pbc = (idx_z + field_grid_dim[IDX_Z])%field_grid_dim[IDX_Z]; assert(current_partition_interval.first <= idx_z_pbc && idx_z_pbc < current_partition_interval.second); - assert(idx_z-interp_limit_mz[idx_inter] < interp_neighbours*2+2); + assert(((idx_z+field_grid_dim[IDX_Z]-interp_limit_mz_bz)%field_grid_dim[IDX_Z]) < interp_neighbours*2+2); for(int idx_x = interp_limit_mx ; idx_x <= interp_limit_x ; ++idx_x ){ const int idx_x_pbc = (idx_x + field_grid_dim[IDX_X])%field_grid_dim[IDX_X]; @@ -114,9 +115,9 @@ class particles_field_computer : public abstract_particles_distr<real_number, 3, const int idx_y_pbc = (idx_y + field_grid_dim[IDX_Y])%field_grid_dim[IDX_Y]; assert(idx_y-interp_limit_my < interp_neighbours*2+2); - const real_number coef = (bz[idx_z-interp_limit_mz[idx_inter]] - * by[idx_y-interp_limit_my] - * bx[idx_x-interp_limit_mx]); + const real_number coef = (bz[((idx_z+field_grid_dim[IDX_Z]-interp_limit_mz_bz)%field_grid_dim[IDX_Z])] + * by[idx_y-interp_limit_my] + * bx[idx_x-interp_limit_mx]); const ptrdiff_t tindex = field.getIndexFromGlobalPosition(idx_x_pbc, idx_y_pbc, idx_z_pbc); diff --git a/bfps/cpp/particles/particles_system.hpp b/bfps/cpp/particles/particles_system.hpp index 459e7a79..472ca95d 100644 --- a/bfps/cpp/particles/particles_system.hpp +++ b/bfps/cpp/particles/particles_system.hpp @@ -123,7 +123,7 @@ public: void move(const real_number dt) final { TIMEZONE("particles_system::move"); computer.move_particles(my_particles_positions.get(), my_nb_particles, - my_particles_rhs.data(), std::min(step_idx,int(my_particles_rhs.size())), + my_particles_rhs.data(), std::min(step_idx+1,int(my_particles_rhs.size())), dt); } -- GitLab