Hi,

I am doing the following thing.

Step 1. Create DM object and get global vector 'V' using DMGetGlobalVector.
Step 2. Doing some parallel operations on V.
Step 3. I am using VecScatterCreateToAll on V to create a sequential vector 
'V_SEQ' using VecScatterBegin/End with SCATTER_FORWARD.
Step 4. I am performing an expensive operation on V_SEQ and outputting the 
updated V_SEQ.
Step 5. I am using VecScatterBegin/End with SCATTER_REVERSE (global and 
sequential flipped) to get V that is updated with new values from V_SEQ.
Step 6. I continue using this new V on the rest of the parallelized program.

Question: Suppose I have n MPI processes, is the expensive operation in Step 4 
repeated n times? If yes, is there a workaround such that the operation in Step 
4 is performed only once? I would like to follow the same structure as steps 1 
to 6 with step 4 only performed once.

Thanks,

Vysakh Venugopal
---
Vysakh Venugopal
Ph.D. Candidate
Department of Mechanical Engineering
University of Cincinnati, Cincinnati, OH 45221-0072

Reply via email to