There are two ways.
Make your own work on the GPU, which is probably difficult and will not work well. At least if working on a GPU means only getting it for compilation and getting results. Eigen is almost optimized for modern processors. Internally Eigen uses its own allocators and memory layouts, which most likely will not work well on CUDA.
The 2nd method is easier to do and should not violate the legacy Eigen code, and probaly is the only one suitable in your case. Switch your base matrices to simple matrices (i.e. double** ) use Eigen::Map . Thus, you will have an Eigen interface for a simple data type, so the codes should not be interrupted, and you can send the matrix to the GPU as a regular c-array, as is usually done. The downside is that you probably won't use Eigen to its full potential, however, if you offload most of the work on the GPU, that's fine.
In fact, this changed the situation a bit. Instead of getting Eigen arrays to work on CUDA, you can get Eigen to work with regular arrays.
source share