From 5123470406c685bcf69c501d6f0137301ae8ce60 Mon Sep 17 00:00:00 2001 From: Dmitry Vodopyanov Date: Fri, 30 Jun 2023 15:12:28 +0200 Subject: [PATCH] [SYCL] Implement sycl_ext_oneapi_device_architecture on host for Level Zero and OpenCL (#9843) This patch introduces new host API for sycl_ext_oneapi_device_architecture extension and implements it, currently only for Level Zero and OpenCL Depends on - https://github.com/oneapi-src/unified-runtime/pull/573 - https://github.com/intel/llvm/pull/9873 - https://github.com/intel/llvm/pull/9979 - https://github.com/intel/llvm/pull/10054 --- ur_level_zero_common.cpp | 4 ++++ ur_level_zero_device.cpp | 10 ++++++++++ ur_level_zero_device.hpp | 1 + 3 files changed, 15 insertions(+) diff --git a/ur_level_zero_common.cpp b/ur_level_zero_common.cpp index 4603fbe741..c039407236 100644 --- a/ur_level_zero_common.cpp +++ b/ur_level_zero_common.cpp @@ -239,6 +239,10 @@ ze_structure_type_t getZeStructureType() { return ZE_STRUCTURE_TYPE_DEVICE_MEMORY_EXT_PROPERTIES; } template <> +ze_structure_type_t getZeStructureType() { + return ZE_STRUCTURE_TYPE_DEVICE_IP_VERSION_EXT; +} +template <> ze_structure_type_t getZeStructureType() { return ZE_STRUCTURE_TYPE_DEVICE_MEMORY_ACCESS_PROPERTIES; } diff --git a/ur_level_zero_device.cpp b/ur_level_zero_device.cpp index 6654b2a66c..1bb49f848c 100644 --- a/ur_level_zero_device.cpp +++ b/ur_level_zero_device.cpp @@ -396,6 +396,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo( uint32_t{1}); case UR_DEVICE_INFO_GLOBAL_MEM_CACHE_SIZE: return ReturnValue(uint64_t{Device->ZeDeviceCacheProperties->cacheSize}); + case UR_DEVICE_INFO_IP_VERSION: + return ReturnValue(uint32_t{Device->ZeDeviceIpVersionExt->ipVersion}); case UR_DEVICE_INFO_MAX_PARAMETER_SIZE: return ReturnValue( size_t{Device->ZeDeviceModuleProperties->maxArgumentsSize}); @@ -908,6 +910,14 @@ ur_result_t ur_device_handle_t_::initialize(int SubSubDeviceOrdinal, ZE_CALL_NOCHECK(zeDeviceGetComputeProperties, (ZeDevice, &Properties)); }; + ZeDeviceIpVersionExt.Compute = + [ZeDevice](ze_device_ip_version_ext_t &Properties) { + ze_device_properties_t P; + P.stype = ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES; + P.pNext = (void *)&Properties; + ZE_CALL_NOCHECK(zeDeviceGetProperties, (ZeDevice, &P)); + }; + ZeDeviceImageProperties.Compute = [ZeDevice](ze_device_image_properties_t &Properties) { ZE_CALL_NOCHECK(zeDeviceGetImageProperties, (ZeDevice, &Properties)); diff --git a/ur_level_zero_device.hpp b/ur_level_zero_device.hpp index ca010ef3e0..dfd9a537ae 100644 --- a/ur_level_zero_device.hpp +++ b/ur_level_zero_device.hpp @@ -168,4 +168,5 @@ struct ur_device_handle_t_ : _ur_object { ZeCache> ZeDeviceMemoryAccessProperties; ZeCache> ZeDeviceCacheProperties; + ZeCache> ZeDeviceIpVersionExt; };