In Fortran, whatever-D array is 1-D array. mp_sum should be fine.
I saw something strange in your code that you were not copying the right
things as you expected.
How about the following?
output(1:3,1:nbnds,(k_pool*pool_id+1:k_pool*pool_id+k_pool))=
input(1:3,1:nbnds,1:k_pool)

Ye

===================
Ye Luo, Ph.D.
Leadership Computing Facility
Argonne National Laboratory

2016-10-28 12:29 GMT-05:00 Vahid Askarpour <[email protected]>:

> Dear QE Users,
>
> I am working on some modifications to the QE-6.0 code using symmetry. When
> I try to combine a 3-D array scattered across nodes, I use the following:
>
> output(3,nbnds,(k_pool*pool_id+1:k_pool*pool_id+k_pool))=
> input(3,nbnds,1:k_pool)
>
> Here, nbnds is the number of bands, k_pool is the number of k points/pool,
> and pool_id is the id of the pool. Here I am assuming the the number of k
> points is divisible by the number of pools.
>
> Then I call mp_sum(output,inter_pool_comm) to put all the segments of
> input across the nodes  into one output file.
>
> When I run the modified QE code in parallel, the output file is different
> from the serial run.
>
> Does the QE's mp_sum allow the above operation for a three-D array?
>
> Any hints or suggestions would be greatly appreciated.
>
> Vahid
>
> Vahid Askarpour
> Department of Physics and Atmospheric Science
> Dalhousie University,
> Halifax, NS, Canada
> _______________________________________________
> Pw_forum mailing list
> [email protected]
> http://pwscf.org/mailman/listinfo/pw_forum
>
_______________________________________________
Pw_forum mailing list
[email protected]
http://pwscf.org/mailman/listinfo/pw_forum

Reply via email to