Note: this has no OpenMP or OpenACC directives yet