Hi,
there are two possibilities: either Eigen don't request alignment when compiled with nvcc, or nvcc does not comply with our alignment request. To investigate the issue, you can try to #define EIGEN_MAX_STATIC_ALIGN_BYTES=16 before any Eigen's header (or pass it to nvcc compiler). You can also try to add EIGEN_ALIGN_TO_BOUNDARY(16) before any Eigen's member required alignment, e.g.:
struct bar {
Vector4f v1;
float x, y;
EIGEN_ALIGN_TO_BOUNDARY(16) Matrix4f m1;
};
Finally, you might also consider re-ordering your members to put the largest object first so that no padding (and thus waste of memory) will be required.
Let us know about the outcome!
gael