Files
blis/CMakeLists.txt
Arnav Sharma 3d4611ab8b Updated CMakeLists.txt with SGEMM kernels
- Added SGEMM kernel files to CMakeLists.txt for Windows build.

AMD-Internal: [CPUPL-3023]
Change-Id: I2ab6d23abd2b96574a6d3540fa7b62bc20c92daf
2023-02-22 11:22:53 +00:00

639 lines
26 KiB
CMake

##Copyright (C) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.##
cmake_minimum_required(VERSION 3.0.0)
project(AOCL-LibBlis-Win C CXX)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
SET(AOCL_BLIS_FAMILY "zen" CACHE STRING "AOCL BLIS family name")
SET(OpenMP_libomp_LIBRARY "C:/Program Files/LLVM/lib/libomp.lib" CACHE STRING "openmp library
path")
set(TARGET_ARCH ${AOCL_BLIS_FAMILY})
set(AOCL_BLIS_ZEN TRUE)
set (PYTHON_EXE "python")
if ("${AOCL_BLIS_FAMILY}" STREQUAL "")
message(FATAL_ERROR "Machine configuration missing! Select one of zen, zen2, zen3, zen4 or amdzen")
endif ()
if (${AOCL_BLIS_FAMILY} STREQUAL "auto")
set(AUTO_CONFIG_PY "${CMAKE_SOURCE_DIR}/build/auto_config.py")
# Run python script to find the architecture family name
execute_process(
COMMAND ${PYTHON_EXE} ${AUTO_CONFIG_PY}
RESULT_VARIABLE CMD_RESULT
OUTPUT_VARIABLE CMD_OUTPUT
OUTPUT_STRIP_TRAILING_WHITESPACE)
message( STATUS "Auto configuring the family :" ${CMD_OUTPUT})
set(AOCL_BLIS_FAMILY ${CMD_OUTPUT})
endif ()
if(${AOCL_BLIS_FAMILY} STREQUAL "zen")
add_definitions(-DBLIS_FAMILY_ZEN)
add_definitions(-DBLIS_CONFIG_ZEN)
add_definitions(-DBLIS_KERNELS_ZEN)
add_definitions(-DBLIS_KERNELS_HASWELL)
elseif (${AOCL_BLIS_FAMILY} STREQUAL "zen2")
add_definitions(-DBLIS_FAMILY_ZEN2)
add_definitions(-DBLIS_CONFIG_ZEN2)
add_definitions(-DBLIS_KERNELS_ZEN2)
add_definitions(-DBLIS_KERNELS_ZEN)
add_definitions(-DBLIS_KERNELS_HASWELL)
elseif (${AOCL_BLIS_FAMILY} STREQUAL "zen3")
add_definitions(-DBLIS_FAMILY_ZEN3)
add_definitions(-DBLIS_CONFIG_ZEN3)
add_definitions(-DBLIS_KERNELS_ZEN3)
add_definitions(-DBLIS_KERNELS_ZEN2)
add_definitions(-DBLIS_KERNELS_ZEN)
add_definitions(-DBLIS_KERNELS_HASWELL)
elseif (${AOCL_BLIS_FAMILY} STREQUAL "zen4")
add_definitions(-DBLIS_FAMILY_ZEN4)
add_definitions(-DBLIS_CONFIG_ZEN4)
add_definitions(-DBLIS_KERNELS_SKX)
add_definitions(-DBLIS_KERNELS_ZEN4)
add_definitions(-DBLIS_KERNELS_ZEN3)
add_definitions(-DBLIS_KERNELS_ZEN2)
add_definitions(-DBLIS_KERNELS_ZEN)
add_definitions(-DBLIS_KERNELS_HASWELL)
elseif (${AOCL_BLIS_FAMILY} STREQUAL "amdzen")
set(AOCL_BLIS_ZEN FALSE)
add_definitions(-DBLIS_FAMILY_AMDZEN)
add_definitions(-DBLIS_CONFIG_ZEN4)
add_definitions(-DBLIS_CONFIG_ZEN3)
add_definitions(-DBLIS_CONFIG_ZEN2)
add_definitions(-DBLIS_CONFIG_ZEN)
add_definitions(-DBLIS_CONFIG_GENERIC)
add_definitions(-DBLIS_KERNELS_SKX)
add_definitions(-DBLIS_KERNELS_ZEN4)
add_definitions(-DBLIS_KERNELS_ZEN3)
add_definitions(-DBLIS_KERNELS_ZEN2)
add_definitions(-DBLIS_KERNELS_HASWELL)
add_definitions(-DBLIS_KERNELS_ZEN)
add_definitions(-DBLIS_KERNELS_GENERIC)
else ()
message(FATAL_ERROR "Wrong machine configuration. Select one of zen, zen2, zen3, zen4 or amdzen")
endif ()
set(TARGET_ARCH ${AOCL_BLIS_FAMILY})
message("AOCL_BLIS_FAMILY selected:${AOCL_BLIS_FAMILY}")
option(BUILD_SHARED_LIBS "Build shared library" ON)
option(ENABLE_VERBOSE "Enable VERBOSE mode for build" OFF)
option(ENABLE_MULTITHREADING "Enable Multi threading" OFF)
option(ENABLE_OPENMP "Enable Openmp mode" OFF)
option(ENABLE_JRIR_SLAB "Request slab thread in jr and ir loops" ON)
option(ENABLE_JRIR_RR "Request round robin thread in jr and ir loops" OFF)
option(ENABLE_PBA_POOLS "Internal memory pools for packing blocks" ON)
option(ENABLE_SBA_POOLS "Internal memory pools for small blocks" ON)
option(ENABLE_MEM_TRACING "Memory tracing output" OFF)
option(ENABLE_BLAS "BLAS compatiblity layer" ON)
option(ENABLE_CBLAS "CBLAS compatiblity layer" ON)
option(ENABLE_MIXED_DT "Mixed datatype" ON)
option(ENABLE_MIXED_DT_EXTRA_MEM "Mixed datatype optimization requiring extra memory" ON)
option(ENABLE_SUP_HANDLING "Small matrix handling" ON)
option(ENABLE_MEMKIND "libmemkind for manage memory pools" OFF)
option(ENABLE_PRAGMA_OMP_SIMD "pragma openmp simd" ON)
option(ENABLE_SANDBOX "Sandbox implementation for gemm" OFF)
option(BLIS_ENABLE_ILP64 "ENABLE BLIS ILP64" OFF)
option(ENABLE_INT_TYPE_SIZE " Internal BLIS integers ,used in native BLIS interfaces based on architecture dependent " ON)
option(ENABLE_BLASTEST "Enable the blastest" OFF)
option(ENABLE_TESTCPP_TESTING "Enabling testcpp" OFF)
option (ENABLE_NO_UNDERSCORE_API "export APIs without underscore" OFF)
option (ENABLE_UPPERCASE_API "export APIs with uppercase" OFF)
option (ENABLE_COMPLEX_RETURN_INTEL "Enable complex_return_intel" OFF)
option (ENABLE_TRSM_PREINVERSION "Enable TRSM preinversion" ON)
option (ENABLE_AOCL_DYNAMIC "Enable Dynamic Multi-threading" OFF)
option(DISABLE_BLIS_ARCH_TYPE "Disable BLIS_ARCH_TYPE functionality" OFF)
option(RENAME_BLIS_ARCH_TYPE "Rename BLIS_ARCH_TYPE env var renamed to supplied value" BLIS_ARCH_TYPE)
if (${AOCL_BLIS_FAMILY} STREQUAL "amdzen")
set(REF_KERNEL_MIRRORING_PY "${CMAKE_SOURCE_DIR}/build/blis_ref_kernel_mirror.py")
message("ref_kernel mirroring for fat binary")
# Run python script to find the architecture family name
execute_process(
COMMAND ${PYTHON_EXE} ${REF_KERNEL_MIRRORING_PY} ${CMAKE_BINARY_DIR}
RESULT_VARIABLE CMD_RESULT
OUTPUT_VARIABLE CMD_OUTPUT
OUTPUT_STRIP_TRAILING_WHITESPACE)
message( STATUS "Ref Kernel Mirroring :" ${CMD_OUTPUT})
endif()
if(ENABLE_NO_UNDERSCORE_API)
add_definitions(-DBLIS_ENABLE_NO_UNDERSCORE_API)
endif()
if(ENABLE_COMPLEX_RETURN_INTEL)
set(BLIS_ENABLE_COMPLEX_RETURN_INTEL TRUE)
else()
set(BLIS_DISABLE_COMPLEX_RETURN_INTEL TRUE)
endif()
if(ENABLE_UPPERCASE_API)
add_definitions(-DBLIS_ENABLE_UPPERCASE_API)
endif()
if(ENABLE_AOCL_DYNAMIC)
set(AOCL_DYNAMIC TRUE)
endif()
if (BUILD_SHARED_LIBS)
set(BLIS_ENABLE_SHARED TRUE)
if(ENABLE_BLASTEST)
add_definitions(-DAOCL_SUPPORT_BLASTEST_FOR_SHARED)
endif()
endif ()
# Enable LP64/ILP64
if (BLIS_ENABLE_ILP64)
set(BLIS_BLAS_INT_TYPE_SIZE TRUE)
set (BLAS_INT_TYPE_SIZE "64")
add_definitions(-DF2C_ENABLE_ILP64)
else ()
set(BLIS_BLAS_INT_TYPE_SIZE TRUE)
set (BLAS_INT_TYPE_SIZE "32")
endif ()
if (ENABLE_TRSM_PREINVERSION)
set(BLIS_ENABLE_TRSM_PREINVERSION TRUE)
else()
add_definitions(-DBLIS_DISABLE_TRSM_PREINVERSION)
endif()
if (ENABLE_INT_TYPE_SIZE)
set(BLIS_INT_TYPE_SIZE TRUE)
set (INT_TYPE_SIZE "64")
else ()
set(BLIS_INT_TYPE_SIZE TRUE)
set (INT_TYPE_SIZE "32")
endif ()
if (BLIS_ENABLE_ILP64 AND NOT ENABLE_INT_TYPE_SIZE)
message(FATAL_ERROR "for ILP64 we must enable ENABLE_INT_TYPE_SIZE with BLIS_INT_TYPE_SIZE = 64 ")
endif ()
if (ENABLE_VERBOSE)
set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON" FORCE)
endif ()
if (ENABLE_JRIR_RR)
message("Round robin thread method enabled")
set(BLIS_ENABLE_JRIR_RR TRUE)
elseif (ENABLE_JRIR_SLAB)
message("SLAB thread method enabled")
set(BLIS_ENABLE_JRIR_SLAB TRUE)
else ()
message("Unsupported method of thread partitioning in jr and ir loops")
endif ()
if (ENABLE_PBA_POOLS)
set(BLIS_ENABLE_PBA_POOLS TRUE)
endif ()
if (ENABLE_SBA_POOLS)
set(BLIS_ENABLE_SBA_POOLS TRUE)
endif ()
if (ENABLE_MEM_TRACING)
set(BLIS_ENABLE_MEM_TRACING FALSE)
endif ()
if (ENABLE_BLAS)
add_definitions(-DBLIS_ENABLE_BLAS)
else ()
add_definitions(-DBLIS_DISABLE_BLAS)
endif ()
if (ENABLE_CBLAS)
add_definitions(-DBLIS_ENABLE_CBLAS)
if (NOT ENABLE_BLAS)
# Force BLAS layer when CBLAS is enabled
add_definitions(-DBLIS_ENABLE_BLAS)
endif ()
else ()
add_definitions(-DBLIS_DISABLE_CBLAS)
endif ()
if (ENABLE_BLASTEST)
add_definitions(-DBLIS_ENABLE_BLAS)
add_definitions(-DBLIS_ENABLE_CBLAS)
endif()
if (ENABLE_TESTCPP_TESTING)
add_definitions(-DBLIS_ENABLE_BLAS)
add_definitions(-DBLIS_ENABLE_CBLAS)
endif ()
if (ENABLE_MIXED_DT)
set(BLIS_ENABLE_MIXED_DT TRUE)
endif ()
if (ENABLE_MIXED_DT_EXTRA_MEM)
set(BLIS_ENABLE_MIXED_DT_EXTRA_MEM TRUE)
endif ()
if (ENABLE_SUP_HANDLING)
set(BLIS_ENABLE_SUP_HANDLING TRUE)
endif ()
if (ENABLE_MEMKIND)
set(BLIS_ENABLE_MEMKIND FALSE)
endif ()
if (ENABLE_PRAGMA_OMP_SIMD)
set(BLIS_ENABLE_PRAGMA_OMP_SIMD TRUE)
endif ()
if (ENABLE_SANDBOX)
set(BLIS_ENABLE_SANDBOX FALSE)
endif ()
include_directories(${PROJECT_SOURCE_DIR}/external/msvc)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MD ")
#add_definitions(-DBLIS_IS_BUILDING_LIBRARY)
if(NOT BUILD_SHARED_LIBS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MT ")
add_definitions(-DBLIS_IS_BUILDING_LIBRARY)
endif()
if(ENABLE_MULTITHREADING)
if(BUILD_SHARED_LIBS)
set(LIB_NAME "${PROJECT_NAME}-MT-dll")
elseif(NOT BUILD_SHARED_LIBS)
set(LIB_NAME "${PROJECT_NAME}-MT")
endif()
if(ENABLE_OPENMP)
find_package(OpenMP)
if (OPENMP_FOUND)
set(BLIS_ENABLE_OPENMP TRUE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
else()
message (FATAL_ERROR "Openmp Not Found")
endif()
endif()
else()
if(BUILD_SHARED_LIBS)
set(LIB_NAME "${PROJECT_NAME}-dll")
elseif(NOT BUILD_SHARED_LIBS)
set(LIB_NAME "${PROJECT_NAME}")
endif()
endif()
if(DISABLE_BLIS_ARCH_TYPE)
set(BLIS_DISABLE_BLIS_ARCH_TYPE TRUE)
else()
set(BLIS_DISABLE_BLIS_ARCH_TYPE FALSE)
endif()
if(RENAME_BLIS_ARCH_TYPE)
set(__blis_arch_type_name TRUE)
set(rename_blis_arch_type "${RENAME_BLIS_ARCH_TYPE}")
else()
set(__blis_arch_type_name TRUE)
set(rename_blis_arch_type "BLIS_ARCH_TYPE")
endif()
#print configurations
message("---cmake configurations---")
message(CMAKE_C_COMPILER_ID : ${CMAKE_C_COMPILER_ID})
message(CMAKE_BUILD_TYPE : ${CMAKE_BUILD_TYPE})
message(BLIS_ENABLE_OPENMP : ${BLIS_ENABLE_OPENMP})
message(BLIS_ENABLE_JRIR_SLAB : ${BLIS_ENABLE_JRIR_SLAB})
message(BLIS_ENABLE_JRIR_RR : ${BLIS_ENABLE_JRIR_RR})
message(BLIS_ENABLE_PBA_POOLS : ${BLIS_ENABLE_PBA_POOLS})
message(BLIS_ENABLE_SBA_POOLS : ${BLIS_ENABLE_SBA_POOLS})
message(BLIS_ENABLE_MEM_TRACING : ${BLIS_ENABLE_MEM_TRACING})
message(BLIS_INT_TYPE_SIZE : ${BLIS_INT_TYPE_SIZE})
message(BLIS_BLAS_INT_TYPE_SIZE : ${BLIS_BLAS_INT_TYPE_SIZE})
message(BLIS_ENABLE_BLAS : ${BLIS_ENABLE_BLAS})
message(BLIS_ENABLE_CBLAS : ${BLIS_ENABLE_CBLAS})
message(BLIS_ENABLE_MIXED_DT : ${BLIS_ENABLE_MIXED_DT})
message(BLIS_ENABLE_MIXED_DT_EXTRA_MEM : ${BLIS_ENABLE_MIXED_DT_EXTRA_MEM})
message(BLIS_ENABLE_SUP_HANDLING : ${BLIS_ENABLE_SUP_HANDLING})
message(BLIS_ENABLE_MEMKIND : ${BLIS_ENABLE_MEMKIND})
message(BLIS_ENABLE_PRAGMA_OMP_SIMD : ${BLIS_ENABLE_PRAGMA_OMP_SIMD})
message(BLIS_ENABLE_SANDBOX : ${BLIS_ENABLE_SANDBOX})
message(BLIS_ENABLE_SHARED : ${BLIS_ENABLE_SHARED})
message(DISABLE_BLIS_ARCH_TYPE : ${DISABLE_BLIS_ARCH_TYPE})
message(RENAME_BLIS_ARCH_TYPE : ${RENAME_BLIS_ARCH_TYPE})
SET(ENABLE_SIMD_FLAGS "AVX2" CACHE STRING "Set compiler SIMD flags")
SET_PROPERTY(CACHE ENABLE_SIMD_FLAGS PROPERTY STRINGS none SSE2 AVX AVX2)
if(${ENABLE_SIMD_FLAGS} MATCHES "AVX2")
add_definitions(/arch:AVX2)
elseif(${ENABLE_SIMD_FLAGS} MATCHES "AVX")
add_definitions(/arch:AVX)
elseif(${ENABLE_SIMD_FLAGS} MATCHES "SSE2")
add_definitions(/arch:SSE2)
endif()
if(${TARGET_ARCH} STREQUAL zen4 OR
${TARGET_ARCH} STREQUAL amdzen)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/1/bli_amaxv_zen_int_avx512.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/bli_dgemm_zen4_asm_32x6.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/bli_gemmtrsm_l_zen_16x14.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/bli_gemmtrsm_u_zen_16x14.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/skx/3/bli_dgemm_skx_asm_16x14.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/skx/3/bli_sgemm_skx_asm_32x12_l2.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/bli_trsm_small_AVX512.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/sup/bli_gemmsup_rd_zen_s6x64.h PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/sup/bli_gemmsup_rd_zen_s6x64.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/sup/bli_gemmsup_rd_zen_s6x64m.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/sup/bli_gemmsup_rd_zen_s6x64n.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/sup/bli_gemmsup_rv_zen_s6x64.h PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/sup/bli_gemmsup_rv_zen_s6x64.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/sup/bli_gemmsup_rv_zen_s6x64m.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen4/3/sup/bli_gemmsup_rv_zen_s6x64n.c PROPERTIES COMPILE_FLAGS /arch:AVX512)
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W0 ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Oi")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
set(INTR_GENERAL_LINK_FLAGS "${INTR_GENERAL_LINK_FLAGS} /RELEGE")
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
#add_definitions(-DBLIS_OS_WINDOWS)
add_definitions(-D_MSC_VER)
if (${AOCL_BLIS_FAMILY} STREQUAL "amdzen")
else()
add_definitions(-DBLIS_CNAME=${TARGET_ARCH})
endif()
# Generate the bli_config.h header file
configure_file (build/bli_win_config.h.in ${CMAKE_SOURCE_DIR}/bli_config.h @ONLY)
include_directories(${CMAKE_SOURCE_DIR}/aocl_dtl)
include_directories(${CMAKE_SOURCE_DIR}/.)
include_directories(${CMAKE_SOURCE_DIR}/include/${TARGET_ARCH})
include_directories(${CMAKE_SOURCE_DIR}/frame/include)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/1e)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/1m)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/1r)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/bb)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/io)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/ri)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/ri3)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/rih)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/ro)
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/rpi)
include_directories(${CMAKE_SOURCE_DIR}/frame/thread)
include_directories(${CMAKE_SOURCE_DIR}/frame/base)
include_directories(${CMAKE_SOURCE_DIR}/frame/base/cast)
include_directories(${CMAKE_SOURCE_DIR}/frame/base/check)
include_directories(${CMAKE_SOURCE_DIR}/frame/base/noopt)
include_directories(${CMAKE_SOURCE_DIR}/frame/base/proj)
include_directories(${CMAKE_SOURCE_DIR}/frame/0)
include_directories(${CMAKE_SOURCE_DIR}/frame/0/copysc)
include_directories(${CMAKE_SOURCE_DIR}/frame/1)
include_directories(${CMAKE_SOURCE_DIR}/frame/1d)
include_directories(${CMAKE_SOURCE_DIR}/frame/1f)
include_directories(${CMAKE_SOURCE_DIR}/frame/1m)
include_directories(${CMAKE_SOURCE_DIR}/frame/1m/packm)
include_directories(${CMAKE_SOURCE_DIR}/frame/1m/unpackm)
include_directories(${CMAKE_SOURCE_DIR}/frame/2)
include_directories(${CMAKE_SOURCE_DIR}/frame/2/gemv)
include_directories(${CMAKE_SOURCE_DIR}/frame/2/ger)
include_directories(${CMAKE_SOURCE_DIR}/frame/2/hemv)
include_directories(${CMAKE_SOURCE_DIR}/frame/2/her)
include_directories(${CMAKE_SOURCE_DIR}/frame/2/her2)
include_directories(${CMAKE_SOURCE_DIR}/frame/2/symv)
include_directories(${CMAKE_SOURCE_DIR}/frame/2/syr)
include_directories(${CMAKE_SOURCE_DIR}/frame/2/syr2)
include_directories(${CMAKE_SOURCE_DIR}/frame/2/trmv)
include_directories(${CMAKE_SOURCE_DIR}/frame/2/trsv)
include_directories(${CMAKE_SOURCE_DIR}/frame/3)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/gemm)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/gemm/ind)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/gemmt)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/hemm)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/her2k)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/herk)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/symm)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/syr2k)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/syrk)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/trmm)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/trmm3)
include_directories(${CMAKE_SOURCE_DIR}/frame/3/trsm)
include_directories(${CMAKE_SOURCE_DIR}/frame/compat)
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/cblas)
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/cblas/f77_sub)
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/cblas/src)
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/check)
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/f2c)
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/f2c/util)
include_directories(${CMAKE_SOURCE_DIR}/frame/ind)
include_directories(${CMAKE_SOURCE_DIR}/frame/ind/cntx)
include_directories(${CMAKE_SOURCE_DIR}/frame/ind/oapi)
include_directories(${CMAKE_SOURCE_DIR}/frame/ind/tapi)
include_directories(${CMAKE_SOURCE_DIR}/frame/ind/ukernels)
include_directories(${CMAKE_SOURCE_DIR}/frame/util)
include_directories(${CMAKE_SOURCE_DIR}/config/generic)
include_directories(${CMAKE_SOURCE_DIR}/config/zen)
include_directories(${CMAKE_SOURCE_DIR}/config/zen2)
include_directories(${CMAKE_SOURCE_DIR}/config/zen3)
include_directories(${CMAKE_SOURCE_DIR}/config/zen4)
if(${AOCL_BLIS_FAMILY} STREQUAL "amdzen")
include_directories(${CMAKE_BINARY_DIR}/ref_kernels/generic)
include_directories(${CMAKE_BINARY_DIR}/ref_kernels/zen)
include_directories(${CMAKE_BINARY_DIR}/ref_kernels/zen2)
include_directories(${CMAKE_BINARY_DIR}/ref_kernels/zen3)
include_directories(${CMAKE_BINARY_DIR}/ref_kernels/zen4)
endif()
include_directories(${CMAKE_SOURCE_DIR}/ref_kernels)
include_directories(${CMAKE_SOURCE_DIR}/kernels)
include_directories(${CMAKE_SOURCE_DIR}/kernels/haswell)
include_directories(${CMAKE_SOURCE_DIR}/kernels/haswell/3)
include_directories(${CMAKE_SOURCE_DIR}/kernels/haswell/3/sup)
include_directories(${CMAKE_SOURCE_DIR}/kernels/haswell/3/sup/d6x8)
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen)
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/1)
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/1f)
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/1m)
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/2)
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/3)
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/3/sup)
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen2)
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen4)
include_directories(${CMAKE_SOURCE_DIR}/kernels/skx)
include_directories(${CMAKE_SOURCE_DIR}/kernels/skx/3)
file(GLOB headers ${CMAKE_SOURCE_DIR}/*.h)
# Monolithic Header generation
find_package(PythonLibs 3 REQUIRED)
string(APPEND HEADER_PATH
if(${AOCL_BLIS_FAMILY} STREQUAL "zen")
" ${CMAKE_CURRENT_SOURCE_DIR}/config/zen/"
" ${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen/"
" ${CMAKE_CURRENT_SOURCE_DIR}/kernels/haswell/"
elseif (${AOCL_BLIS_FAMILY} STREQUAL "zen2")
" ${CMAKE_CURRENT_SOURCE_DIR}/config/zen2/"
" ${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen/"
" ${CMAKE_CURRENT_SOURCE_DIR}/kernels/haswell/"
" ${CMAKE_CURRENT_SOURCE_DIR}/config/amdzen/"
" ${CMAKE_CURRENT_SOURCE_DIR}/config/zen/"
" ${CMAKE_CURRENT_SOURCE_DIR}/config/zen2/"
" ${CMAKE_CURRENT_SOURCE_DIR}/config/zen3/"
" ${CMAKE_CURRENT_SOURCE_DIR}/config/zen4/"
" ${CMAKE_CURRENT_SOURCE_DIR}/config/generic/"
" ${CMAKE_CURRENT_SOURCE_DIR}/kernels/zen/"
" ${CMAKE_CURRENT_SOURCE_DIR}/kernels/haswell/"
endif ()
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/0/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/0/copysc/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/1/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/1d/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/1f/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/1m/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/1m/packm/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/1m/unpackm/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/gemv/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/ger/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/hemv/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/her/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/her2/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/symv/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/syr/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/syr2/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/trmv/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/2/trsv/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/gemm/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/gemm/ind/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/gemmt/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/hemm/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/her2k/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/herk/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/symm/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/syr2k/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/syrk/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/trmm/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/trmm3/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/3/trsm/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/base/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/base/cast/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/base/check/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/base/noopt/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/base/proj/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/compat/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/compat/cblas/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/compat/cblas/f77_sub/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/compat/cblas/src/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/compat/check/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/compat/f2c/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/compat/f2c/util/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/1e/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/1m/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/1r/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/bb/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/io/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/ri/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/ri3/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/rih/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/ro/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/include/level0/rpi/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/ind/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/ind/cntx/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/ind/oapi/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/ind/tapi/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/ind/ukernels/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/thread/"
" ${CMAKE_CURRENT_SOURCE_DIR}/frame/util/"
" ${CMAKE_CURRENT_SOURCE_DIR}/aocl_dtl/"
" ${CMAKE_CURRENT_SOURCE_DIR}/"
)
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/include/${TARGET_ARCH})
# Flatten header python script file which expand header contents in blis.h
set(FLATTEN_PY "${CMAKE_SOURCE_DIR}/build/flatten-headers.py")
set(BLIS_H "blis.h")
# Arguements for python script
set(C_COMMENT "-c")
set(VERBOSE "-v1")
set(INPUT "${CMAKE_SOURCE_DIR}/frame/include/${BLIS_H}")
set(OUTPUT "${CMAKE_SOURCE_DIR}/include/${TARGET_ARCH}/${BLIS_H}")
set(TEMP_DIR "${INCLUDE}")
set(DIR_H_PATH "${HEADER_PATH}")
# Run python script to generate monolithic header at configuration time
execute_process(
COMMAND ${PYTHON_EXE} ${FLATTEN_PY} "${C_COMMENT}" "${VERBOSE}" "${INPUT}" "${OUTPUT}" "${TEMP_DIR}" "${DIR_H_PATH}"
RESULT_VARIABLE CMD_RESULT
OUTPUT_VARIABLE CMD_OUTPUT)
message( STATUS "Generating monolithic header file :" ${CMD_OUTPUT})
# Logic to generate the cblas.h in include folder.
set(CBLAS_H "cblas.h")
# Arguements for python script
set(C_COMMENT "-c")
set(VERBOSE "-v1")
set(INPUT "${CMAKE_SOURCE_DIR}/frame/compat/cblas/src/${CBLAS_H}")
set(OUTPUT "${CMAKE_SOURCE_DIR}/include/${TARGET_ARCH}/${CBLAS_H}")
set(TEMP_DIR "${INCLUDE}")
set(DIR_H_PATH "${HEADER_PATH}")
# Run python script to generate monolithic header at configuration time
execute_process(
COMMAND ${PYTHON_EXE} ${FLATTEN_PY} "${C_COMMENT}" "${VERBOSE}" "${INPUT}" "${OUTPUT}" "${TEMP_DIR}" "${DIR_H_PATH}"
RESULT_VARIABLE CMD_RESULT
OUTPUT_VARIABLE CMD_OUTPUT)
message( STATUS "Generating monolithic cblas header file :" ${CMD_OUTPUT})
# setting the blis version string
file (STRINGS "version" BLIS_VERSION)
set(BLIS_VERSION_STRING ${BLIS_VERSION})
string(TIMESTAMP BUILD_DATE "%Y%m%d")
add_definitions(-DBLIS_VERSION_STRING="AOCL-BLIS ${BLIS_VERSION_STRING} Build ${BUILD_DATE}")
if(BUILD_SHARED_LIBS)
add_library("${PROJECT_NAME}" SHARED ${CMAKE_SOURCE_DIR}/bli_config.h
${CMAKE_SOURCE_DIR}/include/${TARGET_ARCH}/blis.h
${headers})
if(ENABLE_OPENMP)
target_link_libraries("${PROJECT_NAME}" PRIVATE OpenMP::OpenMP_CXX)
endif()
target_compile_definitions("${PROJECT_NAME}" PUBLIC -DBLIS_IS_BUILDING_LIBRARY)
set_target_properties("${PROJECT_NAME}" PROPERTIES LINKER_LANGUAGE C OUTPUT_NAME "${LIB_NAME}")
endif()
if(NOT BUILD_SHARED_LIBS)
add_library("${PROJECT_NAME}" STATIC ${CMAKE_SOURCE_DIR}/bli_config.h
${CMAKE_SOURCE_DIR}/include/${TARGET_ARCH}/blis.h
${headers})
if(ENABLE_OPENMP)
set_target_properties("${PROJECT_NAME}" PROPERTIES LINKER_LANGUAGE C OUTPUT_NAME "${LIB_NAME}" STATIC_LIBRARY_OPTIONS "${OpenMP_libomp_LIBRARY}")
else()
set_target_properties("${PROJECT_NAME}" PROPERTIES LINKER_LANGUAGE C OUTPUT_NAME "${LIB_NAME}")
endif()
endif()
link_directories(${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
add_definitions(-DEXPMODULE)
add_subdirectory(config)
add_subdirectory(ref_kernels)
add_subdirectory(kernels)
add_subdirectory(frame)
add_subdirectory(aocl_dtl)
add_subdirectory(test)
add_subdirectory(testsuite)
add_subdirectory(bench)
if(ENABLE_TESTCPP_TESTING)
add_subdirectory(vendor/testcpp)
endif()
if (ENABLE_BLASTEST)
add_subdirectory(blastest)
endif()