[petsc-users] Petsc creates a random vector

Xujun Zhao xzhao99 at gmail.com
Mon Aug 17 10:49:08 CDT 2015


Hi all,

I want PETSc to generate random vector using VecSetRandom() following given
examples, but failed and showed some "out of memory" error. The following
is the code, which goes well until it reaches VecSetRandom(). Can anyone
help me figure out the reason? Thanks a lot.

XZ


--------------------------------------------------------------------------------------------
  Vec             u;
  PetscRandom     rand_ctx;     /* random number generator context */
  PetscMPIInt     size, rank;
  PetscInt        n, dn;


  MPI_Comm_rank(PETSC_COMM_WORLD,&rank);//CHKERRQ(ierr);
  MPI_Comm_size(PETSC_COMM_WORLD,&size);//CHKERRQ(ierr);
  n  = N/size + 1;
  dn = n*size - N;
  if ( dn>0 && rank<dn ) n -= 1;
  printf("--->test in petsc_random_vector(): rank = %d, n = %d\n",rank,n);


  VecCreate(PETSC_COMM_WORLD,&u);
  VecSetSizes(u,n,N);
  PetscRandomCreate(PETSC_COMM_WORLD, &rand_ctx);
#if defined(PETSC_HAVE_DRAND48)
  PetscRandomSetType(rand_ctx,PETSCRAND48);
#elif defined(PETSC_HAVE_RAND)
  PetscRandomSetType(rand_ctx,PETSCRAND);
#endif
  PetscRandomSetFromOptions(rand_ctx);


  VecSetRandom(u,rand_ctx);
  PetscRandomDestroy(&rand_ctx);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150817/3cf81c2d/attachment.html>


More information about the petsc-users mailing list