 
     one[1] = 0.;
     void *valptr;
-    ghost_densemat_cu_valptr(vec,&valptr);
+    ghost_densemat_t *compactvec;
+
+    if ((vec->traits.ncolsorig != vec->traits.ncols) || (vec->traits.flags & GHOST_DENSEMAT_SCATTERED)) {
+        INFO_LOG("Cloning (and compressing) vec before operation");
+        vec->clone(vec,&compactvec,vec->traits.nrows,0,vec->traits.ncols,0);
+    } else {
+        compactvec = vec;
+    }
+    ghost_densemat_cu_valptr(compactvec,&valptr);
+
     
     if (vec->traits.datatype & GHOST_DT_COMPLEX)
     {


}


extern "C" ghost_error_t ghost_densemat_rm_cu_vaxpy(ghost_densemat_t *v1, ghost_densemat_t *v2, void *a)
{


    return ret;
}
#endif
