how do you access the nonzero elements in SeqAIJ matrices
Barry Smith
bsmith at mcs.anl.gov
Mon Aug 4 10:12:06 CDT 2008
>>>
>>>
>>>
>> Make sure this is a MPI_SeqAIJ matrix.
> I thought that this would work with any seqaij matrix. does it have to
> be MPISEQAIJ or can it just be MATSEQAIJ?
>>
Sorry, my mistake. Yes a MATSEQAIJ matrix.
Barry
>> It is only valid to access this data after you have put the values
>> into
>> the matrix and called MatAssemblyBegin() and MatAssemblyEnd().
> my code looks like:
> ierr = MatCreate(PETSC_COMM_WORLD,&A); CHKERRQ(ierr);
> ierr = MatSetSizes(A,M,N,M,N); CHKERRQ(ierr);
> ierr = MatSetType(A, MATSEQAIJ); CHKERRQ(ierr);
> ierr = MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY); CHKERRQ(ierr);
> [...lots of MatSetValue() calls...]
> ierr = MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY); CHKERRQ(ierr);
>
>> If you are creating a matrix from i, j, and a look at
>> MatCreateSeqAIJWithArrays()
> I would like to extract the data from already assembled matrix (to
> copy
> to a GPU actually).
Ok, what is the code where you access the pointers?
Barry
>
>
> Ahmed
>>
>> Barry
>>
>>
>>> However when accessing directly I get different values for ptr and
>>> SIGSEGV when accessing val or ind.
>>>
>>> also I get a bogus number for a->nz (134630032 instead of 21)
>>>
>>> Can someone please explain when I am doing wrong?
>>>
>>> Ahmed
>>>
>
More information about the petsc-dev
mailing list