On Apr 26, 2009, at 4:30 PM, Yixun Liu wrote:
> Hi,
> I want to make my code run on 1 or multiple processors. The code,
> which
> can run on multiple processors is like the following,
>
> MatCreate(PETSC_COMM_WORLD, &A);
> MatSetSizes(A, 3*numOfVerticesOfOneProcessor,
> 3*numOfVerticesOfOneProcessor, systemSize, systemSize);
> MatSetFromOptions(A);
> MatMPIAIJSetPreallocation(A, 50, PETSC_NULL, 50, PETSC_NULL);
>
> However if I want to run on 1 processor I have to change the last
> code to:
> MatSeqAIJSetPreallocation(A,1000,PETSC_NULL);
>
> How to avoid changing code?
Just leave BOTH lines in the code.
PETSc has the unique feature that it ignores optional function
calls that are not
appropriate for the particular situation. So for runs with one process
the MPI version is
ignored and for runs with multiple processors the Seq version is
ignored.
Barry
>
>
> Thanks.
>
> Yixun