Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion projects/rocwmma/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@
cmake_minimum_required( VERSION 3.14 )
message(STATUS "CMake version: ${CMAKE_VERSION}")

if(NOT WIN32)
if(CMAKE_GENERATOR STREQUAL "Ninja")
message(STATUS "The CMake generator is Ninja.")
else()
message(WARNING "The CMake generator is not Ninja. Ninja is preferred over Make.")
endif()
endif()

# This has to be initialized before the project() command appears
# Set the default of CMAKE_BUILD_TYPE to be release, unless user specifies with -D. MSVC_IDE does not use CMAKE_BUILD_TYPE
if( NOT DEFINED CMAKE_CONFIGURATION_TYPES AND NOT DEFINED CMAKE_BUILD_TYPE )
Expand All @@ -43,7 +51,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

#Set Clang C++ flags.
set(CMAKE_CXX_FLAGS_DEBUG "-g -O2") # clang++ crashes without -O2
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O2") # clang++ crashes without -O2
set(CMAKE_CXX_FLAGS_MINSIZEREL "-O2 -DNDEBUG") # clang++ failed to build the project with the default -Os
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --driver-mode=g++ -Xclang -fallow-half-arguments-and-returns -D__HIP_HCC_COMPAT_MODE__=1 -Wno-format-nonliteral -parallel-jobs=4 -fclang-abi-compat=17")

Expand Down Expand Up @@ -190,6 +198,11 @@ rocm_package_add_deb_dependencies("libomp-dev")
rocm_package_add_rpm_dependencies("libomp-devel")
set(CPACK_RPM_PACKAGE_LICENSE "MIT")

rocm_export_targets(
TARGETS roc::rocwmma
NAMESPACE roc::
)

rocm_create_package(
NAME rocwmma
DESCRIPTION "AMD GPU C++ library for GEMM primitives using MFMA and WMMA matrix instructions"
Expand Down
2 changes: 1 addition & 1 deletion projects/rocwmma/samples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ endif()
# Custom target to build all rocWMMA samples
add_custom_target(rocwmma_samples)

# Regular gtests that don't require any special
# Regular binaries that don't require any special
# designation for validation or benchmarking
function(add_rocwmma_sample TEST_TARGET TEST_SOURCE)

Expand Down
74 changes: 56 additions & 18 deletions projects/rocwmma/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,33 +40,38 @@ add_link_options(-mcmodel=large)

# Test/benchmark requires additional dependencies
if(ROCWMMA_USE_SYSTEM_GOOGLETEST)
find_package(GTest 1.12.1 REQUIRED)
find_package(GTest 1.16.0 REQUIRED)
else()
include( FetchContent )

# Suppress ROCMChecks WARNING on GoogleTest
set(ROCM_DISABLE_CHECKS FALSE)
macro(rocm_check_toolchain_var var access value list_file)
if(NOT ROCM_DISABLE_CHECKS)
_rocm_check_toolchain_var("${var}" "${access}" "${value}" "${list_file}")
endif()
endmacro()

FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.12.1
GIT_TAG v1.16.0
)
FetchContent_GetProperties(googletest)
if(NOT googletest_POPULATED)

# Fetch the content using default details
FetchContent_Populate(googletest)
# Save the shared libs setting, then force to static libs
set(BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS})
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries" FORCE)
# Turn off gtest installation
set(INSTALL_GTEST OFF)

# Turn off gtest installation
set(INSTALL_GTEST OFF)
# Save the shared libs setting, then force to static libs
set(BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS})
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries" FORCE)

# Add gtest targets as static libs
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
# Fetch the content using default details
set(ROCM_DISABLE_CHECKS TRUE)
FetchContent_MakeAvailable(googletest)
set(ROCM_DISABLE_CHECKS FALSE)

# Restore shared libs setting
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE INTERNAL "Build SHARED libraries" FORCE)
endif()
# Restore shared libs setting
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE INTERNAL "Build SHARED libraries" FORCE)
endif()

set(ROCWMMA_TEST_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
Expand All @@ -80,17 +85,32 @@ file(WRITE "${INSTALL_TEST_FILE}"
# It differs slightly from the default testfile, and you may encounter issues because of that.
]=]
)
set(INSTALL_SMOKE_TEST_FILE "${CMAKE_CURRENT_BINARY_DIR}/install_smoke_CTestTestfile.cmake")
file(WRITE "${INSTALL_SMOKE_TEST_FILE}"
[=[
# This is a test file generated by rocWMMA for install time.
# It differs slightly from the default testfile, and you may encounter issues because of that.
]=]
)
set(INSTALL_REGRESSION_TEST_FILE "${CMAKE_CURRENT_BINARY_DIR}/install_regression_CTestTestfile.cmake")
file(WRITE "${INSTALL_REGRESSION_TEST_FILE}"
[=[
# This is a test file generated by rocWMMA for install time.
# It differs slightly from the default testfile, and you may encounter issues because of that.
]=]
)


# Regular gtests that don't require any special
# designation for validation or benchmarking
function(add_rocwmma_test TEST_TARGET TEST_SOURCE)

list(APPEND TEST_SOURCE ${ARGN})
add_executable(${TEST_TARGET} ${TEST_SOURCE})
target_link_libraries(${TEST_TARGET} rocwmma gtest)
target_link_libraries(${TEST_TARGET} rocwmma GTest::gtest)
target_link_libraries(${TEST_TARGET} OpenMP::OpenMP_CXX "-L${HIP_CLANG_ROOT}/lib")
if(UNIX)
target_link_libraries(${TEST_TARGET} "-Wl,-rpath=$ORIGIN/../llvm/lib" "-fno-rtlib-add-rpath")
target_link_libraries(${TEST_TARGET} "-Wl,-rpath='\$$ORIGIN/../llvm/lib'" "-fno-rtlib-add-rpath")
endif()
target_include_directories(${TEST_TARGET} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
Expand Down Expand Up @@ -139,6 +159,12 @@ function(add_rocwmma_test TEST_TARGET TEST_SOURCE)
endif()
file(APPEND "${INSTALL_TEST_FILE}" "add_test(${TEST_TARGET} \"../${EXE_NAME}\")\n")
file(APPEND "${INSTALL_TEST_FILE}" "set_tests_properties(${TEST_TARGET} PROPERTIES SKIP_REGULAR_EXPRESSION \"no ROCm-capable device;unsupported host device\")\n")

file(APPEND "${INSTALL_SMOKE_TEST_FILE}" "add_test(\"${TEST_TARGET} smoke\" \"../../${EXE_NAME}\" --emulation smoke)\n")
file(APPEND "${INSTALL_SMOKE_TEST_FILE}" "set_tests_properties(\"${TEST_TARGET} smoke\" PROPERTIES SKIP_REGULAR_EXPRESSION \"no ROCm-capable device;unsupported host device\")\n")

file(APPEND "${INSTALL_REGRESSION_TEST_FILE}" "add_test(\"${TEST_TARGET} regression\" \"../../${EXE_NAME}\" --emulation regression)\n")
file(APPEND "${INSTALL_REGRESSION_TEST_FILE}" "set_tests_properties(\"${TEST_TARGET} regression\" PROPERTIES SKIP_REGULAR_EXPRESSION \"no ROCm-capable device;unsupported host device\")\n")
endfunction()

# Targets that implement specifically validation configuration
Expand All @@ -165,3 +191,15 @@ rocm_install(
COMPONENT tests
RENAME "CTestTestfile.cmake"
)
rocm_install(
FILES "${INSTALL_SMOKE_TEST_FILE}"
DESTINATION "${CMAKE_INSTALL_BINDIR}/${PROJECT_NAME}/smoke"
COMPONENT tests
RENAME "CTestTestfile.cmake"
)
rocm_install(
FILES "${INSTALL_REGRESSION_TEST_FILE}"
DESTINATION "${CMAKE_INSTALL_BINDIR}/${PROJECT_NAME}/regression"
COMPONENT tests
RENAME "CTestTestfile.cmake"
)
4 changes: 2 additions & 2 deletions projects/rocwmma/test/gemm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ include( CMakeDependentOption )
cmake_dependent_option( ROCWMMA_VALIDATE_WITH_ROCBLAS "Use rocBLAS for validation" ON "ROCWMMA_BUILD_VALIDATION_TESTS" OFF )
cmake_dependent_option( ROCWMMA_BENCHMARK_WITH_ROCBLAS "Include rocBLAS benchmark performance comparisons" OFF "ROCWMMA_BUILD_BENCHMARK_TESTS" OFF )

set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_COMMAND} -E time")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CMAKE_COMMAND} -E time")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "\"${CMAKE_COMMAND}\" -E time")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "\"${CMAKE_COMMAND}\" -E time")

if(ROCWMMA_VALIDATE_WITH_ROCBLAS OR ROCWMMA_BENCHMARK_WITH_ROCBLAS)
find_package( rocblas REQUIRED PATHS /opt/rocm /opt/rocm/rocblas $ENV{ROCBLAS_DIR} )
Expand Down