Skip to content

Commit b9c5090

Browse files
committed
GPA 3.5 updates
1 parent 394b9a9 commit b9c5090

File tree

179 files changed

+4739
-35322
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

179 files changed

+4739
-35322
lines changed

BUILD.md

+2-8
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ order to clone/update any dependent repositories.
3131
present on the system, this script will instead do a "git pull" on those repositories to ensure that they are up to date. Please re-run
3232
this script everytime you pull new changes from GPA repository.
3333
* NOTE: For GPA 3.3 or newer, if you are updating an existing clone of the GPA repo from a GPA release prior than 3.3, you will first need to delete the Common/Lib/Ext/GoogleTest directory. Starting with GPA 3.3, GPA is now using a fork of the official GoogleTest repo. Failure to remove this directory will lead to git errors when running PreBuild.py or UpdateCommon.py.
34-
* This script will also download and execute the Vulkan SDK installer.
34+
* This script will also download and execute the Vulkan SDK installer.
3535
* On Windows, running the installer may require elevation. If you've previously installed the required Vulkan version, UpdateCommon will simply copy the files form the default installation location into the correct place into the GPUPerfAPI directory tree.
3636
* UpdateCommon is set up to install the version of the Vulkan SDK which was used during development. If you want to use a newer version of the SDK, the following file will need to be updated:
3737
* [UpdateCommonMap.py](Scripts/UpdateCommonMap.py)
@@ -50,7 +50,6 @@ this script everytime you pull new changes from GPA repository.
5050
* `--skipvulkan`: Does not generate build files for Vulkan version of GPA
5151
* `--skipopengl`: Does not generate build files for OpenGL version of GPA
5252
* `--skipopencl`: Does not generate build files for OpenCL version of GPA
53-
* `--skiprocm`: Does not generate build files for ROCm version of GPA (Linux only)
5453
* `--skiptests`: Does not generate build files for unit tests
5554
* `--skipdocs`: Does not generate build files for documentation
5655
* `--cmakecmd="CMD"`: Override the "cmake" command with "CMD"
@@ -78,11 +77,6 @@ this script everytime you pull new changes from GPA repository.
7877
##### Prerequisites
7978
* Install the Mesa common development package: sudo apt-get install mesa-common-dev
8079
* For 32-bit builds, install the multilib packages: sudo apt-get install gcc-multilib g++-multilib
81-
* In order to build the ROCm/HSA version of GPA, you will need all or part of the ROCm stack installed
82-
* Follow the ROCm installation instructions to install either rocm-dkms or rocm-dev: https://rocm.github.io/ROCmInstall.html
83-
* In addition, please make sure that the optional ROCm package "rocprofiler-dev" is installed:
84-
* Ubuntu: sudo apt install rocprofiler-dev
85-
* CentOS: sudo yum install rocprofiler-dev
8680

8781
##### Build Instructions
8882
* Execute "make" in the CMakeBuild/x64/debug to build the 64-bit debug version of GPA
@@ -102,7 +96,7 @@ and [docs](docs) directories.
10296
There are three ways to execute the tool:
10397
* With no parameters - it opens the user interface with no fields prepopulated
10498
* With two parameters - it opens the user interface with the two main fields prepopulated. When you press the "Compile Public Counters" button it will load the correct input files and generate the output files in the correct location.
105-
* Param 1: API -- the API to compile counters for (ex: GL, CL, HSA, DX11, DX12, VK, etc).
99+
* Param 1: API -- the API to compile counters for (ex: GL, CL, DX11, DX12, VK, etc).
106100
* Param 2: HW generation: the generation to compile counters for (ex: Gfx6, Gfx7, Gfx8, etc.)
107101
* With six or seven parameters - the user interface does not open. It simply generates the c++ files using the specified input and output file locations
108102
* Param 1: Counter names file - text file containing hardware counter names and type (CounterNames[API][GEN].txt)

CMakeLists.txt

+11-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.5.1)
33

44
set(DEPTH "./")
55

6-
message("CMake: Generating project files for GPA....")
6+
message(STATUS "Generating project files for GPA....")
77
set(GPA_CMAKE_MODULES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules)
88

99
include(${GPA_CMAKE_MODULES_DIR}/CommonDefs.cmake)
@@ -15,8 +15,17 @@ endif()
1515

1616
set(GPA_ALL_OPEN_SOURCE ON)
1717

18+
if(${BUILD_ANDROID})
19+
include (${GPA_CMAKE_MODULES_DIR}/GPA-Android.cmake)
20+
21+
project(GPUPerfAPI-Full${AMDTInternalSuffix} VERSION ${GPA_MAJOR_VERSION}.${GPA_MINOR_VERSION} LANGUAGES C CXX)
22+
include(${GPA_CMAKE_MODULES_DIR}/Targets.cmake)
23+
24+
return()
25+
endif()
26+
1827
## Define the GPA solution name
1928
project(GPUPerfAPI${AMDTInternalSuffix} VERSION ${GPA_MAJOR_VERSION}.${GPA_MINOR_VERSION} LANGUAGES C CXX)
2029

2130
include(${GPA_CMAKE_MODULES_DIR}/Targets.cmake)
22-
message("CMake: Finished generating project files for GPA.")
31+
message(STATUS "Finished generating project files for GPA.")

CMakeModules/BuildFlags.cmake

+17-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved.
1+
## Copyright (c) 2018-2019 Advanced Micro Devices, Inc. All rights reserved.
22
cmake_minimum_required(VERSION 3.5.1)
33

44
## GPA has only Debug and Release
@@ -30,12 +30,6 @@ if(${usingscript})
3030
set(build-debug OFF CACHE BOOL "Turn on to generate debug config of the project")
3131
endif()
3232

33-
if(${build-32bit})
34-
set(CMAKE_SIZEOF_VOID_P 4)
35-
else()
36-
set(CMAKE_SIZEOF_VOID_P 8)
37-
endif()
38-
3933
if(NOT WIN32)
4034
if(${build-debug})
4135
set(CMAKE_BUILD_TYPE debug)
@@ -45,6 +39,12 @@ if(${usingscript})
4539
endif()
4640
endif()
4741

42+
if(${build-32bit})
43+
set(CMAKE_SIZEOF_VOID_P 4)
44+
else()
45+
set(CMAKE_SIZEOF_VOID_P 8)
46+
endif()
47+
4848
# DX11 variable
4949
if(NOT DEFINED skipdx11)
5050
set(skipdx11 OFF CACHE BOOL "Turn on to skip DX11 in the build" FORCE)
@@ -70,11 +70,6 @@ if(NOT DEFINED skipopencl)
7070
set(skipopencl OFF CACHE BOOL "Turn on to skip OpenCL in the build" FORCE)
7171
endif()
7272

73-
# ROCm variable
74-
if(NOT DEFINED skiprocm)
75-
set(skiprocm OFF CACHE BOOL "Turn on to skip ROCm in the build" FORCE)
76-
endif()
77-
7873
# Tests variable
7974
if(NOT DEFINED skiptests)
8075
set(skiptests OFF CACHE BOOL "Turn on to skip Tests in the build" FORCE)
@@ -83,4 +78,14 @@ endif()
8378
# Sphinx documentation
8479
if(NOT DEFINED skipdocs)
8580
set(skipdocs OFF CACHE BOOL "Turn on to skip sphinx documentation in the build" FORCE)
81+
endif()
82+
83+
# Default Output directory
84+
if(NOT DEFINED USE_DEFAULT_OUTPUT_DIRECTORY)
85+
set(USE_DEFAULT_OUTPUT_DIRECTORY ON)
86+
endif()
87+
88+
# Default compiler
89+
if(NOT DEFINED USE_DEFAULT_COMPILER)
90+
set(USE_DEFAULT_COMPILER ON)
8691
endif()

CMakeModules/Common.cmake

+25-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved.
1+
## Copyright (c) 2018-2019 Advanced Micro Devices, Inc. All rights reserved.
22
cmake_minimum_required(VERSION 3.5.1)
33

44
include(${GPA_CMAKE_MODULES_DIR}/CommonDefs.cmake)
@@ -15,10 +15,11 @@ if(WIN32)
1515
add_compile_options("$<$<CONFIG:RELEASE>:/MT>"
1616
"$<$<CONFIG:DEBUG>:/MTd>")
1717
set(AMDTCrt "MT")
18-
add_compile_options(-DUNICODE
19-
-D_UNICODE)
2018
endif()
2119

20+
add_compile_options(-DUNICODE
21+
-D_UNICODE)
22+
2223
if(WIN32)
2324
set(CURRENT_CONFIG "Debug/Release")
2425
else()
@@ -27,26 +28,35 @@ endif()
2728

2829
## Handling project
2930
if(NOT ${ProjectName} STREQUAL "")
30-
message("CMake: Evaluating and including project ${ProjectName} for config ${CURRENT_CONFIG} for ${AMDTPlatform} platform in ${PROJECT_NAME} solution")
31+
message(STATUS "Evaluating and including project ${ProjectName} for config ${CURRENT_CONFIG} for ${AMDTPlatform} platform in ${PROJECT_NAME} solution")
3132
endif()
3233

33-
if(WIN32)
34-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${GPA_OUTPUT_DIR}/Release)
35-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${GPA_OUTPUT_DIR}/Debug)
36-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${GPA_OUTPUT_DIR}/Release)
37-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${GPA_OUTPUT_DIR}/Debug)
38-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${GPA_OUTPUT_DIR}/Release)
39-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${GPA_OUTPUT_DIR}/Debug)
34+
if(${USE_DEFAULT_OUTPUT_DIRECTORY})
35+
if(WIN32)
36+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${GPA_OUTPUT_DIR}/release)
37+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${GPA_OUTPUT_DIR}/debug)
38+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${GPA_OUTPUT_DIR}/release)
39+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${GPA_OUTPUT_DIR}/debug)
40+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${GPA_OUTPUT_DIR}/release)
41+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${GPA_OUTPUT_DIR}/debug)
42+
else()
43+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${GPA_OUTPUT_DIR}/${CMAKE_BUILD_TYPE})
44+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${GPA_OUTPUT_DIR}/${CMAKE_BUILD_TYPE})
45+
endif()
4046
else()
41-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${GPA_OUTPUT_DIR}/${CMAKE_BUILD_TYPE})
42-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${GPA_OUTPUT_DIR}/${CMAKE_BUILD_TYPE})
47+
if(NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY OR NOT DEFINED CMAKE_LIBRARY_OUTPUT_DIRECTORY)
48+
message(FATAL_ERROR "Output Directories are not set.")
49+
endif()
4350
endif()
4451

4552
add_definitions(-DUSE_POINTER_SINGLETON)
4653

4754
if(NOT WIN32)
48-
set(CMAKE_C_COMPILER gcc)
49-
set(CMAKE_CXX_COMPILER g++)
55+
if(${USE_DEFAULT_COMPILER})
56+
set(CMAKE_C_COMPILER gcc)
57+
set(CMAKE_CXX_COMPILER g++)
58+
endif()
59+
5060
set(GPA_COMMON_LINK_ARCHIVE_FLAG -Wl,--whole-archive)
5161
set(GPA_COMMON_LINK_NO_ARCHIVE_FLAG -Wl,--no-whole-archive)
5262
add_compile_options(-Wno-unknown-pragmas -Wno-strict-aliasing -Wno-non-virtual-dtor -Wno-unused-value -msse -fvisibility=hidden)

CMakeModules/CommonDefs.cmake

+2-6
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,6 @@ set(GPA_SRC_VK_REL_PATH "Src/GPUPerfAPIVk")
3737
set(GPA_SRC_VK "${GPA_ROOT}/${GPA_SRC_VK_REL_PATH}")
3838
set(GPA_SRC_CL_REL_PATH "Src/GPUPerfAPICL")
3939
set(GPA_SRC_CL "${GPA_ROOT}/${GPA_SRC_CL_REL_PATH}")
40-
set(GPA_SRC_HSA_REL_PATH "Src/GPUPerfAPIHSA")
41-
set(GPA_SRC_HSA "${GPA_ROOT}/${GPA_SRC_HSA_REL_PATH}")
42-
set(GPA_SRC_ROCM_REL_PATH "Src/GPUPerfAPIROCm")
43-
set(GPA_SRC_ROCM "${GPA_ROOT}/${GPA_SRC_ROCM_REL_PATH}")
4440
set(GPA_SRC_TESTS_REL_PATH "Src/GPUPerfAPIUnitTests")
4541
set(GPA_SRC_TESTS "${GPA_ROOT}/${GPA_SRC_TESTS_REL_PATH}")
4642
set(GPA_AUTOGEN_SRC_TESTS_REL_PATH "Src/AutoGenerated/GPUPerfAPIUnitTests")
@@ -61,6 +57,8 @@ set(GPA_AUTOGEN_PUBLIC_COUNTER_INPUT_FILES_REL_PATH "Src/AutoGenerated/P
6157
set(GPA_AUTOGEN_PUBLIC_COUNTER_INPUT_FILES "${GPA_ROOT}/${GPA_AUTOGEN_PUBLIC_COUNTER_INPUT_FILES_REL_PATH}")
6258
set(GPA_SRC_GL_TRIANGLE_REL_PATH "Src/Examples/OpenGL/GLTriangle")
6359
set(GPA_SRC_GL_TRIANGLE "${GPA_ROOT}/${GPA_SRC_GL_TRIANGLE_REL_PATH}")
60+
set(GPA_SRC_D3D11_TRIANGLE_REL_PATH "Src/Examples/DX11/D3D11Triangle")
61+
set(GPA_SRC_D3D11_TRIANGLE "${GPA_ROOT}/${GPA_SRC_D3D11_TRIANGLE_REL_PATH}")
6462

6563
set(GOOGLETEST_DIR ${COMMON_DIR_LIB}/Ext/GoogleTest)
6664

@@ -77,8 +75,6 @@ set(CMAKE_COMMON_SRC_GLOBAL_TSINGLETON ${COMMON_DIR_SRC}/TS
7775
set(CMAKE_COMMON_LIB_GLOBAL_AMD_ADL ${COMMON_DIR_LIB}/AMD/ADL/Global-ADL.cmake)
7876
set(CMAKE_COMMON_LIB_GLOBAL_AMD_OPENCL_NO_LIB ${COMMON_DIR_LIB}/AMD/APPSDK/Global-OpenCL-NoLib.cmake)
7977
set(CMAKE_COMMON_LIB_GLOBAL_AMD_OPENCL ${COMMON_DIR_LIB}/AMD/APPSDK/Global-OpenCL.cmake)
80-
set(CMAKE_COMMON_LIB_GLOBAL_AMD_HSA_NO_LIB ${COMMON_DIR_LIB}/AMD/HSA/Global-HSAFoundation-NoLib.cmake)
81-
set(CMAKE_COMMON_LIB_GLOBAL_AMD_HSA ${COMMON_DIR_LIB}/AMD/HSA/Global-HSAFoundation.cmake)
8278
set(CMAKE_COMMON_LIB_GLOBAL_EXT_OPENGL ${COMMON_DIR_LIB}/Ext/OpenGL/Global-OpenGL.cmake)
8379
set(CMAKE_COMMON_LIB_GLOBAL_EXT_VULKAN ${COMMON_DIR_LIB}/Ext/Vulkan/Global-Vulkan.cmake)
8480
set(CMAKE_COMMON_LIB_GLOBAL_EXT_WINDOWS_SDK ${COMMON_DIR_LIB}/Ext/Windows-Kits/Global-WindowsSDK.cmake)

CMakeModules/GPA-Android.cmake

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
## Copyright (c) 2019 Advanced Micro Devices, Inc. All rights reserved.
2+
cmake_minimum_required(VERSION 3.5.1)
3+
4+
if (NOT DEFINED ENV{ANDROID_SDK})
5+
message(FATAL_ERROR "ANDROID_SDK is not defined")
6+
endif()
7+
8+
if (NOT DEFINED ENV{ANDROID_NDK})
9+
message(FATAL_ERROR "ANDROID_NDK is not defined")
10+
endif()
11+
12+
if (NOT DEFINED ENV{JAVA_HOME})
13+
message(FATAL_ERROR "JAVA_HOME is not defined")
14+
endif()
15+
16+
# Android variables
17+
set(ANDROID_NDK_PATH $ENV{ANDROID_NDK})
18+
set(ANDROID_SDK_PATH $ENV{ANDROID_SDK})
19+
set(ANDROID_NDK_SHADER_TOOL_PATH ${ANDROID_NDK_PATH}/shader-tools/linux-x86_64)
20+
set(JAVA_HOME_PATH $ENV{JAVA_HOME})
21+
22+
if (NOT DEFINED ANDROID_PLATFORM)
23+
set(ANDROID_PLATFORM 24)
24+
message(STATUS "GPA: Using Android platform level ${ANDROID_PLATFORM}")
25+
endif()
26+
27+
if (NOT DEFINED ANDROID_ABI)
28+
set(ANDROID_ABI x86_64)
29+
message(STATUS "GPA: Using Android abi ${ANDROID_ABI}")
30+
endif()
31+
32+
if (NOT DEFINED ANDROID_NATIVE_API_LEVEL)
33+
set(ANDROID_NATIVE_API_LEVEL 24)
34+
message(STATUS "GPA: Using Android native api level ${ANDROID_NATIVE_API_LEVEL}")
35+
endif()
36+
37+
if(NOT DEFINED ANDROID_STL)
38+
set(ANDROID_STL c++_static)
39+
message(STATUS "GPA: Using Android ${ANDROID_STL} C/C++ STL")
40+
endif()
41+
42+
set(ANDROID_TAGET_PLATFORM_ID ${ANDROID_PLATFORM})
43+
set(ANDROID_NDK_NATIVE_GLUE_DIR "${ANDROID_NDK_PATH}/sources/android/native_app_glue")
44+
set(ANDROID_NDK_INC "${ANDROID_NDK_PATH}/sysroot/usr/include")
45+
set(ANDROID_TARGET_PLATFORM ${ANDROID_SDK_PATH}/platforms/android-${ANDROID_TAGET_PLATFORM_ID})
46+
set(ANDROID_TARGET_JAR ${ANDROID_TARGET_PLATFORM}/android.jar)
47+
set(ANDROID_BUILD_TOOLS ${ANDROID_SDK_PATH}/build-tools/24.0.3)
48+
49+
## Build configurations
50+
set(CMAKE_TOOLCHAIN_FILE ${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake)
51+
set(USE_DEFAULT_COMPILER OFF)
52+
set(USE_DEFAULT_OUTPUT_DIRECTORY OFF)
53+
set(GPA_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Output/Android)
54+
55+
if(${AMDT_INTERNAL_BUILD_FLAG})
56+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${GPA_OUTPUT_DIR}${AMDTInternalSuffix})
57+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${GPA_OUTPUT_DIR}${AMDTInternalSuffix})
58+
else()
59+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${GPA_OUTPUT_DIR})
60+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${GPA_OUTPUT_DIR})
61+
endif()
62+
63+
set(ANDROID_INCLUDE_DIRECTORIES ${ANDROID_NDK_NATIVE_GLUE_DIR}
64+
${ANDROID_NDK_INC})
65+
set(ANDROID_LIBS log android)

CMakeModules/GPA-HSA.cmake

-35
This file was deleted.

CMakeModules/GPA-Vulkan.cmake

+3-2
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ if(${GPA_ALL_OPEN_SOURCE})
2121

2222
set(ADDITIONAL_INCLUDE_DIRECTORIES ${ADDITIONAL_INCLUDE_DIRECTORIES}
2323
${VK_INC_DIRS})
24-
2524
else()
26-
message("CMake: Vulkan SDK not found")
25+
message(STATUS "Vulkan SDK not found")
2726
endif()
2827
else()
2928
include(${CMAKE_COMMON_LIB_GLOBAL_EXT_VULKAN})
3029
endif()
30+
31+
message(STATUS "Using vulkan headers from ${VK_INC_DIRS}, libraries from ${VK_LIB} and tools from ${VK_TOOLS_DIR}")

0 commit comments

Comments
 (0)