Break up the transfer of the problem space to the device into chunks.  The "new" for the x_space buffer may throw a bad_alloc in cases where the problem space is too large