History log of /petsc/src/mat/impls/aij/seq/seqcusparse/cusparsematimpl.h (Results 176 – 200 of 221)
Revision Date Author Comments
# 171b80e0 06-Apr-2016 Matthew G. Knepley <knepley@gmail.com>

Merge branch 'master' into sanderarens/fix-plex-neumann-bc

* master: (28 commits)
few more clang static analyzer fixes
many issues detected by clang static analyzer
Update hypre to its release

Merge branch 'master' into sanderarens/fix-plex-neumann-bc

* master: (28 commits)
few more clang static analyzer fixes
many issues detected by clang static analyzer
Update hypre to its release version
Updates for xSDKTrilinos builds
Added --download-xsdktrilinos
DMLabel: Removed unused variable
Plex: When creating cohesive submeshes, fix memory leak
Plex ex11: Updated output for new distribution algorithm
Plex: When explicitly distributing the depth label, we must recreate empty strata
Plex: When partitioning, the cell numbering should include hybrid points
Plex: Allow cell and vertex numberings to include hybrid points
Plex ex1: Fixed output for empty strata
DMLabel: Added DMLabelHasStratum()
Minor changes and fix to bugs introduced in 82f73ecaa
Modified makefile to fix aijcusparse tests
Add missing code for the case PETSC_HAVE_VECCUDA
Fix bugs introduced in 82f73ecaa
Use VECCUDA with MATAIJCUSPARSE
CUDA: Fixed visibility and disabled Fortran bindings for VecScatters on GPU.
Replace kernels with thrust
...

show more ...


# ec42abe4 06-Apr-2016 Alejandro Lamas Daviña <alejandro.lamas@dsic.upv.es>

Enable complex scalars with VECCUDA


# cc442fca 05-Apr-2016 Karl Rupp <rupp@iue.tuwien.ac.at>

Merge branch 'pr421/alex/feature-veccuda'

* pr421/alex/feature-veccuda
The rationale of this pull request is to have GPU-enabled vectors purely based on CUDA,
and with the possibility of placing a u

Merge branch 'pr421/alex/feature-veccuda'

* pr421/alex/feature-veccuda
The rationale of this pull request is to have GPU-enabled vectors purely based on CUDA,
and with the possibility of placing a user-provided array on the GPU side.

Conflicts:
src/vec/vec/impls/seq/seqcusp/cuspvecimpl.h
src/vec/vec/impls/seq/seqviennacl/viennaclvecimpl.h

show more ...


# c41cb2e2 16-Mar-2016 Alejandro Lamas Daviña <alejandro.lamas@dsic.upv.es>

Use VECCUDA with MATAIJCUSPARSE


# e1b06f76 20-May-2015 Matthew G. Knepley <knepley@gmail.com>

Merge branch 'master' into knepley/solkx

* master: (6933 commits)
Bib: Added reference
Includegraph: Updated for compatibility with new folder layout.
Add SNESLineSearchReason to fortran inclu

Merge branch 'master' into knepley/solkx

* master: (6933 commits)
Bib: Added reference
Includegraph: Updated for compatibility with new folder layout.
Add SNESLineSearchReason to fortran includes Also truncate names to fit 32 char fortran limit
fix compile warnings /usr/home/balay/petsc.clone-2/src/vec/vec/interface/vector.c:1944: warning: division by zero in '1.0e+0 / 0.' /usr/home/balay/petsc.clone-2/src/ksp/ksp/interface/itfunc.c:508: warning: 'vec_rhs' may be used uninitialized in this function
updated output for new trust region initial size
initial size of the trust region is set as a percent of the norm of the initial guess, it should not be related to the initial norm of the function (which is kind of nuts).
The default bounds for SNESVISetVariableBounds() in the manual page were reversed from correct values
Bib: Added refs
Bib: Update MPICH webpage
Plex: Forgot to close file
removed nonexistent ex46f from makefile test rule
Revert "fixed bad merge into master"
fixed bad merge into master
fix memory leak in mkl_pardiso fix some formatting in mkl_pardiso code
mv runex111 from TESTEXAMPLES_C to TESTEXAMPLES_DATAFILESPATH
Mat+Doc: More Fortran docs
Plex ex3: Run tests with the correct number of field components
Bib: Added TetGen cite
parmetis: make sure 'ldd libparmetis.so' points to the correct libmetis.so that its linked with.
small fix as reported by the nightly test
...

Conflicts:
config/builder.py

show more ...


# 898446f9 11-Mar-2015 Shri Abhyankar <abhyshr@mcs.anl.gov>

Merge branch 'master' into shri/ts-is-for-differential-variables

Conflicts:
include/petsc-private/tsimpl.h
src/ts/impls/eimex/eimex.c
src/ts/interface/ts.c


# 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 ...


# 459e96c1 28-Aug-2013 Matthew G. Knepley <knepley@gmail.com>

Merge branch 'master' into knepley/feature-plex-refine-3d

* master: (273 commits)
Mat ex170: Comments
VTK: Small fix to error message (.vts to .vtu)
VTK: Small fix to error message
Fixed bib

Merge branch 'master' into knepley/feature-plex-refine-3d

* master: (273 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
...

Conflicts:
include/petscdmplex.h

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 ...


# aed5ffcb 05-Aug-2013 Karl Rupp <rupp@iue.tuwien.ac.at>

Merge branch 'paulmullowney/txpetscgpu-package-removal2'


# 36d62e41 25-Jul-2013 Paul Mullowney <paulm@txcorp.com>

Removing unused enumerated parapeters from MatCUSP/CUSPARSEFormatOperation

I remove MAT_CUSP_SOLVE from MatCUSPFormatOperation
and MAT_CUSPARSE_SOLVE from MatCUSPARSEFormatOperation as
potential par

Removing unused enumerated parapeters from MatCUSP/CUSPARSEFormatOperation

I remove MAT_CUSP_SOLVE from MatCUSPFormatOperation
and MAT_CUSPARSE_SOLVE from MatCUSPARSEFormatOperation as
potential parameters for choosing the storage of the matrix
for tirangular solve. In particular, the triangular
solves was always using csr format so this parameter had
no effect. Moreover, I never found a case where
an ellpack/hybrid format worked better. Thus I remove this
as a potential parameter. However, I think it is important
to keep MatCUSP/CUSPARSEFormatOperation in the code. In the
future I can see a MAT_CUSPARSE_FACTOR option which uses
CUSPARSE to do ilu0/ic0 factorization on the GPU.

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'


# 2692e278 08-Jul-2013 Paul Mullowney <paulm@txcorp.com>

Adding PREPROCESSOR directives to protect ELL and HYB storage formats.

I've added preprocessor directives around all code using the cusparse
hybrid (or ellpack) format to only build when CUDA 4.2 or

Adding PREPROCESSOR directives to protect ELL and HYB storage formats.

I've added preprocessor directives around all code using the cusparse
hybrid (or ellpack) format to only build when CUDA 4.2 or beyond is
being used. I've also changed the documentation in a few places to
reflect this. In a few places, protections were required for CUDA
5.0 (hyb2csr conversion and in the stream creation in veccusp.cu).

Also adding code to the init.c that 1) checks cuda error codes and
2) sets the device flags so that memory can be registered as paged-
locked via : cudaSetDeviceFlags(cudaDeviceMapHost). This should be
valid for all 1.3 devices and later. Moreover, these changes allow
multiple MPI threads to work on 1 GPU using cuda streams in a thread
safe manner.

show more ...


# 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 ...


# e33c197d 11-Jun-2013 Richard Mills <rtm@eecs.utk.edu>

Merged petsc/petsc into rmills/petsc master.


# 62a20339 13-Apr-2013 Jed Brown <jed@59A2.org>

Merge branch 'jed/aijcusparse-icc'

* jed/aijcusparse-icc:
MatSeqAIJCUSPARSE: make private functions static
txpetscgpu: upgrade to version 0.1.0
aijcusparse : fixed MatGetFactor and other small

Merge branch 'jed/aijcusparse-icc'

* jed/aijcusparse-icc:
MatSeqAIJCUSPARSE: make private functions static
txpetscgpu: upgrade to version 0.1.0
aijcusparse : fixed MatGetFactor and other small issues in this class
ksp tests: new tests for ksp algorithms using aijcusparse methods
vscatcusp : fixed compiler warnings
MatSeqAIJCUSPARSE: white space, style issues, static and extern functions
aijcusparse: ICC/Cholesky preconditioners

Conflicts:
src/mat/impls/aij/seq/seqcusparse/aijcusparse.cu (PetscObjectComposeFunction usage)

show more ...


# bc3f50f2 01-Apr-2013 Paul Mullowney <paulm@txcorp.com>

aijcusparse : fixed MatGetFactor and other small issues in this class

Fixed MatGetFactor_seqaij_cusparse to have a more standard set of
of function calls (similar to aij/seq/umfpack or superlu) for

aijcusparse : fixed MatGetFactor and other small issues in this class

Fixed MatGetFactor_seqaij_cusparse to have a more standard set of
of function calls (similar to aij/seq/umfpack or superlu) for
setting up the factorization. In particular, I replaced the scoping
call to MatGetFactor_seqaij_petsc with the sequence MatCreate,
MatSetSizes, MatSetType, and MatXXXSetPreallocation. With these changes,
all tests that use aijcusparse class pass in optimized and debug builds.
Moreover, all memory leaks have been removed.

Additional small fixes to this class include the removal
of unnecessary PETSC_CUDA_EXTERN_C_BEGIN/END and poor use of
PETSC_COMM_WORLD in this file. Lastly, a few missing error checks
around several PETSc API method calls for symmetry/hermitian tests
were added.

show more ...


# 087f3262 07-Apr-2013 Paul Mullowney <paulm@txcorp.com>

aijcusparse: ICC/Cholesky preconditioners

This is a patch for ICC/Cholesky preconditioners on GPUs for the
aijcusparse(aijcusp) class. One uses ICC by loading an upper triangular
matrix into the cus

aijcusparse: ICC/Cholesky preconditioners

This is a patch for ICC/Cholesky preconditioners on GPUs for the
aijcusparse(aijcusp) class. One uses ICC by loading an upper triangular
matrix into the cusparse class, and then setting the symmetry option,
i.e.

ierr = MatCreateSeqAIJCUSPARSE(comm,n,m,PETSC_NULL,num_entries_per_row,&A);CHKERRQ(ierr);
ierr = MatSetOption(A,MAT_SYMMETRIC,PETSC_TRUE);

This contains contains both the organization and implementation of the
preconditioner. The solves are done under the hood in the txpetscgpu
package. Currently, the factorization is done in the aij/seq/aijfact.c
routines. aijcusparse.cu makes scoping calls to these methods. Then, the
matrix is rebuilt into a form that is palatable for the GPU. This is
done in the method MatSeqAIJCUSPARSEBuildICCTriMatrices.

[Jed] Formatting and 'static' cleanup

show more ...


123456789