Add USM support flags

Change-Id: I36ef2eaf22ea75c28efd83a91ac3ef9e8961a824
This commit is contained in:
kamdiedrich 2020-01-31 10:05:51 +01:00 committed by sys_ocldev
parent 8bbb719a97
commit c7274c60e7
7 changed files with 62 additions and 28 deletions

View File

@ -1,5 +1,5 @@
#
# Copyright (C) 2019 Intel Corporation
# Copyright (C) 2019-2020 Intel Corporation
#
# SPDX-License-Identifier: MIT
#
@ -8,6 +8,7 @@ set(NEO_UNIFIED_MEMORY
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
${CMAKE_CURRENT_SOURCE_DIR}/unified_memory.h
${CMAKE_CURRENT_SOURCE_DIR}/unified_memory.cpp
${CMAKE_CURRENT_SOURCE_DIR}/usm_memory_support.h
)
set_property(GLOBAL PROPERTY NEO_UNIFIED_MEMORY ${NEO_UNIFIED_MEMORY})

View File

@ -0,0 +1,13 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include <cstdint>
constexpr uint64_t UNIFIED_SHARED_MEMORY_ACCESS = 1 << 0;
constexpr uint64_t UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS = 1 << 1;
constexpr uint64_t UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS = 1 << 2;
constexpr uint64_t UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS = 1 << 3;

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2017-2019 Intel Corporation
* Copyright (C) 2017-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -8,7 +8,7 @@
#pragma once
#include "core/helpers/hw_info.h"
#include "public/cl_ext_private.h"
#include "core/unified_memory/usm_memory_support.h"
#include "igfxfmid.h"
@ -28,11 +28,11 @@ class HwInfoConfig {
int configureHwInfo(const HardwareInfo *inHwInfo, HardwareInfo *outHwInfo, OSInterface *osIface);
virtual int configureHardwareCustom(HardwareInfo *hwInfo, OSInterface *osIface) = 0;
virtual void adjustPlatformForProductFamily(HardwareInfo *hwInfo) = 0;
virtual cl_unified_shared_memory_capabilities_intel getHostMemCapabilities() = 0;
virtual cl_unified_shared_memory_capabilities_intel getDeviceMemCapabilities() = 0;
virtual cl_unified_shared_memory_capabilities_intel getSingleDeviceSharedMemCapabilities() = 0;
virtual cl_unified_shared_memory_capabilities_intel getCrossDeviceSharedMemCapabilities() = 0;
virtual cl_unified_shared_memory_capabilities_intel getSharedSystemMemCapabilities() = 0;
virtual uint64_t getHostMemCapabilities() = 0;
virtual uint64_t getDeviceMemCapabilities() = 0;
virtual uint64_t getSingleDeviceSharedMemCapabilities() = 0;
virtual uint64_t getCrossDeviceSharedMemCapabilities() = 0;
virtual uint64_t getSharedSystemMemCapabilities() = 0;
uint32_t threadsPerEu;
};
@ -45,11 +45,11 @@ class HwInfoConfigHw : public HwInfoConfig {
}
int configureHardwareCustom(HardwareInfo *hwInfo, OSInterface *osIface) override;
void adjustPlatformForProductFamily(HardwareInfo *hwInfo) override;
cl_unified_shared_memory_capabilities_intel getHostMemCapabilities() override;
cl_unified_shared_memory_capabilities_intel getDeviceMemCapabilities() override;
cl_unified_shared_memory_capabilities_intel getSingleDeviceSharedMemCapabilities() override;
cl_unified_shared_memory_capabilities_intel getCrossDeviceSharedMemCapabilities() override;
cl_unified_shared_memory_capabilities_intel getSharedSystemMemCapabilities() override;
uint64_t getHostMemCapabilities() override;
uint64_t getDeviceMemCapabilities() override;
uint64_t getSingleDeviceSharedMemCapabilities() override;
uint64_t getCrossDeviceSharedMemCapabilities() override;
uint64_t getSharedSystemMemCapabilities() override;
protected:
HwInfoConfigHw() {}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019 Intel Corporation
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -9,27 +9,27 @@
namespace NEO {
template <PRODUCT_FAMILY gfxProduct>
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<gfxProduct>::getHostMemCapabilities() {
return (CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL | CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL);
uint64_t HwInfoConfigHw<gfxProduct>::getHostMemCapabilities() {
return (UNIFIED_SHARED_MEMORY_ACCESS | UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS);
}
template <PRODUCT_FAMILY gfxProduct>
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<gfxProduct>::getDeviceMemCapabilities() {
return (CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL | CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL);
uint64_t HwInfoConfigHw<gfxProduct>::getDeviceMemCapabilities() {
return (UNIFIED_SHARED_MEMORY_ACCESS | UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS);
}
template <PRODUCT_FAMILY gfxProduct>
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<gfxProduct>::getSingleDeviceSharedMemCapabilities() {
return (CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL | CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL);
uint64_t HwInfoConfigHw<gfxProduct>::getSingleDeviceSharedMemCapabilities() {
return (UNIFIED_SHARED_MEMORY_ACCESS | UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS);
}
template <PRODUCT_FAMILY gfxProduct>
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<gfxProduct>::getCrossDeviceSharedMemCapabilities() {
uint64_t HwInfoConfigHw<gfxProduct>::getCrossDeviceSharedMemCapabilities() {
return 0;
}
template <PRODUCT_FAMILY gfxProduct>
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<gfxProduct>::getSharedSystemMemCapabilities() {
uint64_t HwInfoConfigHw<gfxProduct>::getSharedSystemMemCapabilities() {
return 0;
}

View File

@ -27,6 +27,7 @@ set(IGDRCL_SRCS_tests_memory_manager
${CMAKE_CURRENT_SOURCE_DIR}/physical_address_allocator_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/surface_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/unified_memory_manager_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/unified_memory_tests.cpp
)
get_property(NEO_CORE_UNIFIED_MEMORY_TESTS GLOBAL PROPERTY NEO_CORE_UNIFIED_MEMORY_TESTS)

View File

@ -0,0 +1,19 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "core/unified_memory/unified_memory.h"
#include "core/unified_memory/usm_memory_support.h"
#include "public/cl_ext_private.h"
#include "gtest/gtest.h"
TEST(UnifiedMemoryTests, givenCLUSMMemorySupportFlagsWhenUsingUnifiedMemorySupportFlagsThenEverythingMatch) {
static_assert(CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL == UNIFIED_SHARED_MEMORY_ACCESS, "Flags value difference");
static_assert(CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL == UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS, "Flags value difference");
static_assert(CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL == UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS, "Flags value difference");
static_assert(CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL == UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS, "Flags value difference");
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2019 Intel Corporation
* Copyright (C) 2018-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -21,27 +21,27 @@
namespace NEO {
template <>
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<IGFX_UNKNOWN>::getHostMemCapabilities() {
uint64_t HwInfoConfigHw<IGFX_UNKNOWN>::getHostMemCapabilities() {
return 0;
}
template <>
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<IGFX_UNKNOWN>::getDeviceMemCapabilities() {
uint64_t HwInfoConfigHw<IGFX_UNKNOWN>::getDeviceMemCapabilities() {
return 0;
}
template <>
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<IGFX_UNKNOWN>::getSingleDeviceSharedMemCapabilities() {
uint64_t HwInfoConfigHw<IGFX_UNKNOWN>::getSingleDeviceSharedMemCapabilities() {
return 0;
}
template <>
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<IGFX_UNKNOWN>::getCrossDeviceSharedMemCapabilities() {
uint64_t HwInfoConfigHw<IGFX_UNKNOWN>::getCrossDeviceSharedMemCapabilities() {
return 0;
}
template <>
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<IGFX_UNKNOWN>::getSharedSystemMemCapabilities() {
uint64_t HwInfoConfigHw<IGFX_UNKNOWN>::getSharedSystemMemCapabilities() {
return 0;
}