Re: [eigen] Merging NVCC support branch

[ Thread Index | Date Index | More Archives ]

I'm not sure to understand what you mean, but you can write template kernels that will be invoked with float or double on the GPU and whatever on the CPU.


On Tue, Nov 5, 2013 at 4:51 PM, Pavel Holoborodko <pavel@xxxxxxxxxxxxxxx> wrote:
Will it be possible to leave / write generic versions of the kernels to preserve mp-scalar support?

On Wed, Nov 6, 2013 at 12:41 AM, Gael Guennebaud <gael.guennebaud@xxxxxxxxx> wrote:
Unless you can make your custom scalar type compatible with nvcc. For instance, it should be easy to port our AutoDiffScalar type for fixed size derivatives. In the case of MPFR++ this means porting mpfr and make it use static allocation.  so not a chance ;)

On Tue, Nov 5, 2013 at 4:31 PM, Pavel Holoborodko <pavel@xxxxxxxxxxxxxxx> wrote:
This is definitely excellent feature to have. 

How it will affect custom scalars support (kernels with them most probably won't run on GPU)?

On Wed, Nov 6, 2013 at 12:28 AM, Billy Araujo <billyaraujo@xxxxxxxxx> wrote:

Of course OpenCL would be more hardware independent but I still think this is a powerful feature for Eigen.
I would like to express my gratitude for making Eigen so great.

On Tue, Nov 5, 2013 at 3:20 PM, Marek Otahal <markotahal@xxxxxxxxx> wrote:
+1 I'd like to see GPGPU support for Eigen (preferably OpenCL, but CUDA is good step definitely).
Thanks for your work Gael!

On Tue, Nov 5, 2013 at 4:16 PM, Benjamin Schindler <bschindler@xxxxxxxxxxx> wrote:
Hi Gael

I just want to express my support - I would love seeing this happening.


On 11/05/2013 04:14 PM, Gael Guennebaud wrote:

Hi List,

I already presented the nvcc support fork:

which allows to call Eigen routines from CUDA kernels. This is also a first and necessary step if one day we want to evaluate expressions on the GPU.

Even though this fork is still experimental I'd like to merge it into the default branch before the merge become impossible:

Indeed, it mainly consists in adding EIGEN_DEVICE_FUNC in front of all functions that we consider callable from a device kernel, i.e., all functions but the ones leading to system calls in general (allocation, I/O). There are of course a few more subtleties, but nothing more intrusive.

Doing the merge now will allow me to work on the refactoring of _expression_ templates this month without loosing all the efforts in the nvcc port.

For the 3.3 release, it will be very easy to disable this experimental support of NVCC through a big search and replace script.

Are there any objections? Objections could be for instance that we don't want to see any support of NVCC in Eigen in a foreseeable future.


Marek Otahal :o)

Mail converted by MHonArc 2.6.19+