I'm am totally confused by

1) the existence of veccuda.py

if I remember correctly, its purpose is to make sure that one of the GPU backends is enabled if a user configures --with-cuda.

2) the fact that veccuda.py depends on some packages but is not a package and 
is not in packages/

I don't know this. In any case, veccuda.py is an artifact of a too rigid GPU backend implementation and should be removed once the GPU backend implementation is fixed.

Why can't the VECCUDA type coexist with the VECCUSP or VECVIENNACL types? If it 
can't coexist, can the code be reworked to allow it to coexist?

Currently it can't coexist because some variables are conditionally compiled and may be multiply defined (e.g. spptr).

Can we get rid of the veccuda.py and the PETSC_HAVE_VECCUDA flag and just 
always have the VECCUDA type if cuda is available?

Yes, that's possible after some refactorization.

I'm willing to do the refactorization and simplification but I need to know 
there is not some secret reason for these complications.

Unless you have to deliver something specific within the next few days, I'll (finally!) do it next week together with getting rid of VECCUSP. These two steps should be done concurrently to avoid needless work.

Best regards,

Reply via email to