From 1e22744e85c9ea4830979f7a9820bd6176dab9d1 Mon Sep 17 00:00:00 2001 From: "Zhao, Maosu" Date: Thu, 31 Oct 2024 20:03:09 -0700 Subject: [PATCH 1/2] [UR][DeviceASAN] Simplify shadow mapping logic for GPU device --- libdevice/sanitizer_utils.cpp | 12 ++++-------- sycl/cmake/modules/FetchUnifiedRuntime.cmake | 2 +- sycl/cmake/modules/UnifiedRuntimeTag.cmake | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/libdevice/sanitizer_utils.cpp b/libdevice/sanitizer_utils.cpp index e5d5ac5afdc30..765b4e2021349 100644 --- a/libdevice/sanitizer_utils.cpp +++ b/libdevice/sanitizer_utils.cpp @@ -223,14 +223,10 @@ inline uptr MemToShadow_PVC(uptr addr, uint32_t as) { auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; if (as == ADDRESS_SPACE_GLOBAL) { // global - uptr shadow_ptr; - if (addr & 0xFF00000000000000) { // Device USM - shadow_ptr = launch_info->GlobalShadowOffset + 0x80000000000 + - ((addr & 0xFFFFFFFFFFFF) >> ASAN_SHADOW_SCALE); - } else { // Only consider 47bit VA - shadow_ptr = launch_info->GlobalShadowOffset + - ((addr & 0x7FFFFFFFFFFF) >> ASAN_SHADOW_SCALE); - } + uptr shadow_ptr = launch_info->GlobalShadowOffset + + (((((addr & 0x8000'0000'0000'0000) >> 16) + addr) & + 0xf'ffff'ffff'ffff) >> + ASAN_SHADOW_SCALE); ASAN_DEBUG( const auto shadow_offset_end = launch_info->GlobalShadowOffsetEnd; diff --git a/sycl/cmake/modules/FetchUnifiedRuntime.cmake b/sycl/cmake/modules/FetchUnifiedRuntime.cmake index 72841724fa01d..d6a0251d63c86 100644 --- a/sycl/cmake/modules/FetchUnifiedRuntime.cmake +++ b/sycl/cmake/modules/FetchUnifiedRuntime.cmake @@ -116,7 +116,7 @@ if(SYCL_UR_USE_FETCH_CONTENT) CACHE PATH "Path to external '${name}' adapter source dir" FORCE) endfunction() - set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git") + set(UNIFIED_RUNTIME_REPO "https://github.com/zhaomaosu/unified-runtime.git") include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/UnifiedRuntimeTag.cmake) set(UMF_BUILD_EXAMPLES OFF CACHE INTERNAL "EXAMPLES") diff --git a/sycl/cmake/modules/UnifiedRuntimeTag.cmake b/sycl/cmake/modules/UnifiedRuntimeTag.cmake index 6f3f57255c75b..eae4881fe23b5 100644 --- a/sycl/cmake/modules/UnifiedRuntimeTag.cmake +++ b/sycl/cmake/modules/UnifiedRuntimeTag.cmake @@ -4,4 +4,4 @@ # Date: Thu Oct 31 14:05:55 2024 +0000 # Merge pull request #2228 from nrspruit/copy_engine_refactor # [L0] Refactor Copy Engine Usage checks for Performance -set(UNIFIED_RUNTIME_TAG 3d58884b4939d9bd095c917f8dd823ac8486684c) +set(UNIFIED_RUNTIME_TAG simplify-shadow-mapping) From 5150c92c5ebd6879038a5d6e60ae6c718af10073 Mon Sep 17 00:00:00 2001 From: Maosu Zhao Date: Mon, 4 Nov 2024 13:47:51 +0800 Subject: [PATCH 2/2] Update MemToShadow for DG2 device --- libdevice/sanitizer_utils.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/libdevice/sanitizer_utils.cpp b/libdevice/sanitizer_utils.cpp index 765b4e2021349..321d24d2b02a7 100644 --- a/libdevice/sanitizer_utils.cpp +++ b/libdevice/sanitizer_utils.cpp @@ -143,14 +143,8 @@ inline uptr MemToShadow_DG2(uptr addr, uint32_t as) { auto launch_info = (__SYCL_GLOBAL__ const LaunchInfo *)__AsanLaunchInfo; if (as == ADDRESS_SPACE_GLOBAL) { // global - uptr shadow_ptr; - if (addr & 0xFFFF000000000000ULL) { // Device USM - shadow_ptr = launch_info->GlobalShadowOffset + 0x80000000000ULL + - ((addr & 0x7FFFFFFFFFFFULL) >> ASAN_SHADOW_SCALE); - } else { // Host/Shared USM - shadow_ptr = - launch_info->GlobalShadowOffset + (addr >> ASAN_SHADOW_SCALE); - } + uptr shadow_ptr = launch_info->GlobalShadowOffset + + ((addr & 0x0000'FFFF'FFFF'FFFFULL) >> ASAN_SHADOW_SCALE); ASAN_DEBUG( const auto shadow_offset_end = launch_info->GlobalShadowOffsetEnd;