Add CMake support for PAL backend
Change-Id: Id0673d43217be305aa4ca7a612c416baee3fb23c
[ROCm/clr commit: da5f4c554e]
Tento commit je obsažen v:
@@ -9,6 +9,10 @@ set(USE_COMGR_LIBRARY "yes")
|
||||
add_definitions(-DUSE_COMGR_LIBRARY -DCOMGR_DYN_DLL)
|
||||
add_definitions(-DBSD_LIBELF)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
add_compile_options("-Wno-ignored-attributes")
|
||||
endif()
|
||||
|
||||
find_package(amd_comgr REQUIRED CONFIG
|
||||
PATHS
|
||||
/opt/rocm/
|
||||
@@ -32,7 +36,7 @@ find_library( OpenCL REQUIRED CONFIG
|
||||
find_path(OPENCL_INCLUDE_DIR
|
||||
NAMES OpenCL/cl.h CL/cl.h
|
||||
PATH_SUFFIXES include opencl/include inc include/x86_64 include/x64
|
||||
PATHS /opt/rocm
|
||||
PATHS /opt/rocm
|
||||
DOC "OpenCL include header OpenCL/cl.h or CL/cl.h"
|
||||
)
|
||||
|
||||
@@ -86,11 +90,16 @@ include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/backends/common)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/elf/utils/common)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/elf/utils/libelf)
|
||||
|
||||
option(BUILD_PAL "Build PAL backend" OFF)
|
||||
if (BUILD_PAL)
|
||||
add_definitions(-DWITH_PAL_DEVICE)
|
||||
add_subdirectory(device/pal)
|
||||
|
||||
add_definitions(-DAMD_LIBELF)
|
||||
add_subdirectory(compiler/sc/HSAIL)
|
||||
endif()
|
||||
add_subdirectory(device/rocm)
|
||||
|
||||
|
||||
|
||||
|
||||
#find_package(amd_comgr REQUIRED CONFIG)
|
||||
include_directories("$<TARGET_PROPERTY:amd_comgr,INTERFACE_INCLUDE_DIRECTORIES>")
|
||||
set(COMGR_CPP device/comgrctx.cpp)
|
||||
@@ -134,17 +143,32 @@ add_library(oclruntime OBJECT
|
||||
|
||||
set_target_properties(oclruntime PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
add_library(amdvdi_static STATIC
|
||||
add_library(amdvdi_static STATIC
|
||||
$<TARGET_OBJECTS:oclruntime>
|
||||
$<TARGET_OBJECTS:oclrocm>
|
||||
$<TARGET_OBJECTS:oclelf_obj>
|
||||
)
|
||||
|
||||
set_target_properties(amdvdi_static PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
target_link_libraries(amdvdi_static PUBLIC Threads::Threads)
|
||||
target_link_libraries(amdvdi_static PUBLIC dl ${ROCT_LIBRARIES} ${ROCR_LIBRARIES} )
|
||||
|
||||
if (BUILD_PAL)
|
||||
target_link_libraries(amdvdi_static PRIVATE vdipal)
|
||||
target_link_libraries(amdvdi_static PRIVATE amdhsaloader)
|
||||
export(TARGETS amdvdi_static vdipal amdhsaloader amdhsacode pal addrlib vam metrohash cwpack gpuopen ddCore mpack rapidjson
|
||||
FILE "${CMAKE_CURRENT_BINARY_DIR}/amdvdi_staticTargets.cmake"
|
||||
)
|
||||
else()
|
||||
export(TARGETS amdvdi_static
|
||||
FILE "${CMAKE_CURRENT_BINARY_DIR}/amdvdi_staticTargets.cmake"
|
||||
)
|
||||
endif()
|
||||
|
||||
#add_library(oclelf STATIC IMPORTED)
|
||||
#set_target_properties(oclelf PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/libelf/liboclelf.a")
|
||||
#target_link_libraries(oclruntime_static PRIVATE oclelf)
|
||||
target_link_libraries(amdvdi_static PUBLIC Threads::Threads)
|
||||
target_link_libraries(amdvdi_static PUBLIC dl ${ROCT_LIBRARIES} ${ROCR_LIBRARIES} )
|
||||
|
||||
if (UNIX)
|
||||
set(VDI_DEFAULT_INSTALL_PREFIX "/opt/rocm/vdi")
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
###
|
||||
file(STRINGS palcdefs PAL_MAJOR_VERSION REGEX "^PAL_MAJOR_VERSION = [0-9]+")
|
||||
string(REGEX REPLACE "PAL_MAJOR_VERSION = " "" PAL_MAJOR_VERSION ${PAL_MAJOR_VERSION})
|
||||
|
||||
file(STRINGS palcdefs GPUOPEN_MAJOR_VERSION REGEX "^GPUOPEN_MAJOR_VERSION = [0-9]+")
|
||||
string(REGEX REPLACE "GPUOPEN_MAJOR_VERSION = " "" GPUOPEN_MAJOR_VERSION ${GPUOPEN_MAJOR_VERSION})
|
||||
|
||||
### Create PAL backend library for VDI
|
||||
add_library(vdipal STATIC "")
|
||||
|
||||
# Add defines necessary for PAL build
|
||||
set(PAL_CLIENT_INTERFACE_MAJOR_VERSION ${PAL_MAJOR_VERSION}
|
||||
CACHE STRING "PAL major interface: ${PAL_MAJOR_VERSION}" FORCE)
|
||||
set(GPUOPEN_CLIENT_INTERFACE_MAJOR_VERSION ${GPUOPEN_MAJOR_VERSION}
|
||||
CACHE STRING "GPU open major interface: ${GPUOPEN_MAJOR_VERSION}" FORCE)
|
||||
set(GPUOPEN_CLIENT_INTERFACE_MINOR_VERSION "0" CACHE STRING "GPU open minor interface: 0" FORCE)
|
||||
|
||||
set(PAL_CLIENT "OCL" CACHE STRING "Build PAL OCL support" FORCE)
|
||||
|
||||
set(PAL_BUILD_GPUOPEN ON CACHE BOOL "Build GPUOpen support")
|
||||
set(PAL_BUILD_VIDEO OFF CACHE BOOL "Don't build PAL with Video support")
|
||||
set(PAL_BUILD_SCPC OFF CACHE BOOL "Don't build SCPC")
|
||||
|
||||
set(PAL_CLOSED_SOURCE ON CACHE BOOL "Build closed source PAL")
|
||||
|
||||
set(PAL_BUILD_POLARIS22 ON CACHE BOOL "Build PAL with Polaris support")
|
||||
set(PAL_BUILD_GFX9 ON CACHE BOOL "Build PAL with GFX9 support")
|
||||
set(PAL_BUILD_OSS4 ON CACHE BOOL "Build PAL with OSS4 support")
|
||||
set(PAL_BUILD_VEGA12 ON CACHE BOOL "Build PAL with VEGA12 support")
|
||||
set(PAL_BUILD_VEGA20 ON CACHE BOOL "Build PAL with GFX9 support")
|
||||
set(PAL_BUILD_RAVEN1 ON CACHE BOOL "Build PAL with Raven1 support")
|
||||
set(PAL_BUILD_RAVEN2 ON CACHE BOOL "Build PAL with Raven2 support")
|
||||
set(PAL_BUILD_RENOIR ON CACHE BOOL "Build PAL with Renoir support")
|
||||
|
||||
set(PAL_BUILD_GFX10 ON CACHE BOOL "Build PAL with GFX10 support")
|
||||
set(PAL_BUILD_NAVI12 ON CACHE BOOL "Build PAL with Navi12 support")
|
||||
set(PAL_BUILD_NAVI14 ON CACHE BOOL "Build PAL with Navi14 support")
|
||||
|
||||
option(PAL_DEVELOPER_BUILD "No developer build" OFF)
|
||||
|
||||
set(PYTHON_EXECUTABLE /usr/bin/python3)
|
||||
|
||||
# Build PAL . . .
|
||||
set(GLOBAL_ROOT_SRC_DIR ${CMAKE_SOURCE_DIR})
|
||||
add_subdirectory(palbe)
|
||||
|
||||
# Setup defines for the client compilation
|
||||
target_compile_definitions(vdipal PRIVATE
|
||||
PAL_CLIENT_INTERFACE_MAJOR_VERSION=${PAL_CLIENT_INTERFACE_MAJOR_VERSION})
|
||||
target_compile_definitions(vdipal PRIVATE
|
||||
GPUOPEN_CLIENT_INTERFACE_MAJOR_VERSION=${GPUOPEN_CLIENT_INTERFACE_MAJOR_VERSION})
|
||||
target_compile_definitions(vdipal PRIVATE
|
||||
GPUOPEN_CLIENT_INTERFACE_MINOR_VERSION=${GPUOPEN_CLIENT_INTERFACE_MINOR_VERSION})
|
||||
|
||||
target_compile_definitions(vdipal PRIVATE PAL_CLIENT_OCL=1)
|
||||
|
||||
target_compile_definitions(vdipal PRIVATE PAL_GPUOPEN_OCL=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_GPUOPEN=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_SCPC=0)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_CLOSED_SOURCE=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_GPUOPEN=1)
|
||||
|
||||
# GFX9 targets
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_POLARIS22=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_GFX9=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_OSS4=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_VEGA12=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_VEGA20=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_RAVEN1=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_RAVEN2=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_RENOIR=1)
|
||||
|
||||
# GFX10 targets
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_GFX10=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_GFX103=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_NAVI12=1)
|
||||
target_compile_definitions(vdipal PRIVATE PAL_BUILD_NAVI14=1)
|
||||
|
||||
target_compile_definitions(vdipal PRIVATE OPENCL_MAINLINE=1)
|
||||
|
||||
if(${USE_COMGR_LIBRARY} MATCHES "yes")
|
||||
target_compile_definitions(vdipal PRIVATE USE_COMGR_LIBRARY -DCOMGR_DYN_DLL)
|
||||
if (DEFINED COMGR_INCLUDES AND NOT ${COMGR_INCLUDES} STREQUAL "")
|
||||
target_include_directories(${COMGR_INCLUDES})
|
||||
endif() # if (DEFINED COMGR_INCLUDES AND NOT ${COMGR_INCLUDES} STREQUAL "")
|
||||
endif()
|
||||
|
||||
target_include_directories(vdipal PRIVATE ${CMAKE_SOURCE_DIR}/compiler/sc/HSAIL/include)
|
||||
target_include_directories(vdipal PRIVATE ${CMAKE_SOURCE_DIR}/../asic_reg)
|
||||
|
||||
target_include_directories(vdipal PRIVATE ${CMAKE_SOURCE_DIR}/device/pal/palbe)
|
||||
target_include_directories(vdipal PRIVATE ${CMAKE_SOURCE_DIR}/device/pal/palbe/inc)
|
||||
target_include_directories(vdipal PRIVATE ${CMAKE_SOURCE_DIR}/device/pal/palbe/inc/core)
|
||||
target_include_directories(vdipal PRIVATE ${CMAKE_SOURCE_DIR}/device/pal/palbe/inc/util)
|
||||
target_include_directories(vdipal PRIVATE ${CMAKE_SOURCE_DIR}/device/pal/palbe/shared/gpuopen/inc)
|
||||
target_include_directories(vdipal PRIVATE ${CMAKE_SOURCE_DIR}/device/pal/palbe/shared/gpuopen/third_party/metrohash/src)
|
||||
target_include_directories(vdipal PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
target_sources(vdipal PRIVATE
|
||||
palappprofile.cpp
|
||||
palblit.cpp
|
||||
palconstbuf.cpp
|
||||
palcounters.cpp
|
||||
paldebugmanager.cpp
|
||||
paldevice.cpp
|
||||
paldeviced3d10.cpp
|
||||
paldeviced3d11.cpp
|
||||
paldeviced3d9.cpp
|
||||
paldevicegl.cpp
|
||||
palgpuopen.cpp
|
||||
palkernel.cpp
|
||||
palmemory.cpp
|
||||
palprintf.cpp
|
||||
palprogram.cpp
|
||||
palresource.cpp
|
||||
palschedcl.cpp
|
||||
palsettings.cpp
|
||||
palthreadtrace.cpp
|
||||
paltimestamp.cpp
|
||||
palvirtual.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(vdipal PUBLIC pal)
|
||||
|
||||
set_target_properties(vdipal PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# PAL interface versions
|
||||
PAL_MAJOR_VERSION = 563
|
||||
GPUOPEN_MAJOR_VERSION = 41
|
||||
@@ -35,7 +35,6 @@
|
||||
#include "palLib.h"
|
||||
#include "palPlatform.h"
|
||||
#include "palDevice.h"
|
||||
#include "cz_id.h"
|
||||
#include "acl.h"
|
||||
|
||||
#include "vdi_common.hpp"
|
||||
@@ -546,22 +545,16 @@ void NullDevice::fillDeviceInfo(const Pal::DeviceProperties& palProp,
|
||||
|
||||
info_.platform_ = AMD_PLATFORM;
|
||||
|
||||
if (false && (asicRevision() == Pal::AsicRevision::Carrizo) &&
|
||||
ASICREV_IS_CARRIZO_BRISTOL(palProp.revisionId)) {
|
||||
const static char* bristol = "Bristol Ridge";
|
||||
::strcpy(info_.name_, bristol);
|
||||
} else {
|
||||
if (settings().useLightning_) {
|
||||
::strcpy(info_.name_, hwInfo()->machineTargetLC_);
|
||||
if (hwInfo()->xnackEnabled_) {
|
||||
::strcat(info_.name_, "+xnack");
|
||||
}
|
||||
if (info_.sramEccEnabled_) {
|
||||
::strcat(info_.name_, "+sram-ecc");
|
||||
}
|
||||
} else {
|
||||
::strcpy(info_.name_, hwInfo()->machineTarget_);
|
||||
if (settings().useLightning_) {
|
||||
::strcpy(info_.name_, hwInfo()->machineTargetLC_);
|
||||
if (hwInfo()->xnackEnabled_) {
|
||||
::strcat(info_.name_, "+xnack");
|
||||
}
|
||||
if (info_.sramEccEnabled_) {
|
||||
::strcat(info_.name_, "+sram-ecc");
|
||||
}
|
||||
} else {
|
||||
::strcpy(info_.name_, hwInfo()->machineTarget_);
|
||||
}
|
||||
|
||||
::strcpy(info_.vendor_, "Advanced Micro Devices, Inc.");
|
||||
|
||||
@@ -21,8 +21,6 @@
|
||||
#include "os/os.hpp"
|
||||
#include "utils/flags.hpp"
|
||||
#include "include/aclTypes.h"
|
||||
#include "utils/amdilUtils.hpp"
|
||||
#include "utils/bif_section_labels.hpp"
|
||||
#include "device/pal/palprogram.hpp"
|
||||
#include "device/pal/palblit.hpp"
|
||||
#include <fstream>
|
||||
|
||||
@@ -203,7 +203,7 @@ bool Settings::create(const Pal::DeviceProperties& palProp,
|
||||
}
|
||||
|
||||
switch (palProp.revision) {
|
||||
case Pal::AsicRevision::Navi14:
|
||||
case Pal::AsicRevision::Navi14:
|
||||
case Pal::AsicRevision::Navi12:
|
||||
case Pal::AsicRevision::Navi10:
|
||||
case Pal::AsicRevision::Navi10_A0:
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#endif //_WIN32
|
||||
|
||||
#if (!defined(BUILD_HSA_TARGET) && defined(WITH_HSA_DEVICE) && \
|
||||
defined(WITH_AMDGPU_PRO)) || defined(_WIN32) || defined(WITH_PAL_DEVICE)
|
||||
defined(WITH_AMDGPU_PRO)) || defined(_WIN32)
|
||||
#define WITH_LIQUID_FLASH 1
|
||||
#endif
|
||||
|
||||
|
||||
Odkázat v novém úkolu
Zablokovat Uživatele