| #
145b24f9
|
| 25-Dec-2014 |
Barry Smith <bsmith@mcs.anl.gov> |
You moved PETSC_EXTERN MatRegisterAll() to matimpl.h but did not change the matregis.c to include matimpl.h hence it did not know that it was extern "C"
Please please please always test with C++ bef
You moved PETSC_EXTERN MatRegisterAll() to matimpl.h but did not change the matregis.c to include matimpl.h hence it did not know that it was extern "C"
Please please please always test with C++ before pushing to next etc
show more ...
|
| #
0f51fdf8
|
| 13-Dec-2014 |
Toby Isaac <tisaac@ices.utexas.edu> |
Remove XXXRegisterAllCalled from public interface.
All XXXRegisterAll() methods are now idempotent, so a boolean indicating whether they can be called or not is no longer necessary.
|
| #
9c925a2c
|
| 18-Mar-2014 |
Shri <abhyshr@mcs.anl.gov> |
Merge branch 'master' into shri/ts-events
Conflicts: src/ts/interface/ts.c
|
| #
edbbd480
|
| 10-Dec-2013 |
Barry Smith <bsmith@mcs.anl.gov> |
Merge branch 'master' into barry/xcode
|
| #
256ff83f
|
| 11-Sep-2013 |
Barry Smith <bsmith@mcs.anl.gov> |
Merge branch 'master' into barry/wirth-fusion-materials
Conflicts: src/ts/examples/tutorials/advection-diffusion-reaction/ex10.c
|
| #
cc85fe4d
|
| 04-Sep-2013 |
Barry Smith <bsmith@mcs.anl.gov> |
Merge branch 'barry/dmvecmattypes' into barry/saws
Needed to work with version of PETSc that did not have constant calls to VecSetFromOptions() etc
Conflicts: src/ksp/ksp/interface/ams/kspams.c s
Merge branch 'barry/dmvecmattypes' into barry/saws
Needed to work with version of PETSc that did not have constant calls to VecSetFromOptions() etc
Conflicts: src/ksp/ksp/interface/ams/kspams.c src/snes/impls/composite/snescomposite.c src/snes/impls/gs/snesgs.c src/snes/impls/nasm/nasm.c src/snes/impls/ngmres/snesngmres.c
show more ...
|
| #
c0c93d0e
|
| 28-Aug-2013 |
Matthew G. Knepley <knepley@gmail.com> |
Merge branch 'master' into knepley/feature-dmda-section
* master: (287 commits) Mat ex170: Comments VTK: Small fix to error message (.vts to .vtu) VTK: Small fix to error message Fixed bib e
Merge branch 'master' into knepley/feature-dmda-section
* master: (287 commits) Mat ex170: Comments VTK: Small fix to error message (.vts to .vtu) VTK: Small fix to error message Fixed bib entries Bib: Updates AO: fix erroneous processing of -ao_view and factor into AOViewFromOptions doc: fix named argument in {Vec,Mat,DM}ViewFromOptions Sys: add PetscDataTypeFromString() and test code Mat: Should say that it has a nullspace in MatView() parms: update tarball with fix for namespace conflict with metis fix citation 'Golub_Varga_1961' parmetis: update tarball to parmetis-4.0.2-p5 which fixes an install issue with cygwin Sys Logging: revert parent traversal fixed hdf5.py so that if self.libraries.compression is None the code still runs correctly DMDA: fix bad cast of DM_DA to PetscObject MatClique: follow DistMultiVec API changes MatClique: remove unused variables config cmakeboot: add C++ flags any time compiler is available config OpenMP: check for C++ flag any time the compiler is available replaced all left-over uses of a single PetscMalloc() to allocated multiple arrays: replaced with PetscMallocN() The only ones left are when the second array is set into the first array and one ugly usage in the MUMPS interface that cannot be easily fixed ...
show more ...
|
| #
b0418fcf
|
| 25-Jul-2013 |
Stefano Zampini <stefano.zampini@gmail.com> |
Merge remote-tracking branch 'origin/master' into stefano_zampini/pcbddc-improvelocalsolvers
|
| #
8533652c
|
| 25-Jul-2013 |
Stefano Zampini <stefano.zampini@gmail.com> |
Merge remote-tracking branch 'origin/master' into stefano_zampini/pcbddc-mirrorsfix
|
| #
6daa6ed0
|
| 25-Jul-2013 |
Stefano Zampini <stefano.zampini@gmail.com> |
Merge remote-tracking branch 'origin/master' into stefano_zampini/pcbddc-constraintssetupimproved
|
| #
72cfe0ad
|
| 23-Jul-2013 |
Karl Rupp <rupp@iue.tuwien.ac.at> |
Merge branch 'paulmullowney/txpetscgpu-package-removal'
|
| #
1019ffe6
|
| 20-Jul-2013 |
Matthew G. Knepley <knepley@gmail.com> |
CUDA: CUSPARSE still includes CUSP headers, so change the guards
|
| #
b06137fd
|
| 27-Jun-2013 |
Paul Mullowney <paulm@txcorp.com> |
Removing TXPETSCGPU from veccusp and mpiaijcusparse
In this next step of removing TXPETSCGPU, the host-device and device-host messaging code has been significantly simplified. In particular, all met
Removing TXPETSCGPU from veccusp and mpiaijcusparse
In this next step of removing TXPETSCGPU, the host-device and device-host messaging code has been significantly simplified. In particular, all methods VecCUSPCopyToGPU/FromGPU now use a cudaMemcpyAsync with a stream (and a stream synchronize()). This never hurts you. Moreover, it can help you in the case of the multi-GPU SpMV as this data transfer will overlap with the MatMult kernel. The more signficant change comes in VecCUSPCopyToGPUSome and VecCUSPCopyFromGPUSome. In this code, the data transfer now moves the smallest contiguous set of vector data containing ALL the indices in a single asynchronous data transfer. Then, the stream containing the data transfer is synchronized (not the entire device). While this can be wasteful in terms of messaging too much data, it has shown the best scalability performance across a wide range of matrices. Lastly the simplicity of the code is a significant advantage over the old way of doing the data transfer. Some old cold in these methods is "if 0"-ed out for reference and will be cleaned up later. One final optimization in the vector code involves registering the host buffer as page locked--which is done in VecCUSPAllocateCheck. Then, the buffer must be unregistered at VecDestroy_SeqCUSP. This shows a nice speedup in the data transfer for a parallel MatMult.
Also in this commit, I am removing the TXPETSCGPU dependence from the mpiaijcusparse class--it now depends only on CUDA. In order for the same stream to be used in the MatMult and MatMultAdd (necessary for an optimal Multi-GPU SpMV), the stream is built in the mpiaijcusparse and then passed in the seqaijcusparse data structure via a new method (MatCUSPARSESetStream). A similar method is added for the CUSPARSE library handle (context) as I think the stream needs to be attached to a particular context to work properly. When running in parallel, multiple GPUs, the references to the handle in the seqaijcusparse are cleared from the mpiaijcusparse classes with the method MatCUSPARSEClearHandle. Then, the mpiaijcusparse class deletes the handle.
One other non-trivial change was made to the seqaijcusparse. The alpha and beta parameters to the SpMV are now device data which is owned by the Mat_SEQAIJCUSPARSEMultStruct structure. This enables slightly better multi-GPU performance as this data does not need to be copied to the GPU at each kernel launch.
Multi-GPU SpMV now works without TXPETSCGPU and the performance is recovered as tested on up to 4 GPUs. Code is valgrind clean and cuda-memcheck clean.
Results of tests have been modified to have 1 less digit of precision. This yields consistent results across different GPUs. Lastly, the parallel test is set to run on a different matrix (shallow_water1) so that the iteration actually converges.
show more ...
|
| #
aa372e3f
|
| 20-Jun-2013 |
Paul Mullowney <paulm@txcorp.com> |
Removal of TXPETSCGPU package from the SEQAIJCUSPARSE class
In this commit, I've removed the dependence of the SEQAIJCUSPARSE class on the TXPETSCGPU package. However, other classes such as SEQAIJCU
Removal of TXPETSCGPU package from the SEQAIJCUSPARSE class
In this commit, I've removed the dependence of the SEQAIJCUSPARSE class on the TXPETSCGPU package. However, other classes such as SEQAIJCUSP, VECCUSP, and MPIAIJCUSPARSE, and MPIAIJCUSP still depend on that package. These dependencies will be removed in subsequent commits once the design and structure is agreed upon.
The reason for this dependency removal is that SEQAIJCUSPARSE only depends on the Nvidia CUSPARSE library which comes standard with CUDA. Thus, the SEQAIJCUSPARSE class should be built whenever PETSc is built with CUDA support. This will be far more maintanable in the long term. Lastly, most of the CUSP dependencies have been removed from this class. The only remaining CUSP dependencies are in the vector data structures used in MatMult* and MatSolve* methods. These will be removed in a subsequent branch as it is not clear what the architecture should be yet.
In order to accomodate all the different functionality for various Krylov solves, two new data structures were defined in cusparsematimpl.h. The first is a Mat_SeqAIJCUSPARSEMultStruct struct. This contains an opaque pointer for a matrix, a MatDescription data structure, and indices vector which will be useful in MatMultAdd functions. The second new data structure is a Mat_SeqAIJCUSPARSETriFactorStruct struct. This contains an CSR Matrix pointer, a MatDescription data structure, a solve analysis data structure and an operation type.
Next, Mat_SeqAIJCUSPARSETriFactors was redefined to hold pointers to up to 4 different Mat_SeqAIJCUSPARSETriFactorStruct structs: one for lower and one for upper solves for both ILU and ICC. Two more for lower and upper solves in algorithms that require a transpose, such as BiCG. The latter two are necessary, as far as I can tell, because one doesn't know until runtime if data structures for the transpose are needed Thus, those are created on demand. Indexing vectors for reorderings are also stored in Mat_SeqAIJCUSPARSETriFactors.
Lastly, Mat_SeqAIJCUSPARSE is the data structure that holds the data needed in multiply. There are 2 pointers to Mat_SeqAIJCUSPARSEMultStruct structs for MatMult and MatMultTranspose. Several auxilliary data structures like workvectors and few other necessary data for MatMult are also stored in here. One important variable, the cudaStream_t, is stored here but it is not owned. Streams are necessary for the parallel SpMV (a subsequent commit will add code setting stream variables from the MPIAIJCUSPARSE class) and the matrices used in the MatMult and MatMultAdd will then use the same stream identifier to attain optimal performance. The MPIAIJCUSPARSE class will own the stream variable which is then used in the SEQAIJCUSPARSE methods.
In matregis.c as well as the petscmat.h and finclude/petscmat.h, I've changed the dependency of SEQAIJCUSPARSE to be on CUDA and not TXPETSCGPU.
The test series TESTEXAMPLES_TXPETSCGPU has been changed to TESTEXAMPLES_CUDA since SEQAIJCUSPARSE only depends on CUDA as discussed above. ksp/ksp/examples/tests/ex43-aijcusparse.c has been renamed to ksp/ksp/examples/tests/ex43.c, the targets in the makefile have been changed appropriately and the results fiels are renamed. Two new test targets were added in ksp/ksp/examples/tests/makefile that test aijcusparse using bicg (and thus the MatSolveTranspose and MatMultTranspose methods) as well as bicg with reordering. The previous results for runex43_2.out (formerly runex43-aijcusparse_2.out) were wrong and so I'm committing new results that agree with CPU based computation. The code is valgrind clean and cuda-memcheck clean.
show more ...
|
| #
9e483975
|
| 13-Jun-2013 |
Karl Rupp <rupp@iue.tuwien.ac.at> |
Merge branch 'karlrupp/feature-viennacl'
|
| #
ab6435e1
|
| 04-Apr-2013 |
Karl Rupp <rupp@iue.tuwien.ac.at> |
ViennaCL: Updated code for new interface to PetscObjectComposeFunction() and XXXRegister()
|
| #
8f86e40f
|
| 18-Mar-2013 |
Karl Rupp <rupp@iue.tuwien.ac.at> |
ViennaCL: Added MPI-implementation for AIJ matrices.
Follows the existing interface for CUSP and CUSPARSE. Compiles and passes standard 'make test'. No additional testing performed yet.
|
| #
d67ff14a
|
| 16-Mar-2013 |
Karl Rupp <rupp@iue.tuwien.ac.at> |
ViennaCL: Added sequential AIJ matrix.
Compiles, 'make test' passes. Further testing required. Injects similar to PETSC_HAVE_CUSP into existing functions. A general concept for dealing with accelera
ViennaCL: Added sequential AIJ matrix.
Compiles, 'make test' passes. Further testing required. Injects similar to PETSC_HAVE_CUSP into existing functions. A general concept for dealing with accelerators is required here, but postponed after release 3.4. aijAssemble.cpp is a stub, also row-compressed CSR is not yet supported.
show more ...
|
| #
7e7d4f0d
|
| 10-Apr-2013 |
Richard Mills <rtm@eecs.utk.edu> |
Merged petsc/petsc into rmills/petsc master
|
| #
8a1af44d
|
| 03-Apr-2013 |
Jed Brown <jed@59A2.org> |
Merge branch 'barry/rm-xxxregisterdynamic'
* barry/rm-xxxregisterdynamic: Registration: remove stale 'XXRegisterDynamic)' entries in man pages TS examples: fix use of PetscFunctionList and add t
Merge branch 'barry/rm-xxxregisterdynamic'
* barry/rm-xxxregisterdynamic: Registration: remove stale 'XXRegisterDynamic)' entries in man pages TS examples: fix use of PetscFunctionList and add to nightlies Changes: Note updates to XRegisterDynamic/PetscObjectComposeFunctionDynamic PetscObjectComposeFunctionDynamic: remove stale docs and usage developers.tex: remove complications from function composition with dlls removed string version of function name for XXXRegister(), PetscFunctionListAdd() and PetscObjectComposeFunction() changes: document PetscFunctionListAdd() API change developers.tex: update documentation of PetscObjectComposeFunction removed path and MPI_Comm arguments from PetscFunctionListFind/Add() removed path argument to XXXInitializePackage() and XXXRegister() removed XXXRegisterDynamic() but kept the APIs for everything else underneath the same phase I of the update to handling registering function pointers
show more ...
|
| #
e1d27e54
|
| 28-Mar-2013 |
Jed Brown <jed@59A2.org> |
Merge branch 'barry/rm-xxxregisterdynamic' into jed/ts-eimex
PetscObjectComposeFunctionDynamic() and TSRegisterDynamic() were replaced by PetscObjectComposeFunction() and TSRegister(), both of which
Merge branch 'barry/rm-xxxregisterdynamic' into jed/ts-eimex
PetscObjectComposeFunctionDynamic() and TSRegisterDynamic() were replaced by PetscObjectComposeFunction() and TSRegister(), both of which drop the string name argument.
* barry/rm-xxxregisterdynamic: (82 commits) ...
Conflicts: src/ts/interface/tsregall.c
show more ...
|
| #
bdf89e91
|
| 26-Mar-2013 |
Barry Smith <bsmith@mcs.anl.gov> |
removed string version of function name for XXXRegister(), PetscFunctionListAdd() and PetscObjectComposeFunction()
|
| #
607a6623
|
| 26-Mar-2013 |
Barry Smith <bsmith@mcs.anl.gov> |
removed path argument to XXXInitializePackage() and XXXRegister()
|
| #
1c84c290
|
| 25-Mar-2013 |
Barry Smith <bsmith@mcs.anl.gov> |
removed XXXRegisterDynamic() but kept the APIs for everything else underneath the same phase I of the update to handling registering function pointers
|
| #
4042b796
|
| 17-Mar-2013 |
Jed Brown <jed@59A2.org> |
Merge branch 'master' into jed/ts-eimex
Sync to include Git conversion, PETSC_EXTERN, and minor API changes.
Conflicts: src/ts/interface/tsregall.c
|