Skip to content
Snippets Groups Projects
Commit c24397af authored by Berenger Bramas's avatar Berenger Bramas
Browse files

Debug computation indexes -- size of mpi message for rhs/position

parent 18a2b1e9
No related branches found
No related tags found
2 merge requests!21Bugfix/nansampling,!3Bugfix/event manager show html
...@@ -262,7 +262,7 @@ public: ...@@ -262,7 +262,7 @@ public:
if(descriptor.nbParticlesToSend){ if(descriptor.nbParticlesToSend){
whatNext.emplace_back(std::pair<Action,int>{NOTHING_TODO, -1}); whatNext.emplace_back(std::pair<Action,int>{NOTHING_TODO, -1});
mpiRequests.emplace_back(); 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())); current_com, &mpiRequests.back()));
assert(descriptor.toRecvAndMerge == nullptr); assert(descriptor.toRecvAndMerge == nullptr);
...@@ -385,8 +385,8 @@ public: ...@@ -385,8 +385,8 @@ public:
DEBUG_MSG("[%d] up buffer received\n", my_rank); DEBUG_MSG("[%d] up buffer received\n", my_rank);
TIMEZONE("reduce"); TIMEZONE("reduce");
assert(descriptor.toRecvAndMerge != nullptr); assert(descriptor.toRecvAndMerge != nullptr);
reduce_particles(&particles_positions[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], &particles_current_rhs[(current_offset_particles_for_partition[current_partition_size]-descriptor.nbParticlesToSend)*size_particle_rhs],
descriptor.toRecvAndMerge.get(), descriptor.nbParticlesToSend); descriptor.toRecvAndMerge.get(), descriptor.nbParticlesToSend);
descriptor.toRecvAndMerge.release(); descriptor.toRecvAndMerge.release();
} }
......
...@@ -70,6 +70,7 @@ class particles_field_computer : public abstract_particles_distr<real_number, 3, ...@@ -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_x = partGridIdx_x+interp_neighbours+1;
const int interp_limit_my = partGridIdx_y-interp_neighbours; const int interp_limit_my = partGridIdx_y-interp_neighbours;
const int interp_limit_y = partGridIdx_y+interp_neighbours+1; 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_mz[2];
int interp_limit_z[2]; int interp_limit_z[2];
...@@ -104,7 +105,7 @@ class particles_field_computer : public abstract_particles_distr<real_number, 3, ...@@ -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 ){ 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]; 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(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 ){ 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]; const int idx_x_pbc = (idx_x + field_grid_dim[IDX_X])%field_grid_dim[IDX_X];
...@@ -114,7 +115,7 @@ class particles_field_computer : public abstract_particles_distr<real_number, 3, ...@@ -114,7 +115,7 @@ 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]; 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); assert(idx_y-interp_limit_my < interp_neighbours*2+2);
const real_number coef = (bz[idx_z-interp_limit_mz[idx_inter]] 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] * by[idx_y-interp_limit_my]
* bx[idx_x-interp_limit_mx]); * bx[idx_x-interp_limit_mx]);
......
...@@ -123,7 +123,7 @@ public: ...@@ -123,7 +123,7 @@ public:
void move(const real_number dt) final { void move(const real_number dt) final {
TIMEZONE("particles_system::move"); TIMEZONE("particles_system::move");
computer.move_particles(my_particles_positions.get(), my_nb_particles, 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); dt);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment