Open keryell opened 1 year ago
But by looking at https://github.com/intel/llvm/pull/7521 I realize I am quite lost in the cyberspace. What is the relation between this project and https://github.com/intel/llvm/pull/7521 which has some directory hierarchy.
This repo contains the unified runtime spec and loader, whereas the work that you see happening in SYCL implementation is related to integrating UR with the existing Plugin Interface. For the time being, the intel/llvm repo will also contain (adapter) implementations to avoid duplicating code too much. That will likely change as UR matures.
Hey Ronan :wave:
But by looking at intel/llvm#7521 I realize I am quite lost in the cyberspace. What is the relation between this project and intel/llvm#7521 which has some directory hierarchy.
So the aim of this project (Unified Runtime) is to provide a midlevel language runtime that can be implemented on a range native platform APIs (which we are calling adapters) e.g. CUDA, HIP, L0, OpenCL Vulkan etc. The initial goal is to replace the PI API in the DPC++ runtime (which is a bad fit for certain adapters) and then extend this work to other high level language runtimes such as OpenMP, the idea being that these high level language runtimes all go through UR.
I believe the PR you linked is the start of a PI plugin implementation layered on top of the Unified Runtime API.
Thanks for clarifying my confusion. New bikeshed iteration:
// C
#include "oneapi/ur/api.h"
// C++
#include "oneapi/ur/api.hpp"
// C++20 module
import oneapi.ur.api;
To avoid conflicts and make things clear, put the include files in some clean directory/directories. So an end-user will write something like:
To bikeshed, obviously.