On Wed, Jan 4, 2017 at 5:21 PM, Manuel Valera <[email protected]> wrote:
> I did a PetscBarrier just before calling the vicariate routine and im > pretty sure im calling it from every processor, code looks like this: > >From the gdb trace. Proc 0: Is in some MPI routine you call yourself, line 113 Proc 1: Is in VecCreate(), line 130 You need to fix your communication code. Matt > call PetscBarrier(PETSC_NULL_OBJECT,ierr) > > > print*,'entering POInit from',rank > > !call exit() > > > call PetscObjsInit() > > > > And output gives: > > > entering POInit from 0 > > entering POInit from 1 > > entering POInit from 2 > > entering POInit from 3 > > > Still hangs in the same way, > > Thanks, > > Manuel > > > > On Wed, Jan 4, 2017 at 2:55 PM, Manuel Valera <[email protected]> > wrote: > >> Thanks for the answers ! >> >> heres the screenshot of what i got from bt in gdb (great hint in how to >> debug in petsc, didn't know that) >> >> I don't really know what to look at here, >> >> Thanks, >> >> Manuel >> >> On Wed, Jan 4, 2017 at 2:39 PM, Dave May <[email protected]> wrote: >> >>> Are you certain ALL ranks in PETSC_COMM_WORLD call these function(s). >>> These functions cannot be inside if statements like >>> if (rank == 0){ >>> VecCreateMPI(...) >>> } >>> >>> >>> On Wed, 4 Jan 2017 at 23:34, Manuel Valera <[email protected]> >>> wrote: >>> >>>> Thanks Dave for the quick answer, appreciate it, >>>> >>>> I just tried that and it didn't make a difference, any other >>>> suggestions ? >>>> >>>> Thanks, >>>> Manuel >>>> >>>> On Wed, Jan 4, 2017 at 2:29 PM, Dave May <[email protected]> >>>> wrote: >>>> >>>> You need to swap the order of your function calls. >>>> Call VecSetSizes() before VecSetType() >>>> >>>> Thanks, >>>> Dave >>>> >>>> >>>> On Wed, 4 Jan 2017 at 23:21, Manuel Valera <[email protected]> >>>> wrote: >>>> >>>> Hello all, happy new year, >>>> >>>> I'm working on parallelizing my code, it worked and provided some >>>> results when i just called more than one processor, but created artifacts >>>> because i didn't need one image of the whole program in each processor, >>>> conflicting with each other. >>>> >>>> Since the pressure solver is the main part i need in parallel im >>>> chosing mpi to run everything in root processor until its time to solve for >>>> pressure, at this point im trying to create a distributed vector using >>>> either >>>> >>>> call VecCreateMPI(PETSC_COMM_WORLD,PETSC_DECIDE,nbdp,xp,ierr) >>>> or >>>> >>>> call VecCreate(PETSC_COMM_WORLD,xp,ierr); CHKERRQ(ierr) >>>> >>>> call VecSetType(xp,VECMPI,ierr) >>>> >>>> call VecSetSizes(xp,PETSC_DECIDE,nbdp,ierr); CHKERRQ(ierr) >>>> >>>> >>>> >>>> In both cases program hangs at this point, something it never happened >>>> on the naive way i described before. I've made sure the global size, nbdp, >>>> is the same in every processor. What can be wrong? >>>> >>>> >>>> Thanks for your kind help, >>>> >>>> >>>> Manuel. >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >> > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
