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

execution backend selection improvements #1273

Open
cyrush opened this issue Apr 10, 2024 · 0 comments
Open

execution backend selection improvements #1273

cyrush opened this issue Apr 10, 2024 · 0 comments
Labels
Milestone

Comments

@cyrush
Copy link
Member

cyrush commented Apr 10, 2024

Three Goals:

  1. Expand and clarify options for selecting VTK-m and other execution strategies.
  2. Improve about() and info() to make sure they show
  3. In addition to forcing a specific strategy, Add a way to specify a precedence list

Naming of "backend" or execution strategies

At a high level, we have three cases:

device
openmp
serial

If you expand this out to include the underlying programing model, we expect to have:

cuda
hip
sycl
openmp
serial

If we enumerate the VTK-m specific options:

vtkm_cuda
vtkm_kokkos_hip
vtkm_kokkos_cuda
vtkm_kokkos_sycl?
vtkm_openmp
vtkm_serial

(vtkm_cuda and kokkos_cuda are different implementations, and users may have a strong reason to choose one or the other)

I propose we support an option that accepts a union of these cases:

device
cuda
hip
sycl
vtkm_cuda
vtkm_kokkos_hip
vtkm_kokkos_cuda
vtkm_kokkos_sycl?
vtkm_openmp
vtkm_serial
openmp
serial

Where device gives you general option that maps to either cuda | hip | sycl with some precedence in the rare case more than one exists.

Additionally, we should support an input list that selects what should be tried and the precedence:

Examples:

execution: ["device","openmp","serial"]

Would try to use a device runtime (cuda or hip or sycl) first, then openmp, then serial

execution: ["cuda","openmp","serial"]

Would try to use cuda first, then openmp, then serial

execution: ["cuda","openmp"]

Would try to use cuda first, then openmp and would not try any others

execution: ["device"] or execution: "device"

Would only try to use a device runtime (cuda or hip or sycl) and no others.

@cyrush cyrush added the task label May 13, 2024
@cyrush cyrush added this to the 0.9.4 milestone May 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant