[petsc-dev] code review request : txpetscgpu package removal

Paul Mullowney paulm at txcorp.com
Tue Jun 25 16:08:46 CDT 2013

Hey Karl,

Not too heavy. I've already converted much of this code to remove this 
package while supporting existing features, though I haven't pushed it 
into the fork. The real question is whether we want to go down this path 
or not.

Right now, I think CUSP does not support SpMVs in streams. Thus, in 
order to get an effective multi GPU SpMV (for all the different storage 
formats), one has to rewrite all the SpMV kernels (for all the different 
storage formats) to use streams. This adds a lot of additional code to 
support. I would prefer to just call some CUSP API with a stream as an 
input argument but I don't think that exists at the moment. I'm not sure 
what to do here.  Once the other code is accepted, perhaps we can 
address this problem then?

> How 'heavy' is this dependency? Is there some 'blocker' which prevents 
> a complete integration, or is it just not finished yet?
>> I would like to start a discussion on the changes I have made which
>> primarily affect aijcusparse, mpiaijcusparse, and veccusp. There are two
>> commits that need to be reviewed:

> Alright, I'll comment there.
>> I think (1) should be reviewed first as this adds most of the serial GPU
>> capability to aijcusparse. The second commit (2) adds changes to veccusp
>> and mpiaijcusparse to get an efficient multi-GPU SpMV.

It works across node but you have to know what you're doing. This is a 
tough problem to solve universally because its (almost) impossible to 
determine the number of mpi ranks per node in an mpi run. I've never 
seen an MPI function that returns this information.

Right now, a 1-1 pairing between CPU core and GPU will work across any 
system with any number of nodes. I've tested this on a system with 2 
nodes, 4 GPUs per node (so "mpirun -n 8 -npernode 4" would work)

> I assume that this only works on a single node in order to enumerate 
> and initialize the GPUs correctly?
> Best regards,
> Karli

More information about the petsc-dev mailing list