# ######################################################################## # Copyright 2016-2021 Advanced Micro Devices, Inc. # ######################################################################## set(rocblas_bench_source client.cpp ) add_executable( rocblas-bench ${rocblas_bench_source} ${rocblas_test_bench_common} ) # Internal header includes target_include_directories( rocblas-bench PRIVATE $ $ $ $ $ $ ) # External header includes included as system files target_include_directories( rocblas-bench SYSTEM PRIVATE $ $ $ # may be blank if not used ) if( BUILD_FORTRAN_CLIENTS ) target_link_libraries( rocblas-bench PRIVATE rocblas_fortran_client ) endif( ) target_link_libraries( rocblas-bench PRIVATE ${BLAS_LIBRARY} roc::rocblas ) if( CUDA_FOUND ) target_include_directories( rocblas-bench PRIVATE $ $ ) target_compile_definitions( rocblas-bench PRIVATE __HIP_PLATFORM_NVCC__ ) target_link_libraries( rocblas-bench PRIVATE ${CUDA_LIBRARIES} ) else( ) # auto set in hip_common.h #target_compile_definitions( rocblas-bench PRIVATE __HIP_PLATFORM_HCC__ ) target_link_libraries( rocblas-bench PRIVATE hip::host hip::device ) endif( ) if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") # GCC or hip-clang needs specific flags to turn on f16c intrinsics target_compile_options( rocblas-bench PRIVATE -mf16c ) endif( ) target_compile_definitions( rocblas-bench PRIVATE ROCBLAS_BENCH ROCM_USE_FLOAT16 ROCBLAS_INTERNAL_API ${TENSILE_DEFINES} ) if ( NOT BUILD_FORTRAN_CLIENTS ) target_compile_definitions( rocblas-bench PRIVATE CLIENTS_NO_FORTRAN ) endif() target_compile_options(rocblas-bench PRIVATE $<$:${COMMON_CXX_OPTIONS}>) # target_compile_options does not go to linker like CMAKE_CXX_FLAGS does, so manually add if (NOT WIN32) target_link_libraries( rocblas-bench PRIVATE lapack cblas ) list( APPEND COMMON_LINK_LIBS "-lm -lstdc++fs") if (NOT BUILD_FORTRAN_CLIENTS) list( APPEND COMMON_LINK_LIBS "-lgfortran") # for lapack endif() else() list( APPEND COMMON_LINK_LIBS "libomp") endif() target_link_libraries( rocblas-bench PRIVATE ${COMMON_LINK_LIBS} ) set_target_properties( rocblas-bench PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/staging" ) add_dependencies( rocblas-bench rocblas-common ) add_subdirectory ( ./perf_script )