Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OCCA Backend #816

Closed
jeremylt opened this issue Sep 27, 2021 · 4 comments · Fixed by #1072 · May be fixed by #1043
Closed

OCCA Backend #816

jeremylt opened this issue Sep 27, 2021 · 4 comments · Fixed by #1072 · May be fixed by #1043
Assignees
Labels

Comments

@jeremylt
Copy link
Member

What is our path forward with the OCCA backend?

At this time, the OCCA backend is falling behind the other backends in terms of feature-completeness for preconditioner support. We have default functionality, but it pulls down to the CPU, so it would be slow for GPU environments. Also, we don't yet have GPU optimized or code-generation features it the OCCA backend. Third, currently an MFEM user can build the latest version of MFEM with OCCA support or with libCEED support but not both, as the libCEED OCCA backend uses a different version of OCCA than MFEM uses.

It totally makes sense that @dmed256 doesn't have time to keep this backend fully up to date, but I feel like we need someone with the time to keep this backend fully up to date. Currently I don't know enough C++ and OCCA to do the job.

I feel like we have a few options:

  1. Retire OCCA backend - not my preferred option, as I feel like the OCCA backend could offer our first support on the new Intel GPUs

  2. I learn OCCA and C++ - my preferred option, even though this will take a fair investment in time, I'm hoping what I learn will help our Rust GPU efforts

  3. Invent more time for @dmed256 - not sure this is possible?

  4. Other collaborators - I'm not sure if there are other collaborators who would be interested in working on this backend

I'm open to other ideas; I just want to make sure we have a plan here.

@jedbrown
Copy link
Member

Adding @camierjs, who did most of the initial development.

Realistically, this is way off the critical path of @jeremylt's other deliverables (using libCEED, but no longer funded by CEED) so if nobody familiar with OCCA has time/interest, then maintaining it will require bringing someone new up to speed. Given that we're entering the last year of ECP funding, that's hard to justify without a sustainable research concept.

I know @LeilaGhaffari is interested in supporting Intel GPUs (after a summer at NCAR working with DPC++), and I'd love to more easily be able to transfer techniques from @tcew et al's work. I think fixing the OCCA backend to compile with latest OCCA is achievable (I wish the release documented API changes/migration recommendations), but bringing it up to par with the CUDA and HIP backends will be a much bigger lift.

@jeremylt
Copy link
Member Author

Good points; it is rather removed from the PSAAP work since we'll be running on machines that are better supported by other backends. In that case, I think we need to retire this backend if we cannot find someone who has the time to regularly maintain this backend against OCCA main and keep feature parity with the other backends.

@v-dobrev
Copy link
Member

Third, currently an MFEM user can build the latest version of MFEM with OCCA support or with libCEED support but not both, as the libCEED OCCA backend uses a different version of OCCA than MFEM uses.

Note: there is an MFEM PR to update MFEM for the latest OCCA release, v1.2.0: mfem/mfem#1978

@jeremylt
Copy link
Member Author

Ah, I thought that had already finished back in January. My mistake.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
4 participants