[petsc-users] MatSetValues error with ViennaCL types
Manuel Valera
mvalera-w at sdsu.edu
Wed Aug 29 13:50:58 CDT 2018
Hi everyone,
Thanks for your responses, i understand communicating on this way to this
level of technicality can be hard, i still think we can work ways to solve
this problem though,
I can say the following at this point:
- Program works without issues in any other non-gpu preconditioner, just
by calling -pc_type ### .
- Program works correctly with ViennaCL preconditioners with mpirun -n
1, that is on one processor.
- Program breaks with every ViennaCL preconditioner when attempting any
more than 1 processors.
- I haven't tried other GPU preconditioners because ViennaCL gave the
best performance in 1 processor before.
- I have made sure the matrix type is mpiaijviennacl as it is printed
right before the error log.
- I am attaching what i think are the backtrace logs of the run with two
cores, as i have limited experience with this kind of debugging, and i
cannot make sense of what they say, please let me know if you need me to do
something else.
Current options i can think of are giving you permission to clone my model
repo, or for you to guide me trough the process remotely,
Thanks,
.-.-.-.-
The error i get is still:
Matrix type: mpiaijviennacl
Of sizes: 125 x 125
Matrix type: mpiaijviennacl
Of sizes: 125 x 125
[0]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
[0]PETSC ERROR: No support for this operation for this object type
[0]PETSC ERROR: Currently only handles ViennaCL matrices
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for
trouble shooting.
[0]PETSC ERROR: Petsc Development GIT revision: v3.9.2-549-g779ab53 GIT
Date: 2018-05-31 17:31:13 +0300
[0]PETSC ERROR: ./gcmLEP.GPU on a cuda-debug named node50 by valera Wed Aug
29 11:43:25 2018
[0]PETSC ERROR: Configure options PETSC_ARCH=cuda-debug
--with-mpi-dir=/usr/lib64/openmpi --COPTFLAGS=-O2 --CXXOPTFLAGS=-O2
--FOPTFLAGS=-O2 --with-shared-libraries=1 --with-debugging=1 --with-cuda=1
--CUDAFLAGS=-arch=sm_60 --with-blaslapack-dir=/usr/lib64 --download-viennacl
[0]PETSC ERROR: #1 PCSetUp_SAVIENNACL() line 47 in
/home/valera/petsc/src/ksp/pc/impls/saviennaclcuda/saviennacl.cu
[0]PETSC ERROR: #2 PCSetUp() line 932 in
/home/valera/petsc/src/ksp/pc/interface/precon.c
[0]PETSC ERROR: #3 KSPSetUp() line 381 in
/home/valera/petsc/src/ksp/ksp/interface/itfunc.c
[1]PETSC ERROR:
------------------------------------------------------------------------
[1]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation,
probably memory access out of range
[1]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
[1]PETSC ERROR: or see
http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
[1]PETSC ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X
to find memory corruption errors
[1]PETSC ERROR: likely location of problem given in stack below
[1]PETSC ERROR: --------------------- Stack Frames
------------------------------------
[1]PETSC ERROR: Note: The EXACT line numbers in the stack are not available,
[1]PETSC ERROR: INSTEAD the line number of the start of the function
[1]PETSC ERROR: is given.
[1]PETSC ERROR: [1] PetscTraceBackErrorHandler line 182
/home/valera/petsc/src/sys/error/errtrace.c
[1]PETSC ERROR: [1] PetscError line 352
/home/valera/petsc/src/sys/error/err.c
[1]PETSC ERROR: [1] PCSetUp_SAVIENNACL line 45
/home/valera/petsc/src/ksp/pc/impls/saviennaclcuda/saviennacl.cu
[1]PETSC ERROR: [1] PCSetUp line 894
/home/valera/petsc/src/ksp/pc/interface/precon.c
[1]PETSC ERROR: [1] KSPSetUp line 294
/home/valera/petsc/src/ksp/ksp/interface/itfunc.c
[1]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
[1]PETSC ERROR: Signal received
[1]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for
trouble shooting.
[1]PETSC ERROR: Petsc Development GIT revision: v3.9.2-549-g779ab53 GIT
Date: 2018-05-31 17:31:13 +0300
[1]PETSC ERROR: ./gcmLEP.GPU on a cuda-debug named node50 by valera Wed Aug
29 11:43:25 2018
[1]PETSC ERROR: Configure options PETSC_ARCH=cuda-debug
--with-mpi-dir=/usr/lib64/openmpi --COPTFLAGS=-O2 --CXXOPTFLAGS=-O2
--FOPTFLAGS=-O2 --with-shared-libraries=1 --with-debugging=1 --with-cuda=1
--CUDAFLAGS=-arch=sm_60 --with-blaslapack-dir=/usr/lib64 --download-viennacl
[1]PETSC ERROR: #1 User provided function() line 0 in unknown file
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
with errorcode 59.
NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
[0]PETSC ERROR:
------------------------------------------------------------------------
[0]PETSC ERROR: Caught signal number 15 Terminate: Some process (or the
batch system) has told this process to end
[0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
[0]PETSC ERROR: or see
http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
[0]PETSC ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X
to find memory corruption errors
[0]PETSC ERROR: likely location of problem given in stack below
[0]PETSC ERROR: --------------------- Stack Frames
------------------------------------
[0]PETSC ERROR: Note: The EXACT line numbers in the stack are not available,
[0]PETSC ERROR: INSTEAD the line number of the start of the function
[0]PETSC ERROR: is given.
[0]PETSC ERROR: [0] MatSetErrorIfFailure line 116
/home/valera/petsc/src/mat/utils/gcreate.c
[0]PETSC ERROR: [0] PCSetUp line 894
/home/valera/petsc/src/ksp/pc/interface/precon.c
[0]PETSC ERROR: [0] PCSetUp_SAVIENNACL line 45
/home/valera/petsc/src/ksp/pc/impls/saviennaclcuda/saviennacl.cu
[0]PETSC ERROR: [0] PCSetUp line 894
/home/valera/petsc/src/ksp/pc/interface/precon.c
[0]PETSC ERROR: [0] KSPSetUp line 294
/home/valera/petsc/src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
[0]PETSC ERROR: Signal received
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for
trouble shooting.
[0]PETSC ERROR: Petsc Development GIT revision: v3.9.2-549-g779ab53 GIT
Date: 2018-05-31 17:31:13 +0300
[0]PETSC ERROR: ./gcmLEP.GPU on a cuda-debug named node50 by valera Wed Aug
29 11:43:25 2018
[0]PETSC ERROR: Configure options PETSC_ARCH=cuda-debug
--with-mpi-dir=/usr/lib64/openmpi --COPTFLAGS=-O2 --CXXOPTFLAGS=-O2
--FOPTFLAGS=-O2 --with-shared-libraries=1 --with-debugging=1 --with-cuda=1
--CUDAFLAGS=-arch=sm_60 --with-blaslapack-dir=/usr/lib64 --download-viennacl
[0]PETSC ERROR: #4 User provided function() line 0 in unknown file
[node50:32783] 1 more process has sent help message help-mpi-api.txt /
mpi-abort
[node50:32783] Set MCA parameter "orte_base_help_aggregate" to 0 to see all
help / error messages
On Tue, Aug 28, 2018 at 9:34 PM, Karl Rupp <rupp at iue.tuwien.ac.at> wrote:
> Hi Manuel,
>
> as Barry said, it is hard for us to provide any help without having a more
> complete picture of what is going on.
>
> The error you report seems to come from the AMG preconditioner in
> ViennaCL. This can have many origins. Do other preconditioners run without
> error? Can you run in a debugger and provide a complete backtrace?
>
> Thanks and best regards,
> Karli
>
>
> On 08/29/2018 01:33 AM, Manuel Valera wrote:
>
>> Talked too fast,
>>
>> After fixing that problem, i tried more than one mpi processor and got
>> the following:
>>
>> Matrix type: mpiaijviennacl
>> Of sizes: 125 x 125
>> Matrix type: mpiaijviennacl
>> Of sizes: 125 x 125
>> [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> [0]PETSC ERROR: No support for this operation for this object type
>> [0]PETSC ERROR: Currently only handles ViennaCL matrices
>> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html
>> for trouble shooting.
>> [0]PETSC ERROR: Petsc Development GIT revision: v3.9.2-549-g779ab53 GIT
>> Date: 2018-05-31 17:31:13 +0300
>> [0]PETSC ERROR: ./gcmLEP.GPU on a cuda-debug named node50 by valera Tue
>> Aug 28 16:30:02 2018
>> [0]PETSC ERROR: Configure options PETSC_ARCH=cuda-debug
>> --with-mpi-dir=/usr/lib64/openmpi --COPTFLAGS=-O2 --CXXOPTFLAGS=-O2
>> --FOPTFLAGS=-O2 --with-shared-libraries=1 --with-debugging=1 --with-cuda=1
>> --CUDAFLAGS=-arch=sm_60 --with-blaslapack-dir=/usr/lib64
>> --download-viennacl
>> [0]PETSC ERROR: #1 PCSetUp_SAVIENNACL() line 47 in
>> /home/valera/petsc/src/ksp/pc/impls/saviennaclcuda/saviennacl.cu <
>> http://saviennacl.cu>
>> [0]PETSC ERROR: #2 PCSetUp() line 932 in /home/valera/petsc/src/ksp/pc/
>> interface/precon.c
>> [1]PETSC ERROR: ------------------------------
>> ------------------------------------------
>> [1]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation,
>> probably memory access out of range
>> [1]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
>> [1]PETSC ERROR: or see http://www.mcs.anl.gov/petsc/d
>> ocumentation/faq.html#valgrind
>> [1]PETSC ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS
>> X to find memory corruption errors
>> [1]PETSC ERROR: likely location of problem given in stack below
>> [1]PETSC ERROR: --------------------- Stack Frames
>> ------------------------------------
>> [1]PETSC ERROR: Note: The EXACT line numbers in the stack are not
>> available,
>> [1]PETSC ERROR: INSTEAD the line number of the start of the function
>> [1]PETSC ERROR: is given.
>> [1]PETSC ERROR: [1] PetscTraceBackErrorHandler line 182
>> /home/valera/petsc/src/sys/error/errtrace.c
>> [1]PETSC ERROR: [1] PetscError line 352 /home/valera/petsc/src/sys/err
>> or/err.c
>> [1]PETSC ERROR: [1] PCSetUp_SAVIENNACL line 45
>> /home/valera/petsc/src/ksp/pc/impls/saviennaclcuda/saviennacl.cu <
>> http://saviennacl.cu>
>>
>> [1]PETSC ERROR: [1] PCSetUp line 894 /home/valera/petsc/src/ksp/pc/
>> interface/precon.c
>> [1]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> [1]PETSC ERROR: Signal received
>> [1]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html
>> for trouble shooting.
>> [1]PETSC ERROR: Petsc Development GIT revision: v3.9.2-549-g779ab53 GIT
>> Date: 2018-05-31 17:31:13 +0300
>> [1]PETSC ERROR: ./gcmLEP.GPU on a cuda-debug named node50 by valera Tue
>> Aug 28 16:30:02 2018
>> [1]PETSC ERROR: Configure options PETSC_ARCH=cuda-debug
>> --with-mpi-dir=/usr/lib64/openmpi --COPTFLAGS=-O2 --CXXOPTFLAGS=-O2
>> --FOPTFLAGS=-O2 --with-shared-libraries=1 --with-debugging=1 --with-cuda=1
>> --CUDAFLAGS=-arch=sm_60 --with-blaslapack-dir=/usr/lib64
>> --download-viennacl
>> [1]PETSC ERROR: #1 User provided function() line 0 in unknown file
>> ------------------------------------------------------------
>> --------------
>> MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
>> with errorcode 59.
>>
>> NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
>> You may or may not see output from other processes, depending on
>> exactly when Open MPI kills them.
>> ------------------------------------------------------------
>> --------------
>> [0]PETSC ERROR: ------------------------------
>> ------------------------------------------
>> [0]PETSC ERROR: Caught signal number 15 Terminate: Some process (or the
>> batch system) has told this process to end
>> [0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
>> [0]PETSC ERROR: or see http://www.mcs.anl.gov/petsc/d
>> ocumentation/faq.html#valgrind
>> [0]PETSC ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS
>> X to find memory corruption errors
>> [0]PETSC ERROR: likely location of problem given in stack below
>> [0]PETSC ERROR: --------------------- Stack Frames
>> ------------------------------------
>> [0]PETSC ERROR: Note: The EXACT line numbers in the stack are not
>> available,
>> [0]PETSC ERROR: INSTEAD the line number of the start of the function
>> [0]PETSC ERROR: is given.
>> [0]PETSC ERROR: [0] PetscCommDuplicate line 130
>> /home/valera/petsc/src/sys/objects/tagm.c
>> [0]PETSC ERROR: [0] PetscHeaderCreate_Private line 34
>> /home/valera/petsc/src/sys/objects/inherit.c
>> [0]PETSC ERROR: [0] ISCreate line 35 /home/valera/petsc/src/vec/is/
>> is/interface/isreg.c
>> [0]PETSC ERROR: [0] ISCreateGeneral line 668
>> /home/valera/petsc/src/vec/is/is/impls/general/general.c
>> [0]PETSC ERROR: [0] PCSetUp_SAVIENNACL line 45
>> /home/valera/petsc/src/ksp/pc/impls/saviennaclcuda/saviennacl.cu <
>> http://saviennacl.cu>
>> [0]PETSC ERROR: [0] PCSetUp line 894 /home/valera/petsc/src/ksp/pc/
>> interface/precon.c
>> [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> [0]PETSC ERROR: Signal received
>> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html
>> for trouble shooting.
>> [0]PETSC ERROR: Petsc Development GIT revision: v3.9.2-549-g779ab53 GIT
>> Date: 2018-05-31 17:31:13 +0300
>> [0]PETSC ERROR: ./gcmLEP.GPU on a cuda-debug named node50 by valera Tue
>> Aug 28 16:30:02 2018
>> [0]PETSC ERROR: Configure options PETSC_ARCH=cuda-debug
>> --with-mpi-dir=/usr/lib64/openmpi --COPTFLAGS=-O2 --CXXOPTFLAGS=-O2
>> --FOPTFLAGS=-O2 --with-shared-libraries=1 --with-debugging=1 --with-cuda=1
>> --CUDAFLAGS=-arch=sm_60 --with-blaslapack-dir=/usr/lib64
>> --download-viennacl
>> [0]PETSC ERROR: #3 User provided function() line 0 in unknown file
>> [node50:30582] 1 more process has sent help message help-mpi-api.txt /
>> mpi-abort
>> [node50:30582] Set MCA parameter "orte_base_help_aggregate" to 0 to see
>> all help / error messages
>>
>>
>>
>> It is currently running in 1 mpi processor + GPU but i would like to call
>> at least 16 mpi processors + GPU to do the rest of the data management who
>> is not part of the main laplacian on the mpi and the laplacian solution on
>> the GPU, is this currently possible?
>>
>> Thanks for your help,
>>
>>
>>
>> On Tue, Aug 28, 2018 at 4:21 PM, Manuel Valera <mvalera-w at sdsu.edu
>> <mailto:mvalera-w at sdsu.edu>> wrote:
>>
>> Ok, i found the culprit and we can close this thread,
>>
>> The problem was a missing variable for setting the maximum columns,
>> which i deleted at some point without realizing. The error message
>> was too ambiguous to catch this so i had to compare with a previous
>> working version of the arguments of MatSetValues, it was evident then.
>>
>> Good news is that i can now set the values with the viennacl types
>> too,
>>
>> Thanks for your kind help,
>>
>> Manuel
>>
>> On Tue, Aug 28, 2018 at 11:25 AM, Smith, Barry F.
>> <bsmith at mcs.anl.gov <mailto:bsmith at mcs.anl.gov>> wrote:
>>
>>
>> 1) PetscMalloc() is never valid or needed in Fortran
>>
>> 2) there is no reason to use DMSetMatrixPreallocateOnly()
>> just use DMCreateMatrix() assuming that using a DM (DMDA,
>> DMPLEX, etc) is suitable for your problem.
>>
>> At this end we are totally guessing at what you are doing
>> and so have little help we can provide. A simple, nonworking
>> code that tries to do what you would need would help us a great
>> deal in understanding that you are trying to do.
>>
>> Barry
>>
>>
>>
>>
>>
>> > On Aug 28, 2018, at 1:18 PM, Manuel Valera
>> <mvalera-w at sdsu.edu <mailto:mvalera-w at sdsu.edu>> wrote:
>> >
>> > Matthew, PetscMalloc gives the same error,
>> >
>> > Barry, it would be very hard for me to get the code to a
>> minimum working example, i guess all i need to understand is how
>> to setup a DM matrix with DMSetMatrixPreallocateOnly() instead
>> of MatMPIAIJSetPreallocation() as we were doing before, is there
>> a simple example who does this in Fortran?
>> >
>> > Is the PetscMalloc call needed? is 'call
>> PetscMalloc(1,row,ierr)' a valid, compilable call to
>> PetscMalloc? what other reason may there be for this error to
>> happen ?
>> >
>> > Just remembering, that trying to setup the matrix with the
>> MatAIJSetPreallocation() brings up an error to acknowledge the
>> viennacl datatypes and that's why i'm trying to make this change
>> on your recommendation,
>> >
>> > Thanks for your help,
>> >
>> >
>> >
>> >
>> >
>> > On Mon, Aug 27, 2018 at 7:35 PM, Smith, Barry F.
>> <bsmith at mcs.anl.gov <mailto:bsmith at mcs.anl.gov>> wrote:
>> >
>> > Send your code in a way we can compile and run it; it must
>> be some simple issue that is hard to communicate in email.
>> >
>> > Barry
>> >
>> >
>> > > On Aug 27, 2018, at 5:51 PM, Manuel Valera
>> <mvalera-w at sdsu.edu <mailto:mvalera-w at sdsu.edu>> wrote:
>> > >
>> > > Hello everyone,
>> > >
>> > > I just had time to work on this again, and checked the code
>> for errors on the matrix entries, this is the exact code i was
>> using for creating the matrix without
>> DMSetMatrixPreallocateOnly, using MatMPIAIJSetPreallocation and
>> it worked that way, but trying this way i get the same 'Column
>> too large' error using any number at the column position of
>> MatSetValues,
>> > >
>> > > I have set up my code to print the column argument (n) of
>> MatSetValues and in this case is 7 (lower than 124), it still
>> gives error, even entering a specific number in the MatSetValues
>> column argument position gives the same error.
>> > >
>> > > So next i went back to ex.50 here:
>> http://www.mcs.anl.gov/petsc/petsc-current/src/ts/examples/t
>> utorials/ex50.c.html
>> <http://www.mcs.anl.gov/petsc/petsc-current/src/ts/examples/
>> tutorials/ex50.c.html>
>> and it has a very similar structure except the PetscMalloc1()
>> call, so i tried adding that and got:
>> > >
>> > > /home/valera/ParGCCOM/Src/DMDALaplacian.f90:114: undefined
>> reference to `petscmalloc1_'
>> > >
>> > > Any ideas on this behaviour?
>> > >
>> > > Thanks so much,
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > On Thu, Aug 16, 2018 at 11:20 AM, Smith, Barry F.
>> <bsmith at mcs.anl.gov <mailto:bsmith at mcs.anl.gov>> wrote:
>> > >
>> > > Column too large: col 10980 max 124
>> > >
>> > > You need to check the code that is generating the matrix
>> entries. The matrix has 124 columns but you are attempting to
>> put a value at column 10980
>> > >
>> > > Barry
>> > >
>> > >
>> > > > On Aug 15, 2018, at 9:44 PM, Manuel Valera
>> <mvalera-w at sdsu.edu <mailto:mvalera-w at sdsu.edu>> wrote:
>> > > >
>> > > > Thanks Matthew and Barry,
>> > > >
>> > > > Now my code looks like:
>> > > >
>> > > > call DMSetMatrixPreallocateOnly(daDummy,PETSC_TRUE,ierr)
>> > > > call DMSetMatType(daDummy,MATMPIAIJVIENNACL,ierr)
>> > > > call DMSetVecType(daDummy,VECMPIVIENNACL,ierr)
>> > > > call DMCreateMatrix(daDummy,A,ierr)
>> > > > call MatSetFromOptions(A,ierr)
>> > > > call MatSetUp(A,ierr)
>> > > > [...]
>> > > > call
>> MatSetValues(A,1,row,sumpos,pos(0:iter-1),vals(0:iter-1),INS
>> ERT_VALUES,ierr)
>> > > > [...]
>> > > > call MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY, ierr)
>> > > > call MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY, ierr)
>> > > >
>> > > > And i get a different error, now is:
>> > > >
>> > > > [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > > [0]PETSC ERROR: Argument out of range
>> > > > [0]PETSC ERROR: Column too large: col 10980 max 124
>> > > > [0]PETSC ERROR: See
>> http://www.mcs.anl.gov/petsc/documentation/faq.html
>> <http://www.mcs.anl.gov/petsc/documentation/faq.html> for
>> trouble shooting.
>> > > > [0]PETSC ERROR: Petsc Development GIT revision:
>> v3.9.2-549-g779ab53 GIT Date: 2018-05-31 17:31:13 +0300
>> > > > [0]PETSC ERROR: ./gcmLEP.GPU on a cuda-debug named node50
>> by valera Wed Aug 15 19:40:00 2018
>> > > > [0]PETSC ERROR: Configure options PETSC_ARCH=cuda-debug
>> --with-mpi-dir=/usr/lib64/openmpi --COPTFLAGS=-O2
>> --CXXOPTFLAGS=-O2 --FOPTFLAGS=-O2 --with-shared-libraries=1
>> --with-debugging=1 --with-cuda=1 --CUDAFLAGS=-arch=sm_60
>> --with-blaslapack-dir=/usr/lib64 --download-viennacl
>> > > > [0]PETSC ERROR: #1 MatSetValues_SeqAIJ() line 442 in
>> /home/valera/petsc/src/mat/impls/aij/seq/aij.c
>> > > > [0]PETSC ERROR: #2 MatSetValues() line 1339 in
>> /home/valera/petsc/src/mat/interface/matrix.c
>> > > >
>> > > >
>> > > > Thanks again,
>> > > >
>> > > >
>> > > >
>> > > >
>> > > >
>> > > >
>> > > >
>> > > >
>> > > > On Wed, Aug 15, 2018 at 7:02 PM, Smith, Barry F.
>> <bsmith at mcs.anl.gov <mailto:bsmith at mcs.anl.gov>> wrote:
>> > > >
>> > > > Should be
>> > > >
>> > > > call DMSetMatType(daDummy,MATMPIAIJVIENNACL,ierr)
>> > > > call DMSetVecType(daDummy,VECMPIVIENNACL,ierr)
>> > > > call DMCreateMatrix(daDummy,A,ierr)
>> > > >
>> > > > and remove the rest. You need to set the type of Mat
>> you want the DM to return BEFORE you create the matrix.
>> > > >
>> > > > Barry
>> > > >
>> > > >
>> > > >
>> > > > > On Aug 15, 2018, at 4:45 PM, Manuel Valera
>> <mvalera-w at sdsu.edu <mailto:mvalera-w at sdsu.edu>> wrote:
>> > > > >
>> > > > > Ok thanks for clarifying that, i wasn't sure if there
>> were different types,
>> > > > >
>> > > > > Here is a stripped down version of my code, it seems
>> like the preallocation is working now since the matrix
>> population part is working without problem, but here it is for
>> illustration purposes:
>> > > > >
>> > > > > call DMSetMatrixPreallocateOnly(daDummy,PETSC_TRUE,ierr)
>> > > > > call DMCreateMatrix(daDummy,A,ierr)
>> > > > > call MatSetFromOptions(A,ierr)
>> > > > > call DMSetMatType(daDummy,MATMPIAIJVIENNACL,ierr)
>> > > > > call DMSetVecType(daDummy,VECMPIVIENNACL,ierr)
>> > > > > call
>> MatMPIAIJSetPreallocation(A,19,PETSC_NULL_INTEGER,19,PETSC_
>> NULL_INTEGER,ierr)
>> > > > > call MatSetUp(A,ierr)
>> > > > > [...]
>> > > > > call
>> MatSetValues(A,1,row,sumpos,pos(0:iter-1),vals(0:iter-1),INS
>> ERT_VALUES,ierr)
>> > > > > [...]
>> > > > > call MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY, ierr)
>> > > > > call MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY, ierr)
>> > > > >
>> > > > > Adding the first line there did the trick,
>> > > > >
>> > > > > Now the problem seems to be the program is not
>> recognizing the matrix as ViennaCL type when i try with more
>> than one processor, i get now:
>> > > > >
>> > > > > [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > > > [0]PETSC ERROR: No support for this operation for this
>> object type
>> > > > > [0]PETSC ERROR: Currently only handles ViennaCL matrices
>> > > > > [0]PETSC ERROR: See
>> http://www.mcs.anl.gov/petsc/documentation/faq.html
>> <http://www.mcs.anl.gov/petsc/documentation/faq.html> for
>> trouble shooting.
>> > > > > [0]PETSC ERROR: Petsc Development GIT revision:
>> v3.9.2-549-g779ab53 GIT Date: 2018-05-31 17:31:13 +0300
>> > > > > [0]PETSC ERROR: ./gcmLEP.GPU on a cuda-debug named
>> node50 by valera Wed Aug 15 14:44:22 2018
>> > > > > [0]PETSC ERROR: Configure options PETSC_ARCH=cuda-debug
>> --with-mpi-dir=/usr/lib64/openmpi --COPTFLAGS=-O2
>> --CXXOPTFLAGS=-O2 --FOPTFLAGS=-O2 --with-shared-libraries=1
>> --with-debugging=1 --with-cuda=1 --CUDAFLAGS=-arch=sm_60
>> --with-blaslapack-dir=/usr/lib64 --download-viennacl
>> > > > > [0]PETSC ERROR: #1 PCSetUp_SAVIENNACL() line 47 in
>> /home/valera/petsc/src/ksp/pc/impls/saviennaclcuda/saviennacl.cu
>> <http://saviennacl.cu>
>> > > > > [0]PETSC ERROR: #2 PCSetUp() line 932 in
>> /home/valera/petsc/src/ksp/pc/interface/precon.c
>> > > > > [0]PETSC ERROR: #3 KSPSetUp() line 381 in
>> /home/valera/petsc/src/ksp/ksp/interface/itfunc.c
>> > > > >
>> > > > > When running with:
>> > > > >
>> > > > > mpirun -n 1 ./gcmLEP.GPU
>> tc=TestCases/LockRelease/LE_6x6x6/ jid=tiny_cuda_test_n2
>> -ksp_type cg -dm_vec_type viennacl -dm_mat_type aijviennacl
>> -pc_type saviennacl -log_view
>> > > > >
>> > > > >
>> > > > > Thanks,
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > > On Wed, Aug 15, 2018 at 2:32 PM, Matthew Knepley
>> <knepley at gmail.com <mailto:knepley at gmail.com>> wrote:
>> > > > > On Wed, Aug 15, 2018 at 5:20 PM Manuel Valera
>> <mvalera-w at sdsu.edu <mailto:mvalera-w at sdsu.edu>> wrote:
>> > > > > It seems to be resumed on: I do not know how to
>> preallocate a DM Matrix correctly.
>> > > > >
>> > > > > There is only one matrix type, Mat. There are no
>> separate DM matrices. A DM can create a matrix for you
>> > > > > using DMCreateMatrix(), but that is a Mat and it is
>> preallocated correctly. I am not sure what you are doing.
>> > > > >
>> > > > > Thanks,
>> > > > >
>> > > > > Matt
>> > > > >
>> > > > > The interesting part is that it only breaks when i need
>> to populate a GPU matrix from MPI, so kudos on that, but it
>> seems i need to do better on my code to get this setup working,
>> > > > >
>> > > > > Any help would be appreciated,
>> > > > >
>> > > > > Thanks,
>> > > > >
>> > > > >
>> > > > >
>> > > > > On Wed, Aug 15, 2018 at 2:15 PM, Matthew Knepley
>> <knepley at gmail.com <mailto:knepley at gmail.com>> wrote:
>> > > > > On Wed, Aug 15, 2018 at 4:53 PM Manuel Valera
>> <mvalera-w at sdsu.edu <mailto:mvalera-w at sdsu.edu>> wrote:
>> > > > > Thanks Matthew,
>> > > > >
>> > > > > I try to do that when calling:
>> > > > >
>> > > > > call
>> MatMPIAIJSetPreallocation(A,19,PETSC_NULL_INTEGER,19,PETSC_
>> NULL_INTEGER,ierr)
>> > > > >
>> > > > > But i am not aware on how to do this for the DM if it
>> needs something more specific/different,
>> > > > >
>> > > > > The error says that your preallocation is wrong for the
>> values you are putting in. The DM does not control either,
>> > > > > so I do not understand your email.
>> > > > >
>> > > > > Thanks,
>> > > > >
>> > > > > Matt
>> > > > >
>> > > > > Thanks,
>> > > > >
>> > > > > On Wed, Aug 15, 2018 at 1:51 PM, Matthew Knepley
>> <knepley at gmail.com <mailto:knepley at gmail.com>> wrote:
>> > > > > On Wed, Aug 15, 2018 at 4:39 PM Manuel Valera
>> <mvalera-w at sdsu.edu <mailto:mvalera-w at sdsu.edu>> wrote:
>> > > > > Hello PETSc devs,
>> > > > >
>> > > > > I am running into an error when trying to use the
>> MATMPIAIJVIENNACL Matrix type in MPI calls, the same code runs
>> for MATSEQAIJVIENNACL type in one processor. The error happens
>> when calling MatSetValues for this specific configuration. It
>> does not occur when using MPI DMMatrix types only.
>> > > > >
>> > > > > The DM properly preallocates the matrix. I am assuming
>> you do not here.
>> > > > >
>> > > > > Matt
>> > > > >
>> > > > > Any help will be appreciated,
>> > > > >
>> > > > > Thanks,
>> > > > >
>> > > > >
>> > > > >
>> > > > > My program call:
>> > > > >
>> > > > > mpirun -n 2 ./gcmLEP.GPU
>> tc=TestCases/LockRelease/LE_6x6x6/ jid=tiny_cuda_test_n2
>> -ksp_type cg -dm_vec_type viennacl -dm_mat_type aijviennacl
>> -pc_type saviennacl -log_view
>> > > > >
>> > > > >
>> > > > > The error (repeats after each MatSetValues call):
>> > > > >
>> > > > > [1]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > > > [1]PETSC ERROR: Argument out of range
>> > > > > [1]PETSC ERROR: Inserting a new nonzero at global
>> row/column (75, 50) into matrix
>> > > > > [1]PETSC ERROR: See
>> http://www.mcs.anl.gov/petsc/documentation/faq.html
>> <http://www.mcs.anl.gov/petsc/documentation/faq.html> for
>> trouble shooting.
>> > > > > [1]PETSC ERROR: Petsc Development GIT revision:
>> v3.9.2-549-g779ab53 GIT Date: 2018-05-31 17:31:13 +0300
>> > > > > [1]PETSC ERROR: ./gcmLEP.GPU on a cuda-debug named
>> node50 by valera Wed Aug 15 13:10:44 2018
>> > > > > [1]PETSC ERROR: Configure options PETSC_ARCH=cuda-debug
>> --with-mpi-dir=/usr/lib64/openmpi --COPTFLAGS=-O2
>> --CXXOPTFLAGS=-O2 --FOPTFLAGS=-O2 --with-shared-libraries=1
>> --with-debugging=1 --with-cuda=1 --CUDAFLAGS=-arch=sm_60
>> --with-blaslapack-dir=/usr/lib64 --download-viennacl
>> > > > > [1]PETSC ERROR: #1 MatSetValues_MPIAIJ() line 608 in
>> /home/valera/petsc/src/mat/impls/aij/mpi/mpiaij.c
>> > > > > [1]PETSC ERROR: #2 MatSetValues() line 1339 in
>> /home/valera/petsc/src/mat/interface/matrix.c
>> > > > >
>> > > > >
>> > > > > My Code structure:
>> > > > >
>> > > > > call DMCreateMatrix(daDummy,A,ierr)
>> > > > > call MatSetFromOptions(A,ierr)
>> > > > > call MPI_Comm_size(PETSC_COMM_WORLD, numprocs, ierr)
>> > > > > if (numprocs > 1) then ! set matrix type parallel
>> > > > > ! Get local size
>> > > > > call DMDACreateNaturalVector(daDummy,Tmpnat,ierr)
>> > > > > call VecGetLocalSize(Tmpnat,locsize,ierr)
>> > > > > call VecDestroy(Tmpnat,ierr)
>> > > > > ! Set matrix
>> > > > > #ifdef GPU
>> > > > > call MatSetType(A,MATAIJVIENNACL,ierr)
>> > > > > call DMSetMatType(daDummy,MATMPIAIJVIENNACL,ierr)
>> > > > > call DMSetVecType(daDummy,VECMPIVIENNACL,ierr)
>> > > > > print*,'SETTING GPU TYPES'
>> > > > > #else
>> > > > > call DMSetMatType(daDummy,MATMPIAIJ,ierr)
>> > > > > call DMSetMatType(daDummy,VECMPI,ierr)
>> > > > > call MatSetType(A,MATMPIAIJ,ierr)!
>> > > > > #endif
>> > > > > call
>> MatMPIAIJSetPreallocation(A,19,PETSC_NULL_INTEGER,19,PETSC_
>> NULL_INTEGER,ierr)
>> > > > > else ! set matrix type sequential
>> > > > > #ifdef GPU
>> > > > > call DMSetMatType(daDummy,MATSEQAIJVIENNACL,ierr)
>> > > > > call DMSetVecType(daDummy,VECSEQVIENNACL,ierr)
>> > > > > call MatSetType(A,MATSEQAIJVIENNACL,ierr)
>> > > > > print*,'SETTING GPU TYPES'
>> > > > > #else
>> > > > > call DMSetMatType(daDummy,MATSEQAIJ,ierr)
>> > > > > call DMSetMatType(daDummy,VECSEQ,ierr)
>> > > > > call MatSetType(A,MATSEQAIJ,ierr)
>> > > > > #endif
>> > > > > call MatSetUp(A,ierr)
>> > > > > call
>> getCenterInfo(daGrid,xstart,ystart,zstart,xend,yend,zend)
>> > > > >
>> > > > > do k=zstart,zend-1
>> > > > > do j=ystart,yend-1
>> > > > > do i=xstart,xend-1
>> > > > > [..]
>> > > > > call
>> MatSetValues(A,1,row,sumpos,pos(0:iter-1),vals(0:iter-1),INS
>> ERT_VALUES,ierr)
>> > > > > [..]
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > > --
>> > > > > 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
>> > > > >
>> > > > > https://www.cse.buffalo.edu/~knepley/
>> <https://www.cse.buffalo.edu/%7Eknepley/>
>> > > > >
>> > > > >
>> > > > >
>> > > > > --
>> > > > > 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
>> > > > >
>> > > > > https://www.cse.buffalo.edu/~knepley/
>> <https://www.cse.buffalo.edu/%7Eknepley/>
>> > > > >
>> > > > >
>> > > > >
>> > > > > --
>> > > > > 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
>> > > > >
>> > > > > https://www.cse.buffalo.edu/~knepley/
>> <https://www.cse.buffalo.edu/%7Eknepley/>
>> > > > >
>> > > >
>> > > >
>> > >
>> > >
>> >
>> >
>>
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20180829/20865f51/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: backt-2.log
Type: text/x-log
Size: 3909 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20180829/20865f51/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: backt.log
Type: text/x-log
Size: 3623 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20180829/20865f51/attachment-0003.bin>
More information about the petsc-users
mailing list