Hello,
I am trying to fetch 12 entries from a distributed vector global_vec and
put them into a local vector on each process.

IS is_source, is_dest;
ISCreateGeneral(PETSC_COMM_SELF, 12, idx_global, PETSC_COPY_VALUES, &
is_source);
ISCreateGeneral(PETSC_COMM_SELF, 12, idx_local, PETSC_COPY_VALUES, &is_dest
);
Vec local_vec;
VecCreate(PETSC_COMM_SELF, &local_vec);
VecSetSizes(local_vec, PETSC_DECIDE, 12);
VecSetType(local_vec, VECSEQ);
VecScatter scat;
VecScatterCreate(global_vec, is_source, local_vec, is_dest, &scat);


I create the local vector as sequential. However, the last two lines which
create a scatter object, will cause more than half processes to hang and no
error pops out.

Does the scatter have to be VECMPI to VECMPI and cannot VECMPI to VECSEQ?

Thanks,
Qiyue Lu

Reply via email to