Global Ocean Modeling With GPU Acceleration in Python

Moving where the hardware specific stuff is defined is actually really important. Fortran does a good job separating the math from the code, but a bad job at separating the code from the hardware. The separation Julia does here means that libraries can write generic code and let the end user choose to run it on whatever hardware they have. This also means that future hardware can work for current models as long as it can implement the same interface.