Skip to content

Free Function equivalent to get_global_linear_id #5138

Closed
@joeatodd

Description

@joeatodd

Problem

In Kokkos, we'd like to use free functions to get a global_linear_id in a XorShift random number generator. As far as I'm aware, the existing solution locks us into using the XorShift generator only from parallel_for with nd_range<3>.

Describe the solution you would like

The free functions described here enable querying thread info without access to the sycl::nd_item or sycl::item. That's convenient, but AFAIK there's no way to get the global linear id from any arbitrary parallel_for. The existing free functions require matched <int dimensions>, which may not be conveniently accessible.

A free function version of get_global_linear_id could be used in either a sycl::range or a sycl::nd_range, of any <int dimensions>. This would avoid the need for templates etc.

Describe alternatives you have considered

We could simply item.get_global_linear_id at the top of the kernel & pass this in as an argument, or we could template the get_state_idx function. However, it seems that the "free function queries" extension intends to provide the convenience of not having to do this, and we feel this would be a really useful addition, particularly for packages like Kokkos which aim to provide device functions to be used by diverse user code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions