GPU support for Cartesian problems
This PR adds GPU support for one dimensional bases and cartesian problems. Remaining rough edges include good defaults for subproblem coupling, and raising or warning for unsupported features (GPU+MPI, GPU+curvilinear).
Just noting here that the trace operator doesn't work on GPU's as cupy's einsum doesn't take an out argument. A similar fix to dot product (commit fb9b3d6) fixes things. Also problem.add_equation will not work for float32 as unify attributes for dtype raises an 'Objects are not all equal' error.
Interpolate doesn't currently work either, with error ... File "~/Packages/dedalus_gpu/dedalus/core/operators.py", line 975, in _subspace_matrix return cls._full_matrix(input_basis, output_basis, *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: InterpolateRealFourier._full_matrix() missing 1 required positional argument: 'position'