CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
337 lines
14 KiB
CMake
337 lines
14 KiB
CMake
# Copyright Advanced Micro Devices, Inc., or its affiliates.
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
# Optional: CTest test categorization when building in rocm-libraries with shared/ctest.
|
|
# Skipped when shared/ is not present (e.g. standalone hipsparse or sparse checkout in CI).
|
|
if(DEFINED ROCM_LIBRARIES_ROOT AND EXISTS "${ROCM_LIBRARIES_ROOT}/shared/ctest/TestCategories.cmake")
|
|
include("${ROCM_LIBRARIES_ROOT}/shared/ctest/TestCategories.cmake")
|
|
set(HIPSPARSE_HAS_CTEST_CATEGORIES ON)
|
|
endif()
|
|
|
|
find_package(GTest REQUIRED)
|
|
|
|
# Download or copy client matrices
|
|
if(NOT EXISTS "${CMAKE_MATRICES_DIR}")
|
|
# Download matrices
|
|
set(CMAKE_MATRICES_DIR "${PROJECT_BINARY_DIR}/clients/matrices" CACHE STRING "Matrices directory.")
|
|
file(MAKE_DIRECTORY "${CMAKE_MATRICES_DIR}")
|
|
|
|
set(CONVERT_SOURCE "${PROJECT_SOURCE_DIR}/deps/convert.cpp" CACHE STRING "Convert tool mtx2csr.")
|
|
include("${PROJECT_SOURCE_DIR}/cmake/ClientMatrices.cmake")
|
|
else()
|
|
# Copy matrices
|
|
if(NOT CMAKE_MATRICES_DIR STREQUAL "${PROJECT_BINARY_DIR}/clients/matrices")
|
|
message("Copy matrix files from ${CMAKE_MATRICES_DIR} to ${PROJECT_BINARY_DIR}/clients/matrices")
|
|
|
|
file(COPY ${CMAKE_MATRICES_DIR}/ DESTINATION ${PROJECT_BINARY_DIR}/clients/matrices)
|
|
|
|
if(STATUS AND NOT STATUS EQUAL 0)
|
|
message(FATAL_ERROR "Failed to copy matrix .bin files, aborting.")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
add_executable(hipsparse-test)
|
|
|
|
target_sources(hipsparse-test PRIVATE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/hipsparse_gtest_main.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_axpyi.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gthr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gthrz.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_roti.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_sctr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_bsrmv.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_bsrxmv.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_bsrsv2.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrsv2.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_bsrmm.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_bsrsm2.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrsm2.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gemmi.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gemvi.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrgeam2.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrgemm2_a.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrgemm2_b.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_bsrilu02.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrilu02.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_bsric02.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csric02.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_nnz.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csr2dense.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csc2dense.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_dense2csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_prune_dense2csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_prune_dense2csr_by_percentage.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_dense2csc.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csr2coo.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csr2bsr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_bsr2csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gebsr2csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csr2csr_compress.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_prune_csr2csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_prune_csr2csr_by_percentage.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_coo2csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_identity.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrsort.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_cscsort.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_coosort.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csru2csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrilusv.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gebsr2gebsr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csr2gebsr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gebsr2gebsc.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmat_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spvec_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_dnmat_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_dnvec_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_const_spmat_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_const_spvec_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_const_dnmat_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_const_dnvec_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmv_coo.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmv_coo_aos.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmv_csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmv_csr_reuse_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmv_sell.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_axpby.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gather.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_scatter.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_rot.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spvv.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_dense_to_sparse_bell.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_dense_to_sparse_bell_no_set_pointers.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_dense_to_sparse_csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_dense_to_sparse_csc.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_dense_to_sparse_coo.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_sparse_to_dense_csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_sparse_to_dense_csc.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_sparse_to_dense_coo.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmm_csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmm_csr_reuse_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmm_batched_csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmm_csc.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmm_batched_csc.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmm_coo.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmm_batched_coo.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmm_bell.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmm_bsr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spgemm_csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spgemmreuse_csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_sddmm_csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_sddmm_csr_reuse_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_sddmm_csc.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_sddmm_coo.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_sddmm_coo_aos.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gpsv_interleaved_batch.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gtsv2_strided_batch.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gtsv.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gtsv2_nopivot.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_gtsv_interleaved_batch.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrcolor.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spsv_csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spsv_csr_reuse_descr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spsv_coo.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spsm_csr.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spsm_coo.cpp"
|
|
)
|
|
|
|
if(HIPSPARSE_ENABLE_SPMV_BSR)
|
|
target_sources(hipsparse-test PRIVATE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spmv_bsr.cpp"
|
|
)
|
|
endif()
|
|
|
|
if(BUILD_WITH_CSC_TRSV)
|
|
target_sources(hipsparse-test PRIVATE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spsv_csc.cpp"
|
|
)
|
|
endif()
|
|
|
|
if(BUILD_WITH_CSC_TRSM)
|
|
target_sources(hipsparse-test PRIVATE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_spsm_csc.cpp"
|
|
)
|
|
endif()
|
|
|
|
if(HIPSPARSE_ENABLE_HIP)
|
|
target_sources(hipsparse-test PRIVATE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_doti.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_dotci.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csr2csc.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csr2csc_ex2.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrgemm.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrgeam.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrmv.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csrmm.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_hybmv.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_csr2hyb.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_hyb2csr.cpp"
|
|
)
|
|
endif()
|
|
|
|
# Include sources
|
|
if(HIPSPARSE_ENABLE_HIP)
|
|
include(rocm/CMakeLists.txt)
|
|
elseif(HIPSPARSE_ENABLE_CUDA)
|
|
if(CUDAToolkit_VERSION MATCHES "^12\\.8")
|
|
include(cuda/12.8/CMakeLists.txt)
|
|
message(STATUS "Building hipsparse-test executable using CUDAToolkit_VERSION ${CUDAToolkit_VERSION}")
|
|
elseif(CUDAToolkit_VERSION MATCHES "^13\\.")
|
|
include(cuda/13/CMakeLists.txt)
|
|
message(STATUS "Building hipsparse-test executable using CUDAToolkit_VERSION ${CUDAToolkit_VERSION}")
|
|
else()
|
|
message(WARNING "Testing on CUDAToolkit_VERSION ${CUDAToolkit_VERSION} not explicitly supported; no test data will be generated.")
|
|
endif()
|
|
endif()
|
|
|
|
target_compile_definitions(hipsparse-test PRIVATE GOOGLE_TEST)
|
|
|
|
target_link_libraries(hipsparse-test PRIVATE
|
|
hipsparse::clients-common
|
|
GTest::gtest
|
|
)
|
|
|
|
# GTest requires pthread on Unix platforms
|
|
if(NOT WIN32)
|
|
target_link_libraries(hipsparse-test PRIVATE pthread)
|
|
endif()
|
|
|
|
if(HIPSPARSE_ENABLE_OPENMP)
|
|
target_link_libraries(hipsparse-test PRIVATE OpenMP::OpenMP_CXX)
|
|
endif()
|
|
|
|
if(HIPSPARSE_ENABLE_CUDA)
|
|
target_compile_definitions(hipsparse-test PRIVATE __HIP_PLATFORM_NVIDIA__)
|
|
target_link_libraries(hipsparse-test PRIVATE CUDA::cudart CUDA::cuda_driver)
|
|
endif()
|
|
|
|
set_target_properties(hipsparse-test PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/clients/staging"
|
|
)
|
|
|
|
# Build mtx2csr converter
|
|
if(NOT CONVERT_SOURCE)
|
|
set(CONVERT_SOURCE "${PROJECT_SOURCE_DIR}/deps/convert.cpp")
|
|
endif()
|
|
|
|
add_executable(mtx2csr)
|
|
target_sources(mtx2csr PRIVATE "${CONVERT_SOURCE}")
|
|
target_compile_options(mtx2csr PRIVATE -O3)
|
|
if(NOT WIN32)
|
|
target_link_options(mtx2csr PRIVATE -Wl,--build-id=sha1)
|
|
endif()
|
|
set_target_properties(mtx2csr PROPERTIES
|
|
OUTPUT_NAME "mtx2csr.exe"
|
|
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/clients"
|
|
)
|
|
|
|
set(HIPSPARSE_CLIENTMATRICES "${PROJECT_SOURCE_DIR}/cmake/hipsparse_clientmatrices.cmake")
|
|
|
|
set(HIPSPARSE_CONVERT "${PROJECT_BINARY_DIR}/clients/hipsparse_mtx2csr")
|
|
add_custom_command(
|
|
OUTPUT "${HIPSPARSE_CONVERT}"
|
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:mtx2csr> "${HIPSPARSE_CONVERT}"
|
|
DEPENDS mtx2csr
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
)
|
|
|
|
set(HIPSPARSE_COMMON "${PROJECT_BINARY_DIR}/clients/staging/hipsparse_common.yaml")
|
|
add_custom_command(
|
|
OUTPUT "${HIPSPARSE_COMMON}"
|
|
COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/clients/include/hipsparse_common.yaml" "${HIPSPARSE_COMMON}"
|
|
DEPENDS "${PROJECT_SOURCE_DIR}/clients/include/hipsparse_common.yaml"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
)
|
|
|
|
set(HIPSPARSE_TEMPLATE "${PROJECT_BINARY_DIR}/clients/staging/hipsparse_template.yaml")
|
|
add_custom_command(
|
|
OUTPUT "${HIPSPARSE_TEMPLATE}"
|
|
COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/clients/include/hipsparse_template.yaml" "${HIPSPARSE_TEMPLATE}"
|
|
DEPENDS "${PROJECT_SOURCE_DIR}/clients/include/hipsparse_template.yaml"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
)
|
|
|
|
set(HIPSPARSE_GENTEST "${PROJECT_BINARY_DIR}/clients/staging/hipsparse_gentest.py")
|
|
add_custom_command(
|
|
OUTPUT "${HIPSPARSE_GENTEST}"
|
|
COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/clients/common/hipsparse_gentest.py" "${HIPSPARSE_GENTEST}"
|
|
DEPENDS "${PROJECT_SOURCE_DIR}/clients/common/hipsparse_gentest.py"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
)
|
|
|
|
add_custom_target(hipsparse-common
|
|
DEPENDS "${HIPSPARSE_COMMON}" "${HIPSPARSE_TEMPLATE}" "${HIPSPARSE_CLIENTMATRICES}" "${HIPSPARSE_GENTEST}" "${HIPSPARSE_CONVERT}"
|
|
)
|
|
|
|
# Prepare testing data
|
|
set(HIPSPARSE_TEST_DATA "${PROJECT_BINARY_DIR}/clients/staging/hipsparse_test.data")
|
|
add_custom_command(OUTPUT "${HIPSPARSE_TEST_DATA}"
|
|
COMMAND ${Python3_EXECUTABLE} "${PROJECT_SOURCE_DIR}/clients/common/hipsparse_gentest.py" -m ${PROJECT_BINARY_DIR}/clients/matrices -I "${PROJECT_SOURCE_DIR}/clients/include" "${HIPSPARSE_TEST_YAML_INCLUDE}" -o "${HIPSPARSE_TEST_DATA}"
|
|
DEPENDS "${PROJECT_SOURCE_DIR}/clients/common/hipsparse_gentest.py" "${HIPSPARSE_TEST_YAML_INCLUDE}" "${PROJECT_SOURCE_DIR}/clients/include/hipsparse_common.yaml" ${HIPSPARSE_TEST_YAMLS}
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
add_custom_target(hipsparse-test-data
|
|
DEPENDS "${HIPSPARSE_TEST_DATA}" )
|
|
|
|
add_dependencies(hipsparse-test hipsparse-test-data hipsparse-common)
|
|
|
|
|
|
rocm_install(TARGETS hipsparse-test COMPONENT tests)
|
|
rocm_install(FILES ${HIPSPARSE_TEST_DATA} DESTINATION "${CMAKE_INSTALL_DATADIR}/hipsparse/test" COMPONENT tests)
|
|
|
|
|
|
|
|
# Only when both test_categories.yaml and shared/ctest exist (full rocm-libraries tree).
|
|
set(HIPSPARSE_CTEST_INSTALL_FILE "")
|
|
|
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test_categories.yaml")
|
|
if(HIPSPARSE_HAS_CTEST_CATEGORIES)
|
|
message(STATUS "hipSPARSE: YAML-based test categorization")
|
|
file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/staging")
|
|
# Install-time CTestTestfile for TheRock: relative paths so ctest can run from installed location
|
|
set(HIPSPARSE_CTEST_INSTALL_FILE "${CMAKE_CURRENT_BINARY_DIR}/install_CTestTestfile.cmake")
|
|
file(WRITE "${HIPSPARSE_CTEST_INSTALL_FILE}"
|
|
[=[
|
|
# This is a test file generated by hipSPARSE for install time.
|
|
# Tests are defined with relative paths to work in the installed location.
|
|
]=]
|
|
)
|
|
apply_test_category_labels(
|
|
hipsparse-test
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/test_categories.yaml"
|
|
"${PROJECT_BINARY_DIR}/staging"
|
|
"${HIPSPARSE_CTEST_INSTALL_FILE}"
|
|
)
|
|
else()
|
|
message(STATUS "hipSPARSE: shared/ctest not found (e.g. standalone checkout), skipping CTest categories")
|
|
endif()
|
|
else()
|
|
message(STATUS "hipSPARSE: No test_categories.yaml (CTest categories not used)")
|
|
endif()
|
|
|
|
if(HIPSPARSE_CTEST_INSTALL_FILE)
|
|
rocm_install(
|
|
FILES "${HIPSPARSE_CTEST_INSTALL_FILE}"
|
|
DESTINATION "${CMAKE_INSTALL_BINDIR}/hipsparse"
|
|
COMPONENT tests
|
|
RENAME "CTestTestfile.cmake"
|
|
)
|
|
endif()
|
|
|
|
# Windows-specific DLL copying
|
|
if(WIN32)
|
|
# For now adding in all .dll as dependency chain is not cmake based on win32
|
|
file(GLOB third_party_dlls
|
|
LIST_DIRECTORIES OFF
|
|
CONFIGURE_DEPENDS
|
|
$ENV{HIP_DIR}/bin/*.dll
|
|
$ENV{HIP_DIR}/bin/hipinfo.exe
|
|
${ROCSPARSE_PATH}/bin/rocsparse.dll
|
|
${PROJECT_SOURCE_DIR}/rtest.*
|
|
C:/Windows/System32/libomp140*.dll
|
|
)
|
|
foreach(file_i ${third_party_dlls})
|
|
add_custom_command(TARGET hipsparse-test POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} ARGS -E copy ${file_i} ${PROJECT_BINARY_DIR}/clients/staging/)
|
|
endforeach(file_i)
|
|
endif()
|