-
Notifications
You must be signed in to change notification settings - Fork 801
[SYCL][ABI-break] Remove fpga features from SYCL RT #20882
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
base: sycl
Are you sure you want to change the base?
Conversation
600c199 to
502506a
Compare
6f785e1 to
4ee0563
Compare
4ee0563 to
876871d
Compare
| | `ONEAPI_DEVICE_SELECTOR` | [See below.](#oneapi_device_selector) | This device selection environment variable can be used to limit the choice of devices available when the SYCL-using application is run. Useful for limiting devices to a certain type (like GPUs or CPUs) or backends (like Level Zero or OpenCL). This device selection mechanism is replacing `SYCL_DEVICE_FILTER` . The `ONEAPI_DEVICE_SELECTOR` syntax is shared with OpenMP and also allows sub-devices to be chosen. [See below.](#oneapi_device_selector) for a full description. | | ||
| | `ONEAPI_PVC_SEND_WAR_WA` | '1' or '0' | Controls the workaround for Erratum "FP64 register ordering violation" on Intel Ponte Vecchio GPUs. Setting `ONEAPI_PVC_SEND_WAR_WA=0` disables the workaround and is only safe if the secondary FP64 pipeline is disabled. Default is enabled ('1') and applied throughout the oneAPI software stack - including OneDNN, OneMKL, OpenCL and Level Zero Runtimes, and Intel Graphics Compiler. | | ||
| | `SYCL_DEVICE_ALLOWLIST` | See [below](#sycl_device_allowlist) | Filter out devices that do not match the pattern specified. `BackendName` accepts `host`, `opencl`, `level_zero`, `native_cpu` or `cuda`. `DeviceType` accepts `host`, `cpu`, `gpu`, `fpga`, or `acc`. `fpga` and `acc` are handled in the same manner. `DeviceVendorId` accepts uint32_t in hex form (`0xXYZW`). `DriverVersion`, `PlatformVersion`, `DeviceName` and `PlatformName` accept regular expression. Special characters, such as parenthesis, must be escaped. DPC++ runtime will select only those devices which satisfy provided values above and regex. More than one device can be specified using the piping symbol "\|".| | ||
| | `SYCL_DEVICE_ALLOWLIST` | See [below](#sycl_device_allowlist) | Filter out devices that do not match the pattern specified. `BackendName` accepts `host`, `opencl`, `level_zero`, `native_cpu` or `cuda`. `DeviceType` accepts `host`, `cpu`, `gpu`. `DeviceVendorId` accepts uint32_t in hex form (`0xXYZW`). `DriverVersion`, `PlatformVersion`, `DeviceName` and `PlatformName` accept regular expression. Special characters, such as parenthesis, must be escaped. DPC++ runtime will select only those devices which satisfy provided values above and regex. More than one device can be specified using the piping symbol "\|".| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note for reviewers: SYCL_DEVICE_ALLOWLIST allowed to use fpga and acc interchangeably.
I removed both. Not sure if we need to save acc.
| cpu = UR_DEVICE_TYPE_CPU, | ||
| gpu = UR_DEVICE_TYPE_GPU, | ||
| accelerator = UR_DEVICE_TYPE_FPGA, | ||
| accelerator = 0x10000, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note for reviewers: I untied accelerator from UR_DEVICE_TYPE_FPGA and had to assign explicit value because otherwise it's value clashes with UR_DEVICE_TYPE_CPU.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why untie accelerator from UR_DEVICE_TYPE_FPGA? Are we removing the latter?
| __SYCL_ASPECT(ext_intel_gpu_subslices_per_slice, 22) | ||
| __SYCL_ASPECT(ext_intel_gpu_eu_count_per_subslice, 23) | ||
| __SYCL_ASPECT(ext_intel_max_mem_bandwidth, 24) | ||
| __SYCL_ASPECT(ext_intel_mem_channel, 25) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note for reviewers: I wonder if we need to update the IDs of the aspects that follow the removed aspect.
Some of the past PRs didn't update:
#13351
So I haven't updated either.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should rework the Aspect IDs as well, but I won't mind if that's done in a separate PR.
sycl/source/detail/platform_impl.cpp
Outdated
| // handles to do a cleanup later | ||
| std::vector<ur_device_handle_t> UrDevicesToCleanUp = UrDevices; | ||
|
|
||
| // Filter out FPGA devices since they are no longer supported. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note for reviewers: Currently I am filtering out all UR_DEVICE_TYPE_FPGA devices returned by UR API.
I.e. we just ignore them and don't return from platform::get_devices and everywhere else.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is not needed as FPGA devices are filtered out at UR level: #20014
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, removed this code.
sarnex
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
esimd lgtm
adamfidel
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Graph change to node LGTM.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice clean-up. 10K lines less code to maintain. 👍
YuriPlyakhin
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dpcpp-tools changes lgtm
uditagarwal97
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM overall
| // Transform a compile-time property list to a USM property_list (working at | ||
| // runtime). Right now only the `buffer_location<N>` has its corresponding USM | ||
| // runtime). Right there is no property that has its corresponding USM | ||
| // runtime property and is transformable | ||
| template <typename PropertyListT> inline property_list get_usm_property_list() { | ||
| if constexpr (PropertyListT::template has_property<buffer_location_key>()) { | ||
| return property_list{ | ||
| sycl::ext::intel::experimental::property::usm::buffer_location( | ||
| PropertyListT::template get_property<buffer_location_key>().value)}; | ||
| } | ||
| return {}; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if we can completely get rid of this function and all its uses? As this function just returns an empty list.
| __SYCL_ASPECT(ext_intel_gpu_subslices_per_slice, 22) | ||
| __SYCL_ASPECT(ext_intel_gpu_eu_count_per_subslice, 23) | ||
| __SYCL_ASPECT(ext_intel_max_mem_bandwidth, 24) | ||
| __SYCL_ASPECT(ext_intel_mem_channel, 25) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should rework the Aspect IDs as well, but I won't mind if that's done in a separate PR.
| cpu = UR_DEVICE_TYPE_CPU, | ||
| gpu = UR_DEVICE_TYPE_GPU, | ||
| accelerator = UR_DEVICE_TYPE_FPGA, | ||
| accelerator = 0x10000, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why untie accelerator from UR_DEVICE_TYPE_FPGA? Are we removing the latter?
See #16929 for details.
Removed the following extensions:
sycl_ext_intel_data_flow_pipes_propertiessycl_ext_intel_dataflow_pipessycl_ext_intel_fpga_datapathsycl_ext_intel_fpga_device_selectorsycl_ext_intel_fpga_kernel_arg_propertiessycl_ext_intel_fpga_kernel_interface_propertiessycl_ext_intel_fpga_lsusycl_ext_intel_fpga_memsycl_ext_intel_fpga_regsycl_ext_intel_fpga_task_sequencesycl_ext_intel_mem_channel_propertysycl_ext_oneapi_annotated_argMoved all documentation to
removedfolder because all listed extensions were implemented in the code, even though some of the extensions documentation remained inproposedfolder.Removed
init_modeandimplement_in_csrfromsycl_ext_oneapi_device_global.