Skip to content

[SYCL] Driver/ToolChain Extension #53

Closed
@agozillon

Description

@agozillon

As a foreword this is perhaps more of a clarification question than an issue.

I've been working a fair bit with the Driver/ToolChain recently trying to integrate one of our back-ends, I've managed to get it working in a slightly hacky way and I'm looking to more appropriately integrate it now as I'd like to stay as closely aligned to Intel's intended goals as possible. I've noticed that the SYCL driver implementation works more like CUDA than OpenMP in the sense that instead of creating or looking for a new ToolChain using a getToolChain invocation it will create another SYCL ToolChain for the specific Host/Device pairing.

So my main question is how do you guys over at Intel envision people extending the current implementation for new devices (device targets)?

The way I originally thought it would work was a little more aligned to OpenMP than CUDA in that it would choose a device ToolChain over the SYCL ToolChain in the cases that a more specialized device ToolChain was present, e.g. I specify -fsycl-targets=fpga-intel and it would pick the best fit for the triple.

However, on further inspection it seems that it would perhaps eventually work more like the Myriad ToolChain? In that the SYCL ToolChain overloads the SelectTool function and based on the device triple given to the SYCL ToolChain it will select the appropriate ToolChain to offload the JobAction to? This method is a little closer to my hacky way of initially testing our tool integration.

The other method I can see is just having the one ConstructJob call in the SYCL ToolChain and creating different commands based on the triple internally, however that seems like it could get difficult to maintain pretty fast.

Please correct me if my understanding or assumptions above are wrong in any way!

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