CMakeLists.txt cleanup
Add custom_commands to generate the HSA code objects Remove the configure time file generation and add custom commands to generate them at build time. Change-Id: I167dd9befc6c73f32224935eaab74510922b26f4
This commit is contained in:
@@ -5,5 +5,3 @@
|
||||
*.swp
|
||||
*.Po
|
||||
build
|
||||
test/MatrixTranspose/MatrixTranspose
|
||||
test/MatrixTranspose_test/MatrixTranspose
|
||||
|
||||
+66
-109
@@ -20,69 +20,46 @@
|
||||
## IN THE SOFTWARE.
|
||||
################################################################################
|
||||
|
||||
cmake_minimum_required ( VERSION 3.5.0 )
|
||||
cmake_minimum_required(VERSION 3.16.0)
|
||||
|
||||
## Set module name and project name.
|
||||
set ( ROCTRACER_NAME "roctracer" )
|
||||
set ( ROCTRACER_TARGET "${ROCTRACER_NAME}64" )
|
||||
set ( ROCTRACER_LIBRARY "lib${ROCTRACER_TARGET}" )
|
||||
project ( ${ROCTRACER_TARGET} VERSION 4.0.0)
|
||||
set(ROCTRACER_NAME "roctracer")
|
||||
set(ROCTRACER_TARGET "${ROCTRACER_NAME}")
|
||||
|
||||
## Adding default path cmake modules
|
||||
list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules" )
|
||||
## Include common cmake modules
|
||||
include ( utils )
|
||||
## Set build environment
|
||||
include ( env )
|
||||
project(ROCTRACER VERSION 4.0.0)
|
||||
|
||||
## Setup the package version.
|
||||
get_version ( "1.0.0" )
|
||||
|
||||
set ( BUILD_VERSION_MAJOR ${VERSION_MAJOR} )
|
||||
set ( BUILD_VERSION_MINOR ${VERSION_MINOR} )
|
||||
set ( BUILD_VERSION_PATCH ${VERSION_PATCH} )
|
||||
|
||||
if ( DEFINED VERSION_BUILD AND NOT ${VERSION_BUILD} STREQUAL "" )
|
||||
message ( "VERSION BUILD DEFINED ${VERSION_BUILD}" )
|
||||
set ( BUILD_VERSION_PATCH "${BUILD_VERSION_PATCH}-${VERSION_BUILD}" )
|
||||
## Build is not supported on Windows plaform
|
||||
if(WIN32)
|
||||
message(FATAL_ERROR "Windows build is not supported.")
|
||||
endif ()
|
||||
|
||||
set ( LIB_VERSION_MAJOR ${BUILD_VERSION_MAJOR} )
|
||||
set ( LIB_VERSION_MINOR ${BUILD_VERSION_MINOR} )
|
||||
if (DEFINED ENV{ROCM_LIBPATCH_VERSION})
|
||||
set (LIB_VERSION_PATCH $ENV{ROCM_LIBPATCH_VERSION} )
|
||||
else ()
|
||||
set (LIB_VERSION_PATCH ${BUILD_VERSION_PATCH} )
|
||||
## Adding default path cmake modules
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
add_compile_options(-Wall -Werror)
|
||||
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(hsa-runtime64 REQUIRED CONFIG PATHS /opt/rocm/)
|
||||
find_package(HIP REQUIRED CONFIG PATHS /opt/rocm/)
|
||||
|
||||
if(NOT DEFINED LIBRARY_TYPE)
|
||||
set(LIBRARY_TYPE SHARED)
|
||||
endif()
|
||||
set ( LIB_VERSION_STRING "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}" )
|
||||
message ( "-- LIB-VERSION: ${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}" )
|
||||
|
||||
## Set target and root/lib/test directory
|
||||
set ( TARGET_NAME "${ROCTRACER_TARGET}" )
|
||||
set ( ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}" )
|
||||
set ( LIB_DIR "${ROOT_DIR}/src" )
|
||||
set ( TEST_DIR "${ROOT_DIR}/test" )
|
||||
set ( DEST_NAME ${ROCTRACER_NAME} )
|
||||
|
||||
## Build library
|
||||
include ( ${LIB_DIR}/CMakeLists.txt )
|
||||
|
||||
## Set the VERSION and SOVERSION values
|
||||
set_property ( TARGET ${TARGET_NAME} PROPERTY VERSION "${LIB_VERSION_STRING}" )
|
||||
set_property ( TARGET ${TARGET_NAME} PROPERTY SOVERSION "${LIB_VERSION_MAJOR}" )
|
||||
|
||||
# If the library is a release, strip the target library
|
||||
#if ( "${CMAKE_BUILD_TYPE}" STREQUAL release )
|
||||
# add_custom_command ( TARGET ${ROCTRACER_TARGET} POST_BUILD COMMAND ${CMAKE_STRIP} *.so )
|
||||
#endif ()
|
||||
## Build libraries
|
||||
include(src/CMakeLists.txt)
|
||||
|
||||
## Build tests
|
||||
if ( ${LIBRARY_TYPE} STREQUAL SHARED )
|
||||
add_subdirectory ( ${TEST_DIR} ${PROJECT_BINARY_DIR}/test )
|
||||
if(${LIBRARY_TYPE} STREQUAL SHARED)
|
||||
add_subdirectory(test ${PROJECT_BINARY_DIR}/test)
|
||||
endif()
|
||||
|
||||
## pbulic headers
|
||||
set ( PUBLIC_HEADERS
|
||||
set(PUBLIC_HEADERS
|
||||
roctx.h
|
||||
roctracer.h
|
||||
roctracer_ext.h
|
||||
@@ -92,44 +69,23 @@ set ( PUBLIC_HEADERS
|
||||
roctracer_roctx.h
|
||||
ext/prof_protocol.h
|
||||
)
|
||||
set ( GEN_HEADERS
|
||||
set(GEN_HEADERS
|
||||
hip_ostream_ops.h
|
||||
hsa_prof_str.h
|
||||
hsa_ostream_ops.h
|
||||
)
|
||||
|
||||
if ( ${LIBRARY_TYPE} STREQUAL SHARED )
|
||||
if(${LIBRARY_TYPE} STREQUAL SHARED)
|
||||
|
||||
## Installation and packaging
|
||||
if ( DEFINED CPACK_PACKAGING_INSTALL_PREFIX )
|
||||
get_filename_component ( DEST_NAME ${CPACK_PACKAGING_INSTALL_PREFIX} NAME )
|
||||
get_filename_component ( DEST_DIR ${CPACK_PACKAGING_INSTALL_PREFIX} DIRECTORY )
|
||||
set ( CPACK_PACKAGING_INSTALL_PREFIX ${DEST_DIR} )
|
||||
if(DEFINED CPACK_PACKAGING_INSTALL_PREFIX)
|
||||
get_filename_component(DEST_NAME ${CPACK_PACKAGING_INSTALL_PREFIX} NAME)
|
||||
get_filename_component(DEST_DIR ${CPACK_PACKAGING_INSTALL_PREFIX} DIRECTORY)
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX ${DEST_DIR})
|
||||
endif ()
|
||||
message ( "-----------Dest-name: ${DEST_NAME}" )
|
||||
message ( "------Install-prefix: ${CMAKE_INSTALL_PREFIX}" )
|
||||
message ( "-----------CPACK-dir: ${CPACK_PACKAGING_INSTALL_PREFIX}" )
|
||||
|
||||
## Install information
|
||||
install ( TARGETS ${ROCTRACER_TARGET} LIBRARY DESTINATION lib )
|
||||
foreach ( header ${PUBLIC_HEADERS} )
|
||||
get_filename_component ( header_subdir ${header} DIRECTORY )
|
||||
install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/inc/${header} DESTINATION include/${DEST_NAME}/${header_subdir} )
|
||||
endforeach ()
|
||||
foreach ( header ${GEN_HEADERS} )
|
||||
get_filename_component ( header_subdir ${header} DIRECTORY )
|
||||
install ( FILES ${PROJECT_BINARY_DIR}/inc/${header} DESTINATION include/${DEST_NAME}/${header_subdir} )
|
||||
endforeach ()
|
||||
|
||||
## rocTX
|
||||
set ( ROCTX_TARGET "roctx64" )
|
||||
set ( ROCTX_LIBRARY "lib${ROCTX_TARGET}" )
|
||||
|
||||
## Set the VERSION and SOVERSION values
|
||||
set_property ( TARGET ${ROCTX_TARGET} PROPERTY VERSION "${LIB_VERSION_STRING}" )
|
||||
set_property ( TARGET ${ROCTX_TARGET} PROPERTY SOVERSION "${LIB_VERSION_MAJOR}" )
|
||||
|
||||
install ( TARGETS ${ROCTX_TARGET} LIBRARY DESTINATION lib )
|
||||
message("-----------Dest-name: ${DEST_NAME}")
|
||||
message("------Install-prefix: ${CMAKE_INSTALL_PREFIX}")
|
||||
message("-----------CPACK-dir: ${CPACK_PACKAGING_INSTALL_PREFIX}")
|
||||
|
||||
option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorg with backward compatibility" ON)
|
||||
if(FILE_REORG_BACKWARD_COMPATIBILITY)
|
||||
@@ -137,58 +93,59 @@ if(FILE_REORG_BACKWARD_COMPATIBILITY)
|
||||
endif()
|
||||
|
||||
## Packaging directives
|
||||
set ( CPACK_GENERATOR "DEB" "RPM" "TGZ" CACHE STRING "CPACK GENERATOR DEB;RPM")
|
||||
set ( ENABLE_LDCONFIG ON CACHE BOOL "Set library links and caches using ldconfig.")
|
||||
set ( CPACK_PACKAGE_NAME "${ROCTRACER_NAME}-dev" )
|
||||
set ( CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc." )
|
||||
set ( CPACK_PACKAGE_VERSION_MAJOR ${BUILD_VERSION_MAJOR} )
|
||||
set ( CPACK_PACKAGE_VERSION_MINOR ${BUILD_VERSION_MINOR} )
|
||||
set ( CPACK_PACKAGE_VERSION_PATCH ${BUILD_VERSION_PATCH} )
|
||||
set ( CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}" )
|
||||
if ( DEFINED ENV{ROCM_LIBPATCH_VERSION} )
|
||||
set ( CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}.$ENV{ROCM_LIBPATCH_VERSION}" )
|
||||
set(CPACK_GENERATOR "DEB" "RPM" "TGZ" CACHE STRING "CPACK GENERATOR DEB;RPM")
|
||||
set(ENABLE_LDCONFIG ON CACHE BOOL "Set library links and caches using ldconfig.")
|
||||
set(CPACK_PACKAGE_NAME "${ROCTRACER_NAME}-dev")
|
||||
set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR ${ROCTRACER_VERSION_MAJOR})
|
||||
set(CPACK_PACKAGE_VERSION_MINOR ${ROCTRACER_VERSION_MINOR})
|
||||
set(CPACK_PACKAGE_VERSION_PATCH ${ROCTRACER_VERSION_PATCH})
|
||||
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
|
||||
set(CPACK_PACKAGE_CONTACT "ROCm Profiler Support <dl.ROCm-Profiler.support@amd.com>")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD ROCTRACER library")
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||
|
||||
if(DEFINED ENV{ROCM_LIBPATCH_VERSION})
|
||||
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}.$ENV{ROCM_LIBPATCH_VERSION}")
|
||||
message("Using CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}")
|
||||
endif()
|
||||
message ( "-- CPACK_PACKAGE_VERSION: ${CPACK_PACKAGE_VERSION}" )
|
||||
set ( CPACK_PACKAGE_CONTACT "ROCm Profiler Support <dl.ROCm-Profiler.support@amd.com>" )
|
||||
set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD ROCTRACER library" )
|
||||
set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" )
|
||||
|
||||
# Install license file
|
||||
install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION share/doc/${CPACK_PACKAGE_NAME})
|
||||
|
||||
## Debian package specific variables
|
||||
if ( DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE} )
|
||||
set ( CPACK_DEBIAN_PACKAGE_RELEASE $ENV{CPACK_DEBIAN_PACKAGE_RELEASE} )
|
||||
if(DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
|
||||
set(CPACK_DEBIAN_PACKAGE_RELEASE $ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
|
||||
else()
|
||||
set ( CPACK_DEBIAN_PACKAGE_RELEASE "local" )
|
||||
set(CPACK_DEBIAN_PACKAGE_RELEASE "local")
|
||||
endif()
|
||||
message ( "Using CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_DEBIAN_PACKAGE_RELEASE}" )
|
||||
set ( CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT" )
|
||||
message ("Using CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_DEBIAN_PACKAGE_RELEASE}")
|
||||
set (CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
|
||||
|
||||
## RPM package specific variables
|
||||
if ( DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE} )
|
||||
set ( CPACK_RPM_PACKAGE_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE} )
|
||||
if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE})
|
||||
set(CPACK_RPM_PACKAGE_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE})
|
||||
else()
|
||||
set ( CPACK_RPM_PACKAGE_RELEASE "local" )
|
||||
set(CPACK_RPM_PACKAGE_RELEASE "local")
|
||||
endif()
|
||||
message ( "Using CPACK_RPM_PACKAGE_RELEASE ${CPACK_RPM_PACKAGE_RELEASE}" )
|
||||
message("Using CPACK_RPM_PACKAGE_RELEASE ${CPACK_RPM_PACKAGE_RELEASE}")
|
||||
|
||||
set( CPACK_RPM_PACKAGE_LICENSE "MIT" )
|
||||
set( CPACK_RPM_PACKAGE_LICENSE "MIT")
|
||||
|
||||
## 'dist' breaks manual builds on debian systems due to empty Provides
|
||||
execute_process( COMMAND rpm --eval %{?dist}
|
||||
RESULT_VARIABLE PROC_RESULT
|
||||
OUTPUT_VARIABLE EVAL_RESULT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
message("RESULT_VARIABLE ${PROC_RESULT} OUTPUT_VARIABLE: ${EVAL_RESULT}")
|
||||
|
||||
if ( PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "" )
|
||||
string ( APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}" )
|
||||
if(PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "")
|
||||
string(APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}")
|
||||
endif()
|
||||
set ( CPACK_RPM_FILE_NAME "RPM-DEFAULT" )
|
||||
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
||||
message("CPACK_RPM_PACKAGE_RELEASE: ${CPACK_RPM_PACKAGE_RELEASE}")
|
||||
|
||||
include ( CPack )
|
||||
include(CPack)
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
@@ -39,7 +39,6 @@ if [ -e "$DEFAULTS" ] ; then source "$DEFAULTS"; fi
|
||||
|
||||
if [ -z "$ROCTRACER_ROOT" ]; then ROCTRACER_ROOT=$SRC_DIR; fi
|
||||
if [ -z "$BUILD_DIR" ] ; then BUILD_DIR=$PWD; fi
|
||||
if [ -z "$HIP_PATH" ] ; then export HIP_PATH="$ROCM_PATH/hip"; fi
|
||||
if [ -z "$BUILD_TYPE" ] ; then BUILD_TYPE="release"; fi
|
||||
if [ -z "$PACKAGE_ROOT" ] ; then PACKAGE_ROOT=$ROCM_PATH; fi
|
||||
if [ -z "$PACKAGE_PREFIX" ] ; then PACKAGE_PREFIX="$ROCM_PATH/$COMPONENT"; fi
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
################################################################################
|
||||
# Copyright (c) 2018-2022 Advanced Micro Devices, Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
################################################################################
|
||||
|
||||
COMPONENT="roctracer"
|
||||
ROCM_PATH="/opt/rocm"
|
||||
|
||||
fatal() {
|
||||
echo "$1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
umask 022
|
||||
|
||||
if [ -z "$ROCTRACER_ROOT" ]; then export ROCTRACER_ROOT=$PWD; fi
|
||||
if [ -z "$BUILD_DIR" ] ; then export BUILD_DIR=$PWD; fi
|
||||
if [ -z "$PACKAGE_ROOT" ] ; then export PACKAGE_ROOT=$ROCM_PATH; fi
|
||||
if [ -z "$PACKAGE_PREFIX" ] ; then export PACKAGE_PREFIX="$ROCM_PATH/$COMPONENT"; fi
|
||||
|
||||
MAKE_OPTS="-j 8 -C $BUILD_DIR"
|
||||
|
||||
mkdir -p $BUILD_DIR
|
||||
pushd $BUILD_DIR
|
||||
cmake \
|
||||
-DCMAKE_MODULE_PATH=$ROCTRACER_ROOT/cmake_modules \
|
||||
-DCMAKE_INSTALL_PREFIX=$PACKAGE_ROOT \
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX=$PACKAGE_PREFIX \
|
||||
-DCPACK_GENERATOR="DEB;RPM" \
|
||||
$ROCTRACER_ROOT/inc/ext
|
||||
popd
|
||||
|
||||
make package
|
||||
|
||||
exit 0
|
||||
@@ -39,7 +39,6 @@ if [ -e "$DEFAULTS" ] ; then source "$DEFAULTS"; fi
|
||||
|
||||
if [ -z "$ROCTRACER_ROOT" ]; then ROCTRACER_ROOT=$SRC_DIR; fi
|
||||
if [ -z "$BUILD_DIR" ] ; then BUILD_DIR=$PWD; fi
|
||||
if [ -z "$HIP_PATH" ] ; then export HIP_PATH="$ROCM_PATH/hip"; fi
|
||||
if [ -z "$BUILD_TYPE" ] ; then BUILD_TYPE="release"; fi
|
||||
if [ -z "$PACKAGE_ROOT" ] ; then PACKAGE_ROOT=$ROCM_PATH; fi
|
||||
if [ -z "$PACKAGE_PREFIX" ] ; then PACKAGE_PREFIX="$ROCM_PATH/$COMPONENT"; fi
|
||||
|
||||
@@ -1,179 +0,0 @@
|
||||
################################################################################
|
||||
## Copyright (c) 2018-2022 Advanced Micro Devices, Inc.
|
||||
##
|
||||
## Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
## of this software and associated documentation files (the "Software"), to
|
||||
## deal in the Software without restriction, including without limitation the
|
||||
## rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
## sell copies of the Software, and to permit persons to whom the Software is
|
||||
## furnished to do so, subject to the following conditions:
|
||||
##
|
||||
## The above copyright notice and this permission notice shall be included in
|
||||
## all copies or substantial portions of the Software.
|
||||
##
|
||||
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
## FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
## IN THE SOFTWARE.
|
||||
################################################################################
|
||||
|
||||
## Build is not supported on Windows plaform
|
||||
if ( WIN32 )
|
||||
message ( FATAL_ERROR "Windows build is not supported." )
|
||||
endif ()
|
||||
|
||||
set ( CMAKE_CXX_STANDARD 17 )
|
||||
set ( CMAKE_CXX_STANDARD_REQUIRED ON )
|
||||
|
||||
## Compiler Preprocessor definitions.
|
||||
add_definitions ( -DAMD_INTERNAL_BUILD )
|
||||
add_definitions ( -D__HIP_PLATFORM_HCC__=1 )
|
||||
|
||||
## Linux Compiler options
|
||||
add_compile_options ( -Wall -Werror )
|
||||
|
||||
add_link_options("-Bdynamic -z,noexecstck")
|
||||
|
||||
find_package(Python3 COMPONENTS Interpreter REQUIRED)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${Python3_EXECUTABLE} -c "import CppHeaderParser"
|
||||
RESULT_VARIABLE CPPHEADERPARSER
|
||||
OUTPUT_QUIET
|
||||
)
|
||||
|
||||
if(NOT ${CPPHEADERPARSER} EQUAL 0)
|
||||
message(FATAL_ERROR
|
||||
"The \"CppHeaderParser\" Python3 package is not installed. Please install it using the following command: \"pip3 install CppHeaderParser\"."
|
||||
)
|
||||
endif()
|
||||
|
||||
## CLANG options
|
||||
if ( "$ENV{CXX}" STREQUAL "/usr/bin/clang++" )
|
||||
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ferror-limit=1000000" )
|
||||
endif()
|
||||
|
||||
## Enable debug trace
|
||||
if ( DEFINED CMAKE_DEBUG_TRACE )
|
||||
add_definitions ( -DDEBUG_TRACE_ON=1 )
|
||||
endif()
|
||||
if ( DEFINED ENV{CMAKE_DEBUG_TRACE} )
|
||||
add_definitions ( -DDEBUG_TRACE_ON=1 )
|
||||
endif()
|
||||
|
||||
if ( NOT DEFINED LIBRARY_TYPE )
|
||||
set ( LIBRARY_TYPE SHARED )
|
||||
endif()
|
||||
if ( ${LIBRARY_TYPE} STREQUAL STATIC )
|
||||
add_definitions ( -DSTATIC_BUILD=1 )
|
||||
endif()
|
||||
|
||||
## Enable Hip API call to translate hip call args function
|
||||
add_definitions ( -DHIP_PROF_HIP_API_STRING=1 )
|
||||
|
||||
## Enable HIP_VDI mode
|
||||
add_definitions ( -D__HIP_ROCclr__=1 )
|
||||
set ( HIP_DEFINES "-D__HIP_PLATFORM_HCC__=1 -D__HIP_ROCclr__=1" )
|
||||
|
||||
## Enable HIP local build
|
||||
if ( DEFINED LOCAL_BUILD )
|
||||
add_definitions ( -DLOCAL_BUILD=${LOCAL_BUILD} )
|
||||
else()
|
||||
add_definitions ( -DLOCAL_BUILD=1 )
|
||||
endif()
|
||||
|
||||
## Enable direct loading of AQL-profile HSA extension
|
||||
if ( DEFINED ENV{CMAKE_LD_AQLPROFILE} )
|
||||
add_definitions ( -DROCP_LD_AQLPROFILE=1 )
|
||||
endif()
|
||||
|
||||
## Build type
|
||||
if ( NOT DEFINED CMAKE_BUILD_TYPE OR "${CMAKE_BUILD_TYPE}" STREQUAL "" )
|
||||
if ( DEFINED ENV{CMAKE_BUILD_TYPE} )
|
||||
set ( CMAKE_BUILD_TYPE $ENV{CMAKE_BUILD_TYPE} )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
## Installation prefix path
|
||||
if ( NOT DEFINED CMAKE_PREFIX_PATH AND DEFINED ENV{CMAKE_PREFIX_PATH} )
|
||||
set ( CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH} )
|
||||
endif()
|
||||
set ( ENV{CMAKE_PREFIX_PATH} ${CMAKE_PREFIX_PATH} )
|
||||
|
||||
set ( HIP_PATH "/opt/rocm/hip" )
|
||||
if ( DEFINED ENV{HIP_PATH} )
|
||||
set ( HIP_PATH $ENV{HIP_PATH} )
|
||||
endif()
|
||||
set ( HIP_INC_DIR "${HIP_PATH}/include" )
|
||||
|
||||
## Extend Compiler flags based on build type
|
||||
string ( TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE )
|
||||
if ( "${CMAKE_BUILD_TYPE}" STREQUAL debug )
|
||||
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb" )
|
||||
set ( CMAKE_BUILD_TYPE "debug" )
|
||||
else ()
|
||||
set ( CMAKE_BUILD_TYPE "release" )
|
||||
endif ()
|
||||
|
||||
## Extend Compiler flags based on Processor architecture
|
||||
if ( ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64" )
|
||||
set ( NBIT 64 )
|
||||
set ( NBITSTR "64" )
|
||||
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -msse -msse2" )
|
||||
elseif ( ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86" )
|
||||
set ( NBIT 32 )
|
||||
set ( NBITSTR "" )
|
||||
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" )
|
||||
endif ()
|
||||
|
||||
## Find hsa-runtime headers/lib
|
||||
find_file ( HSA_RUNTIME_INC "hsa/hsa.h" )
|
||||
find_library ( HSA_RUNTIME_LIB "libhsa-runtime${NBIT}.so" )
|
||||
get_filename_component ( HSA_RUNTIME_INC_PATH "${HSA_RUNTIME_INC}" DIRECTORY )
|
||||
get_filename_component ( HSA_RUNTIME_LIB_PATH "${HSA_RUNTIME_LIB}" DIRECTORY )
|
||||
|
||||
find_library ( HSA_KMT_LIB "libhsakmt.so" )
|
||||
if ( "${HSA_KMT_LIB_PATH}" STREQUAL "" )
|
||||
find_library ( HSA_KMT_LIB "libhsakmt.a" )
|
||||
endif()
|
||||
get_filename_component ( HSA_KMT_LIB_PATH "${HSA_KMT_LIB}" DIRECTORY )
|
||||
set ( HSA_KMT_INC_PATH "${HSA_KMT_LIB_PATH}/../include" )
|
||||
|
||||
get_filename_component ( ROCM_ROOT_DIR "${HSA_KMT_LIB_PATH}" DIRECTORY )
|
||||
set ( ROCM_INC_PATH "${ROCM_ROOT_DIR}/include" )
|
||||
|
||||
## Basic Tool Chain Information
|
||||
message ( "----------------NBit: ${NBIT}" )
|
||||
message ( "----------Build-Type: ${CMAKE_BUILD_TYPE}" )
|
||||
message ( "----------C-Compiler: ${CMAKE_C_COMPILER}" )
|
||||
message ( "--C-Compiler-Version: ${CMAKE_C_COMPILER_VERSION}" )
|
||||
message ( "--------CXX-Compiler: ${CMAKE_CXX_COMPILER}" )
|
||||
message ( "CXX-Compiler-Version: ${CMAKE_CXX_COMPILER_VERSION}" )
|
||||
message ( "-----HSA-Runtime-Inc: ${HSA_RUNTIME_INC_PATH}" )
|
||||
message ( "-----HSA-Runtime-Lib: ${HSA_RUNTIME_LIB_PATH}" )
|
||||
message ( "----HSA_KMT_LIB_PATH: ${HSA_KMT_LIB_PATH}" )
|
||||
message ( "-------ROCM_ROOT_DIR: ${ROCM_ROOT_DIR}" )
|
||||
message ( "-------ROCM_INC_PATH: ${ROCM_INC_PATH}" )
|
||||
message ( "-------------KFD-Inc: ${HSA_KMT_INC_PATH}" )
|
||||
message ( "-------------HIP-Inc: ${HIP_INC_DIR}" )
|
||||
message ( "-----CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}" )
|
||||
message ( "---CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}" )
|
||||
message ( "---------GPU_TARGETS: ${GPU_TARGETS}" )
|
||||
message ( "--------LIBRARY_TYPE: ${LIBRARY_TYPE}" )
|
||||
|
||||
## Check the ROCm pathes
|
||||
if ( "${HSA_RUNTIME_INC_PATH}" STREQUAL "" )
|
||||
message ( FATAL_ERROR "HSA_RUNTIME_INC_PATH is not found." )
|
||||
endif ()
|
||||
if ( "${HSA_RUNTIME_LIB_PATH}" STREQUAL "" )
|
||||
message ( FATAL_ERROR "HSA_RUNTIME_LIB_PATH is not found." )
|
||||
endif ()
|
||||
if ( "${HSA_KMT_LIB_PATH}" STREQUAL "" )
|
||||
message ( FATAL_ERROR "HSA_KMT_LIB_PATH is not found." )
|
||||
endif ()
|
||||
if ( "${ROCM_ROOT_DIR}" STREQUAL "" )
|
||||
message ( FATAL_ERROR "ROCM_ROOT_DIR is not found." )
|
||||
endif ()
|
||||
@@ -1,96 +0,0 @@
|
||||
################################################################################
|
||||
## Copyright (c) 2018-2022 Advanced Micro Devices, Inc.
|
||||
##
|
||||
## Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
## of this software and associated documentation files (the "Software"), to
|
||||
## deal in the Software without restriction, including without limitation the
|
||||
## rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
## sell copies of the Software, and to permit persons to whom the Software is
|
||||
## furnished to do so, subject to the following conditions:
|
||||
##
|
||||
## The above copyright notice and this permission notice shall be included in
|
||||
## all copies or substantial portions of the Software.
|
||||
##
|
||||
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
## FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
## IN THE SOFTWARE.
|
||||
################################################################################
|
||||
|
||||
## Parses the VERSION_STRING variable and places
|
||||
## the first, second and third number values in
|
||||
## the major, minor and patch variables.
|
||||
function( parse_version VERSION_STRING )
|
||||
|
||||
string ( FIND ${VERSION_STRING} "-" STRING_INDEX )
|
||||
|
||||
if ( ${STRING_INDEX} GREATER -1 )
|
||||
math ( EXPR STRING_INDEX "${STRING_INDEX} + 1" )
|
||||
string ( SUBSTRING ${VERSION_STRING} ${STRING_INDEX} -1 VERSION_BUILD )
|
||||
endif ()
|
||||
|
||||
string ( REGEX MATCHALL "[0123456789]+" VERSIONS ${VERSION_STRING} )
|
||||
list ( LENGTH VERSIONS VERSION_COUNT )
|
||||
|
||||
if ( ${VERSION_COUNT} GREATER 0)
|
||||
list ( GET VERSIONS 0 MAJOR )
|
||||
set ( VERSION_MAJOR ${MAJOR} PARENT_SCOPE )
|
||||
set ( TEMP_VERSION_STRING "${MAJOR}" )
|
||||
endif ()
|
||||
|
||||
if ( ${VERSION_COUNT} GREATER 1 )
|
||||
list ( GET VERSIONS 1 MINOR )
|
||||
set ( VERSION_MINOR ${MINOR} PARENT_SCOPE )
|
||||
set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${MINOR}" )
|
||||
endif ()
|
||||
|
||||
if ( ${VERSION_COUNT} GREATER 2 )
|
||||
list ( GET VERSIONS 2 PATCH )
|
||||
set ( VERSION_PATCH ${PATCH} PARENT_SCOPE )
|
||||
set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}" )
|
||||
endif ()
|
||||
|
||||
if ( DEFINED VERSION_BUILD )
|
||||
set ( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE )
|
||||
endif ()
|
||||
|
||||
set ( VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE )
|
||||
|
||||
endfunction ()
|
||||
|
||||
## Gets the current version of the repository
|
||||
## using versioning tags and git describe.
|
||||
## Passes back a packaging version string
|
||||
## and a library version string.
|
||||
function ( get_version DEFAULT_VERSION_STRING )
|
||||
|
||||
parse_version ( ${DEFAULT_VERSION_STRING} )
|
||||
|
||||
find_program ( GIT NAMES git )
|
||||
|
||||
if ( GIT )
|
||||
|
||||
execute_process ( COMMAND "git describe --dirty --long --match [0-9]* 2>/dev/null"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE GIT_TAG_STRING
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
RESULT_VARIABLE RESULT )
|
||||
|
||||
if ( ${RESULT} EQUAL 0 )
|
||||
|
||||
parse_version ( ${GIT_TAG_STRING} )
|
||||
|
||||
endif ()
|
||||
|
||||
endif ()
|
||||
|
||||
set( VERSION_STRING "${VERSION_STRING}" PARENT_SCOPE )
|
||||
set( VERSION_MAJOR "${VERSION_MAJOR}" PARENT_SCOPE )
|
||||
set( VERSION_MINOR "${VERSION_MINOR}" PARENT_SCOPE )
|
||||
set( VERSION_PATCH "${VERSION_PATCH}" PARENT_SCOPE )
|
||||
set( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE )
|
||||
|
||||
endfunction()
|
||||
+1
-1
@@ -58,7 +58,7 @@ PROJECT_NAME = "@ROCTRACER_NAME@"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = @roctracer64_VERSION_MAJOR@.@roctracer64_VERSION_MINOR@.@roctracer64_VERSION_PATCH@
|
||||
PROJECT_NUMBER = @ROCTRACER_VERSION_MAJOR@.@ROCTRACER_VERSION_MINOR@.@ROCTRACER_VERSION_PATCH@
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
||||
+153
-32
@@ -20,39 +20,160 @@
|
||||
## IN THE SOFTWARE.
|
||||
################################################################################
|
||||
|
||||
# Generating tracing primitives
|
||||
set ( GEN_INC_DIR ${PROJECT_BINARY_DIR}/inc )
|
||||
set ( GEN_SRC_DIR ${PROJECT_BINARY_DIR}/src )
|
||||
execute_process ( COMMAND sh -xc "mkdir -p ${GEN_INC_DIR}" )
|
||||
execute_process ( COMMAND sh -xc "mkdir -p ${GEN_SRC_DIR}" )
|
||||
execute_process ( COMMAND sh -xc "${CMAKE_C_COMPILER} -E ${HSA_RUNTIME_INC_PATH}/hsa.h > ${GEN_INC_DIR}/hsa_pp.h" )
|
||||
execute_process ( COMMAND sh -xc "${CMAKE_C_COMPILER} -E ${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h > ${GEN_INC_DIR}/hsa_ext_amd_pp.h" )
|
||||
execute_process ( COMMAND sh -xc "python3 ${ROOT_DIR}/script/gen_ostream_ops.py -in ${GEN_INC_DIR}/hsa_pp.h,${GEN_INC_DIR}/hsa_ext_amd_pp.h -out ${GEN_INC_DIR}/hsa_ostream_ops.h" )
|
||||
execute_process ( COMMAND sh -xc "python3 ${ROOT_DIR}/script/hsaap.py ${PROJECT_BINARY_DIR} ${HSA_RUNTIME_INC_PATH}" )
|
||||
execute_process ( COMMAND sh -xc "${CMAKE_C_COMPILER} -E ${HSA_KMT_INC_PATH}/hsakmttypes.h > ${GEN_INC_DIR}/hsakmttypes_pp.h" )
|
||||
execute_process ( COMMAND sh -xc "${CMAKE_C_COMPILER} -E ${HIP_PATH}/include/hip/hip_runtime_api.h ${HIP_DEFINES} -I${HIP_PATH}/include -I${ROCM_ROOT_DIR}/hsa/include > ${GEN_INC_DIR}/hip_runtime_api_pp.h" )
|
||||
execute_process ( COMMAND sh -xc "python3 ${ROOT_DIR}/script/gen_ostream_ops.py -in ${GEN_INC_DIR}/hip_runtime_api_pp.h -out ${GEN_INC_DIR}/hip_ostream_ops.h" )
|
||||
execute_process ( COMMAND sh -xc "mkdir ${GEN_INC_DIR}/rocprofiler" )
|
||||
execute_process ( COMMAND sh -xc "ln -s ${ROOT_DIR}/../rocprofiler/inc/rocprofiler.h ${GEN_INC_DIR}/rocprofiler/rocprofiler.h" )
|
||||
execute_process ( COMMAND sh -xc "ln -s ${ROOT_DIR}/../rocprofiler/src/core/activity.h ${GEN_INC_DIR}/rocprofiler/activity.h" )
|
||||
find_package(Python3 COMPONENTS Interpreter REQUIRED)
|
||||
|
||||
# Build dynamic Library object
|
||||
set ( TARGET_LIB ${TARGET_NAME} )
|
||||
set ( LIB_SRC
|
||||
${LIB_DIR}/core/roctracer.cpp
|
||||
execute_process(
|
||||
COMMAND ${Python3_EXECUTABLE} -c "import CppHeaderParser"
|
||||
RESULT_VARIABLE CPPHEADERPARSER
|
||||
OUTPUT_QUIET
|
||||
)
|
||||
add_library ( ${TARGET_LIB} ${LIBRARY_TYPE} ${LIB_SRC} )
|
||||
target_compile_definitions ( ${TARGET_LIB} PRIVATE PROF_API_IMPL )
|
||||
target_include_directories ( ${TARGET_LIB} PRIVATE ${LIB_DIR} ${ROOT_DIR} ${ROOT_DIR}/inc ${HSA_RUNTIME_INC_PATH} ${ROCM_INC_PATH} ${HIP_INC_DIR} ${HSA_KMT_INC_PATH} ${GEN_INC_DIR} )
|
||||
target_link_libraries( ${TARGET_LIB} PRIVATE ${HSA_RUNTIME_LIB} c stdc++ )
|
||||
set_target_properties( ${TARGET_LIB} PROPERTIES CXX_VISIBILITY_PRESET hidden )
|
||||
|
||||
# Build ROCTX tracing library
|
||||
set ( ROCTX_LIB "roctx64" )
|
||||
set ( ROCTX_LIB_SRC
|
||||
${LIB_DIR}/roctx/roctx.cpp
|
||||
if(NOT ${CPPHEADERPARSER} EQUAL 0)
|
||||
message(FATAL_ERROR
|
||||
"The \"CppHeaderParser\" Python3 package is not installed. Please install it using the following command: \"pip3 install CppHeaderParser\"."
|
||||
)
|
||||
endif()
|
||||
|
||||
if(${LIBRARY_TYPE} STREQUAL STATIC)
|
||||
add_definitions(-DSTATIC_BUILD=1)
|
||||
endif()
|
||||
|
||||
option(DEBUG_TRACE "Enable debug tracing")
|
||||
if(DEBUG_TRACE)
|
||||
add_definitions(-DDEBUG_TRACE_ON=1)
|
||||
endif()
|
||||
|
||||
set(GEN_INC_DIR ${PROJECT_BINARY_DIR}/inc)
|
||||
|
||||
# FIXME!!! should not depend on another project's internal files
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_INC_DIR}/rocprofiler")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/../rocprofiler/inc/rocprofiler.h" "${GEN_INC_DIR}/rocprofiler/rocprofiler.h")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/../rocprofiler/src/core/activity.h" "${GEN_INC_DIR}/rocprofiler/activity.h")
|
||||
|
||||
get_property(HSA_RUNTIME_INCLUDE_DIRECTORIES TARGET hsa-runtime64::hsa-runtime64 PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
|
||||
find_file(hsa_h_file hsa.h
|
||||
PATHS ${HSA_RUNTIME_INCLUDE_DIRECTORIES}
|
||||
PATH_SUFFIXES hsa
|
||||
NO_DEFAULT_PATH
|
||||
REQUIRED
|
||||
)
|
||||
add_library ( ${ROCTX_LIB} SHARED ${ROCTX_LIB_SRC} )
|
||||
target_include_directories ( ${ROCTX_LIB} PRIVATE ${LIB_DIR} ${ROOT_DIR} ${ROOT_DIR}/inc ${HSA_RUNTIME_INC_PATH} ${GEN_INC_DIR} )
|
||||
target_link_libraries( ${ROCTX_LIB} PRIVATE c stdc++ )
|
||||
set_target_properties( ${ROCTX_LIB} PROPERTIES CXX_VISIBILITY_PRESET hidden )
|
||||
get_filename_component(HSA_RUNTIME_INC_PATH ${hsa_h_file} DIRECTORY)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${GEN_INC_DIR}/hsa_prof_str.h"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_INC_DIR}"
|
||||
COMMAND ${Python3_EXECUTABLE}
|
||||
"${PROJECT_SOURCE_DIR}/script/hsaap.py"
|
||||
"${PROJECT_BINARY_DIR}" "${HSA_RUNTIME_INC_PATH}" > /dev/null
|
||||
DEPENDS "${PROJECT_SOURCE_DIR}/script/hsaap.py"
|
||||
"${HSA_RUNTIME_INC_PATH}/hsa.h" "${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h"
|
||||
"${HSA_RUNTIME_INC_PATH}/hsa_ext_image.h" "${HSA_RUNTIME_INC_PATH}/hsa_api_trace.h"
|
||||
COMMENT "Generating hsa_prof_str.h..."
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${GEN_INC_DIR}/hsa_ostream_ops.h"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_INC_DIR}"
|
||||
COMMAND ${CMAKE_C_COMPILER} -E "${HSA_RUNTIME_INC_PATH}/hsa.h" -o "${GEN_INC_DIR}/hsa.h.i"
|
||||
COMMAND ${CMAKE_C_COMPILER} -E "${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h" -o "${GEN_INC_DIR}/hsa_ext_amd.h.i"
|
||||
BYPRODUCTS "${GEN_INC_DIR}/hsa.h.i" "${GEN_INC_DIR}/hsa_ext_amd.h.i"
|
||||
COMMAND ${Python3_EXECUTABLE}
|
||||
"${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py"
|
||||
-in "${GEN_INC_DIR}/hsa.h.i,${GEN_INC_DIR}/hsa_ext_amd.h.i"
|
||||
-out "${GEN_INC_DIR}/hsa_ostream_ops.h" > /dev/null
|
||||
DEPENDS "${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py"
|
||||
"${HSA_RUNTIME_INC_PATH}/hsa.h" "${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h"
|
||||
COMMENT "Generating hsa_ostream_ops.h..."
|
||||
)
|
||||
|
||||
get_property(HIP_INCLUDE_DIRECTORIES TARGET hip::amdhip64 PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
|
||||
|
||||
find_file(HIP_RUNTIME_API_H hip_runtime_api.h
|
||||
PATHS ${HIP_INCLUDE_DIRECTORIES}
|
||||
PATH_SUFFIXES hip
|
||||
NO_DEFAULT_PATH
|
||||
REQUIRED
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${GEN_INC_DIR}/hip_ostream_ops.h"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_INC_DIR}"
|
||||
COMMAND ${CMAKE_C_COMPILER}
|
||||
"$<$<BOOL:${HIP_INCLUDE_DIRECTORIES}>:-I$<JOIN:${HIP_INCLUDE_DIRECTORIES},$<SEMICOLON>-I>>"
|
||||
-E "${HIP_RUNTIME_API_H}" -D__HIP_PLATFORM_HCC__=1 -D__HIP_ROCclr__=1 -o ${GEN_INC_DIR}/hip_runtime_api.h.i
|
||||
BYPRODUCTS "${GEN_INC_DIR}/hip_runtime_api.h.i"
|
||||
COMMAND ${Python3_EXECUTABLE}
|
||||
"${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py"
|
||||
-in "${GEN_INC_DIR}/hip_runtime_api.h.i"
|
||||
-out "${GEN_INC_DIR}/hip_ostream_ops.h" > /dev/null
|
||||
DEPENDS "${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py" "${HIP_RUNTIME_API_H}"
|
||||
COMMENT "Generating hip_ostream_ops.h..."
|
||||
COMMAND_EXPAND_LISTS
|
||||
)
|
||||
|
||||
# Build the ROCtracer library
|
||||
|
||||
file(GLOB ROCTRACER_SOURCES "src/core/*.cpp" "src/util/*.cpp")
|
||||
|
||||
add_library(roctracer ${LIBRARY_TYPE}
|
||||
${ROCTRACER_SOURCES}
|
||||
"${GEN_INC_DIR}/hsa_ostream_ops.h"
|
||||
"${GEN_INC_DIR}/hsa_prof_str.h"
|
||||
"${GEN_INC_DIR}/hip_ostream_ops.h"
|
||||
)
|
||||
|
||||
set_target_properties(roctracer PROPERTIES
|
||||
CXX_VISIBILITY_PRESET hidden
|
||||
OUTPUT_NAME "roctracer64"
|
||||
VERSION ${ROCTRACER_VERSION}
|
||||
SOVERSION ${ROCTRACER_VERSION_MAJOR}
|
||||
)
|
||||
|
||||
target_compile_definitions(roctracer
|
||||
PUBLIC
|
||||
AMD_INTERNAL_BUILD
|
||||
PRIVATE
|
||||
PROF_API_IMPL
|
||||
HIP_PROF_HIP_API_STRING=1
|
||||
__HIP_PLATFORM_HCC__=1
|
||||
)
|
||||
|
||||
target_include_directories(roctracer
|
||||
PUBLIC
|
||||
${HIP_INCLUDE_DIRECTORIES} ${HSA_RUNTIME_INCLUDE_DIRECTORIES}
|
||||
PRIVATE
|
||||
${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc ${PROJECT_SOURCE_DIR}/src
|
||||
${PROJECT_BINARY_DIR}/inc
|
||||
)
|
||||
target_link_libraries(roctracer PRIVATE hsa-runtime64::hsa-runtime64 Threads::Threads dl)
|
||||
|
||||
install(TARGETS ${ROCTRACER_TARGET} LIBRARY DESTINATION lib)
|
||||
foreach(header ${PUBLIC_HEADERS})
|
||||
get_filename_component(header_subdir ${header} DIRECTORY)
|
||||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/inc/${header} DESTINATION include/${ROCTRACER_NAME}/${header_subdir})
|
||||
endforeach()
|
||||
|
||||
foreach(header ${GEN_HEADERS})
|
||||
get_filename_component(header_subdir ${header} DIRECTORY)
|
||||
install(FILES ${GEN_INC_DIR}/${header} DESTINATION include/${ROCTRACER_NAME}/${header_subdir})
|
||||
endforeach()
|
||||
|
||||
# Build the ROCTX library
|
||||
|
||||
file(GLOB ROCTX_SOURCES "src/roctx/*.cpp")
|
||||
|
||||
add_library(roctx ${LIBRARY_TYPE} ${ROCTX_SOURCES})
|
||||
|
||||
set_target_properties(roctx PROPERTIES
|
||||
CXX_VISIBILITY_PRESET hidden
|
||||
OUTPUT_NAME "roctx64"
|
||||
VERSION ${ROCTRACER_VERSION}
|
||||
SOVERSION ${ROCTRACER_VERSION_MAJOR}
|
||||
)
|
||||
|
||||
target_include_directories(roctx PRIVATE
|
||||
${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc
|
||||
${PROJECT_SOURCE_DIR}/src
|
||||
)
|
||||
|
||||
install(TARGETS roctx LIBRARY DESTINATION lib)
|
||||
|
||||
+65
-72
@@ -20,89 +20,82 @@
|
||||
## IN THE SOFTWARE.
|
||||
################################################################################
|
||||
|
||||
cmake_minimum_required ( VERSION 3.5.0 )
|
||||
add_custom_target(mytest) # builds all the tests
|
||||
add_dependencies(mytest roctracer_tool ctrl)
|
||||
|
||||
if ( NOT DEFINED ROOT_DIR )
|
||||
MESSAGE ( FATAL_ERROR "ROOT_DIR is not defined" )
|
||||
endif ()
|
||||
if ( NOT DEFINED INC_PATH )
|
||||
set ( INC_PATH "${ROOT_DIR}/inc" )
|
||||
endif ()
|
||||
if ( NOT DEFINED LIB_PATH )
|
||||
set ( LIB_PATH "${PROJECT_BINARY_DIR}" )
|
||||
endif ()
|
||||
if ( NOT DEFINED TEST_DIR )
|
||||
set ( TEST_DIR "${CMAKE_CURRENT_SOURCE_DIR}" )
|
||||
## Adding default path cmake modules
|
||||
list ( APPEND CMAKE_MODULE_PATH "${ROOT_DIR}/cmake_modules" )
|
||||
## Include common cmake modules
|
||||
include ( utils )
|
||||
## Set build environment
|
||||
include ( env )
|
||||
endif ()
|
||||
|
||||
## Path to HSA test
|
||||
set ( HSA_TEST_DIR "${TEST_DIR}/hsa/test" )
|
||||
|
||||
## test run script
|
||||
set ( RUN_SCRIPT "${TEST_DIR}/run.sh" )
|
||||
# Add a 'check' target to run the tests.
|
||||
add_custom_target(check COMMAND ${PROJECT_BINARY_DIR}/run.sh DEPENDS mytest)
|
||||
|
||||
## build HIP tests
|
||||
set ( GEN_INC_DIR ${PROJECT_BINARY_DIR}/inc )
|
||||
set ( INC_PATH "${INC_PATH} ${GEN_INC_DIR}" )
|
||||
set ( TEST_ENV ROCM_PATH=${ROCM_ROOT_DIR} HSA_PATH=${ROCM_ROOT_DIR}/hsa INC_PATH=${INC_PATH} LIB_PATH=${LIB_PATH} HIPCC_VERBOSE=3 )
|
||||
add_custom_target( mytest
|
||||
COMMAND ${TEST_ENV} make -C "${TEST_DIR}/MatrixTranspose" -j1
|
||||
COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose/MatrixTranspose ${PROJECT_BINARY_DIR}/test"
|
||||
COMMAND ${TEST_ENV} make -C "${TEST_DIR}/MatrixTranspose_test" -j1
|
||||
COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose_test/MatrixTranspose ${PROJECT_BINARY_DIR}/test/MatrixTranspose_test"
|
||||
COMMAND HIP_API_ACTIVITY_ON=1 ${TEST_ENV} make -C "${TEST_DIR}/MatrixTranspose_test" -j1
|
||||
COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose_test/MatrixTranspose ${PROJECT_BINARY_DIR}/test/MatrixTranspose_hipaact_test"
|
||||
COMMAND MGPU_TEST=1 ${TEST_ENV} make -C "${TEST_DIR}/MatrixTranspose_test" -j1
|
||||
COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose_test/MatrixTranspose ${PROJECT_BINARY_DIR}/test/MatrixTranspose_mgpu"
|
||||
COMMAND C_TEST=1 ${TEST_ENV} make -C "${TEST_DIR}/MatrixTranspose_test" -j1
|
||||
COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose_test/MatrixTranspose ${PROJECT_BINARY_DIR}/test/MatrixTranspose_ctest"
|
||||
# copy traces
|
||||
COMMAND sh -xc "cp ${TEST_DIR}/golden_traces/*_trace.txt ${PROJECT_BINARY_DIR}/test/"
|
||||
COMMAND sh -xc "cp ${TEST_DIR}/golden_traces/tests_trace_cmp_levels.txt ${PROJECT_BINARY_DIR}/test/"
|
||||
)
|
||||
set(GEN_INC_DIR ${PROJECT_BINARY_DIR}/inc)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "/opt/rocm/hip/cmake")
|
||||
find_package(HIP REQUIRED MODULE)
|
||||
|
||||
set_source_files_properties(MatrixTranspose/MatrixTranspose.cpp MatrixTranspose_test/MatrixTranspose.cpp
|
||||
PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
|
||||
hip_add_executable(MatrixTranspose EXCLUDE_FROM_ALL MatrixTranspose/MatrixTranspose.cpp)
|
||||
target_include_directories(MatrixTranspose PRIVATE ${PROJECT_SOURCE_DIR}/inc)
|
||||
target_link_libraries(MatrixTranspose PRIVATE roctracer roctx)
|
||||
add_dependencies(mytest MatrixTranspose)
|
||||
|
||||
function(build_matrix_transpose_test OUTPUT_FILE DEFINITIONS)
|
||||
hip_add_executable(${OUTPUT_FILE} EXCLUDE_FROM_ALL MatrixTranspose_test/MatrixTranspose.cpp)
|
||||
target_compile_definitions(${OUTPUT_FILE} PRIVATE ITERATIONS=100 HIP_TEST=1 ${DEFINITIONS})
|
||||
target_include_directories(${OUTPUT_FILE} PRIVATE ${PROJECT_SOURCE_DIR}/inc ${GEN_INC_DIR})
|
||||
target_link_libraries(${OUTPUT_FILE} PRIVATE roctracer roctx)
|
||||
add_dependencies(mytest ${OUTPUT_FILE})
|
||||
endfunction(build_matrix_transpose_test)
|
||||
|
||||
|
||||
build_matrix_transpose_test(MatrixTranspose_test "")
|
||||
build_matrix_transpose_test(MatrixTranspose_hipaact_test HIP_API_ACTIVITY_ON=1)
|
||||
build_matrix_transpose_test(MatrixTranspose_mgpu MGPU_TEST=1)
|
||||
|
||||
add_custom_command(OUTPUT MatrixTranspose.c
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/MatrixTranspose_test/MatrixTranspose.cpp MatrixTranspose.c)
|
||||
|
||||
hip_add_executable(MatrixTranspose_ctest EXCLUDE_FROM_ALL MatrixTranspose.c)
|
||||
target_compile_definitions(MatrixTranspose_ctest PRIVATE HIP_TEST=0 __HIP_PLATFORM_HCC__)
|
||||
target_include_directories(MatrixTranspose_ctest PRIVATE ${PROJECT_SOURCE_DIR}/inc ${GEN_INC_DIR})
|
||||
target_link_libraries(MatrixTranspose_ctest PRIVATE roctracer roctx)
|
||||
add_dependencies(mytest MatrixTranspose_ctest)
|
||||
|
||||
file(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/golden_traces/*_trace.txt")
|
||||
foreach(file ${files})
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${file} ${PROJECT_BINARY_DIR}/test/)
|
||||
endforeach()
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/golden_traces/tests_trace_cmp_levels.txt ${PROJECT_BINARY_DIR}/test/)
|
||||
|
||||
## Build HSA test
|
||||
set ( TMP ${TEST_DIR} )
|
||||
set ( TEST_DIR ${HSA_TEST_DIR} )
|
||||
add_subdirectory ( ${HSA_TEST_DIR} ${PROJECT_BINARY_DIR}/test/hsa )
|
||||
set ( TEST_DIR ${TMP} )
|
||||
add_subdirectory(hsa/test ${PROJECT_BINARY_DIR}/test/hsa)
|
||||
|
||||
## Util sources
|
||||
file( GLOB UTIL_SRC "${HSA_TEST_DIR}/util/*.cpp" )
|
||||
|
||||
if ( DEFINED ROCTRACER_TARGET )
|
||||
## Build test library
|
||||
set ( TEST_LIB "roctracer_tool" )
|
||||
set ( TEST_LIB_SRC ${TEST_DIR}/tool/tracer_tool.cpp ${UTIL_SRC} )
|
||||
add_library ( ${TEST_LIB} SHARED ${TEST_LIB_SRC} )
|
||||
target_include_directories ( ${TEST_LIB} PRIVATE ${HSA_TEST_DIR} ${ROOT_DIR} ${ROOT_DIR}/inc ${HSA_RUNTIME_INC_PATH} ${ROCM_INC_PATH} ${HIP_INC_DIR} ${HSA_KMT_INC_PATH} ${GEN_INC_DIR} )
|
||||
target_link_libraries ( ${TEST_LIB} ${ROCTRACER_TARGET} ${HSA_RUNTIME_LIB} c stdc++ atomic dl pthread rt numa )
|
||||
set_target_properties( ${TEST_LIB} PROPERTIES CXX_VISIBILITY_PRESET hidden )
|
||||
install ( TARGETS ${TEST_LIB} LIBRARY DESTINATION lib/${DEST_NAME})
|
||||
if(DEFINED ROCTRACER_TARGET)
|
||||
## Build the tracer_tool library
|
||||
file(GLOB TRACER_TOOL_SOURCES "tool/*.cpp" "${PROJECT_SOURCE_DIR}/src/util/*.cpp")
|
||||
add_library(roctracer_tool SHARED ${TRACER_TOOL_SOURCES})
|
||||
target_compile_definitions(roctracer_tool PRIVATE HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_HCC__)
|
||||
target_include_directories(roctracer_tool PRIVATE hsa/test ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc ${HIP_INCLUDE_DIRECTORIES} ${GEN_INC_DIR})
|
||||
target_link_libraries(roctracer_tool ${ROCTRACER_TARGET} hsa-runtime64::hsa-runtime64 Threads::Threads atomic dl)
|
||||
set_target_properties(roctracer_tool PROPERTIES CXX_VISIBILITY_PRESET hidden)
|
||||
install(TARGETS roctracer_tool LIBRARY DESTINATION lib/${ROCTRACER_NAME})
|
||||
endif ()
|
||||
|
||||
## Build hsaco_test.cpp referenc test
|
||||
set ( CO_LIB_NAME "hsaco_test" )
|
||||
set ( CO_LIB_SRC ${TEST_DIR}/app/hsaco_test.cpp )
|
||||
add_library ( ${CO_LIB_NAME} SHARED ${CO_LIB_SRC} )
|
||||
target_include_directories ( ${CO_LIB_NAME} PRIVATE ${HSA_RUNTIME_INC_PATH} )
|
||||
target_link_libraries ( ${CO_LIB_NAME} ${HSA_RUNTIME_LIB} c stdc++ )
|
||||
add_library(hsaco_test SHARED EXCLUDE_FROM_ALL app/hsaco_test.cpp)
|
||||
target_compile_definitions(hsaco_test PRIVATE AMD_INTERNAL_BUILD)
|
||||
target_link_libraries(hsaco_test hsa-runtime64::hsa-runtime64)
|
||||
add_dependencies(mytest hsaco_test)
|
||||
|
||||
## Build codeobj event test
|
||||
set ( CO_LIB_NAME "codeobj_test" )
|
||||
set ( CO_LIB_SRC ${TEST_DIR}/app/codeobj_test.cpp )
|
||||
add_library ( ${CO_LIB_NAME} SHARED ${CO_LIB_SRC} )
|
||||
target_include_directories ( ${CO_LIB_NAME} PRIVATE ${TEST_DIR} ${ROOT_DIR} ${ROOT_DIR}/inc ${GEN_INC_DIR} ${HSA_RUNTIME_INC_PATH} ${ROCM_INC_PATH} )
|
||||
target_link_libraries ( ${CO_LIB_NAME} ${ROCTRACER_TARGET} c stdc++ )
|
||||
add_library(codeobj_test SHARED EXCLUDE_FROM_ALL app/codeobj_test.cpp)
|
||||
target_include_directories(codeobj_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc ${GEN_INC_DIR})
|
||||
target_link_libraries(codeobj_test roctracer)
|
||||
add_dependencies(mytest codeobj_test)
|
||||
|
||||
## copying run script
|
||||
execute_process ( COMMAND sh -xc "cp ${RUN_SCRIPT} ${PROJECT_BINARY_DIR}" )
|
||||
execute_process ( COMMAND sh -xc "ln -s run.sh ${PROJECT_BINARY_DIR}/run_ci.sh" )
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/run.sh ${PROJECT_BINARY_DIR})
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink run.sh ${PROJECT_BINARY_DIR}/run_ci.sh)
|
||||
## copying tests output check script
|
||||
execute_process ( COMMAND sh -xc "cp ${ROOT_DIR}/script/check_trace.py ${PROJECT_BINARY_DIR}/test/." )
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/script/check_trace.py ${PROJECT_BINARY_DIR}/test/.)
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
ROOT_PATH ?= ../..
|
||||
INC_PATH ?= $(ROOT_PATH)/inc
|
||||
LIB_PATH ?= $(ROOT_PATH)/build
|
||||
ROCM_PATH ?= /opt/rocm
|
||||
ROC_LIBS = -Wl,--rpath,${LIB_PATH} $(LIB_PATH)/libroctracer64.so $(LIB_PATH)/libroctx64.so
|
||||
|
||||
HIP_PATH ?= $(wildcard /opt/rocm/hip)
|
||||
ifeq (,$(HIP_PATH))
|
||||
HIP_PATH=../../..
|
||||
endif
|
||||
|
||||
HIPCC=$(HIP_PATH)/bin/hipcc
|
||||
|
||||
TARGET=hcc
|
||||
|
||||
SOURCES = MatrixTranspose.cpp
|
||||
OBJECTS = $(SOURCES:.cpp=.o)
|
||||
|
||||
EXECUTABLE=./MatrixTranspose
|
||||
|
||||
.PHONY: test
|
||||
|
||||
|
||||
all: clean $(EXECUTABLE)
|
||||
|
||||
CXXFLAGS =-g $(INC_PATH:%=-I%) -DLOCAL_BUILD=1 --rocm-path=$(ROCM_PATH)
|
||||
CXX=$(HIPCC)
|
||||
|
||||
$(EXECUTABLE): $(OBJECTS)
|
||||
/usr/bin/env
|
||||
$(HIPCC) $(OBJECTS) -o $@ $(ROC_LIBS)
|
||||
|
||||
test: $(EXECUTABLE)
|
||||
$(EXECUTABLE)
|
||||
|
||||
|
||||
clean:
|
||||
rm -f $(EXECUTABLE)
|
||||
rm -f $(OBJECTS)
|
||||
rm -f $(HIP_PATH)/src/*.o
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
ROOT_PATH ?= ../..
|
||||
INC_PATH ?= $(ROOT_PATH)/inc
|
||||
LIB_PATH ?= $(ROOT_PATH)/build
|
||||
ROCM_PATH ?= /opt/rocm
|
||||
HIP_VDI ?= 0
|
||||
ITERATIONS ?= 100
|
||||
|
||||
ROC_LIBS = -Wl,--rpath,${LIB_PATH} $(LIB_PATH)/libroctracer64.so $(LIB_PATH)/libroctx64.so
|
||||
|
||||
HIP_PATH ?= $(wildcard /opt/rocm/hip)
|
||||
ifeq (,$(HIP_PATH))
|
||||
HIP_PATH=../../..
|
||||
endif
|
||||
|
||||
HIPCC=$(HIP_PATH)/bin/hipcc
|
||||
TARGET=hcc
|
||||
|
||||
EXECUTABLE=./MatrixTranspose
|
||||
OBJECTS = MatrixTranspose.o
|
||||
FLAGS =-g $(INC_PATH:%=-I%) -I$(ROCM_PATH)/hsa/include/hsa -I$(ROCM_PATH)/hsa/include -I$(ROCM_PATH)/hip/include -I$(ROCM_PATH)/include -DLOCAL_BUILD=1 -DITERATIONS=$(ITERATIONS) -DAMD_INTERNAL_BUILD=1
|
||||
|
||||
ifeq ($(C_TEST), 1)
|
||||
COMP=${CC}
|
||||
SOURCES = MatrixTranspose.c
|
||||
FLAGS += -DHIP_TEST=0 -D__HIP_PLATFORM_HCC__=1
|
||||
else
|
||||
COMP=$(HIPCC)
|
||||
SOURCES = MatrixTranspose.cpp
|
||||
FLAGS += -DHIP_TEST=1 --rocm-path=$(ROCM_PATH)
|
||||
endif
|
||||
ifeq ($(MGPU_TEST), 1)
|
||||
FLAGS += -DMGPU_TEST=1
|
||||
endif
|
||||
ifeq ($(HIP_API_ACTIVITY_ON), 1)
|
||||
FLAGS += -DHIP_API_ACTIVITY_ON=1
|
||||
endif
|
||||
|
||||
.PHONY: test
|
||||
|
||||
all: clean $(EXECUTABLE)
|
||||
|
||||
$(OBJECTS): $(SOURCES)
|
||||
$(COMP) $(FLAGS) -c -o $@ $<
|
||||
|
||||
$(EXECUTABLE): $(OBJECTS)
|
||||
$(HIPCC) $(OBJECTS) -o $@ $(ROC_LIBS)
|
||||
|
||||
test: $(EXECUTABLE)
|
||||
LD_PRELOAD="librocprofiler64.so" $(EXECUTABLE)
|
||||
|
||||
clean:
|
||||
rm -f $(EXECUTABLE)
|
||||
rm -f $(OBJECTS)
|
||||
rm -f $(HIP_PATH)/src/*.o
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
MatrixTranspose.cpp
|
||||
@@ -114,8 +114,10 @@ int main() {
|
||||
float* TransposeMatrix;
|
||||
float* cpuTransposeMatrix;
|
||||
|
||||
#if HIP_TEST
|
||||
float* gpuMatrix;
|
||||
float* gpuTransposeMatrix;
|
||||
#endif
|
||||
|
||||
int i;
|
||||
int errors;
|
||||
|
||||
@@ -20,44 +20,60 @@
|
||||
## IN THE SOFTWARE.
|
||||
################################################################################
|
||||
|
||||
cmake_minimum_required ( VERSION 2.8.12 )
|
||||
find_package(Clang REQUIRED CONFIG
|
||||
PATHS
|
||||
"/opt/rocm/"
|
||||
PATH_SUFFIXES
|
||||
"llvm/lib/cmake/clang")
|
||||
|
||||
set ( EXE_NAME "ctrl" )
|
||||
function(generate_hsaco TARGET_ID INPUT_FILE OUTPUT_FILE)
|
||||
separate_arguments(CLANG_ARG_LIST UNIX_COMMAND
|
||||
"-O2 -x cl -Xclang -finclude-default-header -cl-denorms-are-zero -cl-std=CL2.0
|
||||
-target amdgcn-amd-amdhsa -mcpu=${TARGET_ID} -o ${OUTPUT_FILE} ${INPUT_FILE}")
|
||||
|
||||
if ( NOT DEFINED TEST_DIR )
|
||||
set ( TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
|
||||
project ( ${EXE_NAME} )
|
||||
## Set build environment
|
||||
include ( env )
|
||||
endif ()
|
||||
## Add custom command to produce a code object file.
|
||||
## This depends on the kernel source file & compiler.
|
||||
## It does not pickup devicelib changes. It is not clear
|
||||
## how to do that after conversion to --rocm-path is done.
|
||||
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/${OUTPUT_FILE}
|
||||
COMMAND clang ${CLANG_ARG_LIST}
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||
DEPENDS ${INPUT_FILE} clang
|
||||
COMMENT "Building ${OUTPUT_FILE}..."
|
||||
VERBATIM)
|
||||
|
||||
if ( NOT DEFINED ROCM_ROOT_DIR )
|
||||
set ( ROCM_ROOT_DIR "" )
|
||||
endif ()
|
||||
if ( NOT DEFINED GPU_TARGETS )
|
||||
set ( GPU_TARGETS "" )
|
||||
endif ()
|
||||
set(HSACO_TARGET_LIST ${HSACO_TARGET_LIST} ${PROJECT_BINARY_DIR}/${OUTPUT_FILE} PARENT_SCOPE)
|
||||
endfunction(generate_hsaco)
|
||||
|
||||
## Util sources
|
||||
file( GLOB UTIL_SRC "${TEST_DIR}/util/*.cpp" )
|
||||
function(build_kernel_for_devices KERNEL_FILE KERNEL_NAME)
|
||||
foreach(target_id ${GPU_TARGETS})
|
||||
## generate kernel bitcodes
|
||||
generate_hsaco(${target_id} ${KERNEL_FILE} ${target_id}_${KERNEL_NAME}.hsaco)
|
||||
endforeach(target_id)
|
||||
set(HSACO_TARGET_LIST ${HSACO_TARGET_LIST} PARENT_SCOPE)
|
||||
endfunction(build_kernel_for_devices)
|
||||
|
||||
## Test control sources
|
||||
set ( CTRL_SRC
|
||||
${TEST_DIR}/app/test.cpp
|
||||
${TEST_DIR}/ctrl/test_hsa.cpp
|
||||
)
|
||||
|
||||
## Dummy kernel
|
||||
set ( DUMMY_NAME dummy_kernel )
|
||||
execute_process ( COMMAND sh -xc "${TEST_DIR}/../script/build_kernel.sh '${TEST_DIR}/${DUMMY_NAME}/${DUMMY_NAME}' '${PROJECT_BINARY_DIR}' '${ROCM_ROOT_DIR}' '${GPU_TARGETS}'" )
|
||||
set(HSACO_TARGET_LIST "")
|
||||
build_kernel_for_devices("${CMAKE_CURRENT_SOURCE_DIR}/dummy_kernel/dummy_kernel.cl" "DummyKernel")
|
||||
build_kernel_for_devices("${CMAKE_CURRENT_SOURCE_DIR}/simple_convolution/simple_convolution.cl" "SimpleConvolution")
|
||||
add_custom_target(hsaco_targets DEPENDS ${HSACO_TARGET_LIST})
|
||||
|
||||
## Test kernel
|
||||
set ( TEST_NAME simple_convolution )
|
||||
set ( KERN_SRC ${TEST_DIR}/${TEST_NAME}/${TEST_NAME}.cpp )
|
||||
execute_process ( COMMAND sh -xc "${TEST_DIR}/../script/build_kernel.sh '${TEST_DIR}/${TEST_NAME}/${TEST_NAME}' '${PROJECT_BINARY_DIR}' '${ROCM_ROOT_DIR}' '${GPU_TARGETS}'" )
|
||||
set(TEST_NAME simple_convolution)
|
||||
set(KERN_SRC ${TEST_NAME}/${TEST_NAME}.cpp)
|
||||
|
||||
## Util sources
|
||||
file(GLOB UTIL_SRC "util/*.cpp")
|
||||
|
||||
## Test control sources
|
||||
set(CTRL_SRC
|
||||
app/test.cpp
|
||||
ctrl/test_hsa.cpp)
|
||||
|
||||
## Building ctrl test executable
|
||||
add_executable ( ${EXE_NAME} ${CTRL_SRC} ${UTIL_SRC} ${KERN_SRC} )
|
||||
target_include_directories ( ${EXE_NAME} PRIVATE ${TEST_DIR} ${ROOT_DIR} ${HSA_RUNTIME_INC_PATH} )
|
||||
target_link_libraries( ${EXE_NAME} ${HSA_RUNTIME_LIB} ${HSA_KMT_LIB} c stdc++ dl pthread rt )
|
||||
execute_process ( COMMAND sh -xc "cp ${TEST_DIR}/run.sh ${PROJECT_BINARY_DIR}" )
|
||||
add_executable(ctrl EXCLUDE_FROM_ALL ${CTRL_SRC} ${UTIL_SRC} ${KERN_SRC})
|
||||
target_compile_definitions(ctrl PRIVATE AMD_INTERNAL_BUILD)
|
||||
target_include_directories(ctrl PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR})
|
||||
target_link_libraries(ctrl hsa-runtime64::hsa-runtime64 Threads::Threads dl)
|
||||
add_dependencies(ctrl hsaco_targets)
|
||||
add_dependencies(mytest ctrl)
|
||||
|
||||
Reference in New Issue
Block a user