forked from CSUS-LLVM/OptSched
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
109 lines (87 loc) · 3.58 KB
/
CMakeLists.txt
File metadata and controls
109 lines (87 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
cmake_minimum_required(VERSION 3.18)
# project(OptSched LANGUAGES CXX CUDA)
#enable_language(CUDA)
# Allow our .cpp files to include CUDA headers:
#include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
include(CTest)
option(OPTSCHED_INCLUDE_TESTS "Generate build targets for the OptSched unit tests." ON)
# Exit if attempting to build as a standalone project.
IF(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
message(FATAL_ERROR "You cannot build opt-sched as a standalone project. Place opt-sched in the llvm tree under the \"projects\" directory.")
ENDIF()
IF(NOT CMAKE_BUILD_TYPE)
message(FATAL_ERROR "Must set cmake build type.")
ENDIF()
IF(${PACKAGE_VERSION} VERSION_LESS "7.0")
add_definitions("-DLLVM_DEBUG=DEBUG")
ENDIF()
# Add OptSched debug defines eg: SET(OPT_SCHED_DEBUG_FLAGS "-DIS_DEBUG_DEFS_AND_USES -DIS_DEBUG_DEF_USE_COUNT")
SET(OPT_SCHED_DEBUG_FLAGS "")
# If asserts are enabled opt-sched must be built with "IS_DEBUG".
SET(CMAKE_CXX_FLAGS_DEBUG "")
#set(CMAKE_CUDA_SEPARABLE_COMPILATION ON)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
IF(CMAKE_BUILD_TYPE EQUAL "DEBUG")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
ENDIF()
set(OPTSCHED_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(OPTSCHED_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
# OptSched sources
SET(OPT_SCHED_SRCS
Scheduler/aco.hip.cpp
Scheduler/bb_spill.hip.cpp
Scheduler/data_dep.hip.cpp
Scheduler/gen_sched.hip.cpp
Scheduler/graph.hip.cpp
Scheduler/list_sched.hip.cpp
Scheduler/machine_model.hip.cpp
Scheduler/random.hip.cpp
Scheduler/ready_list.hip.cpp
Scheduler/register.hip.cpp
Scheduler/sched_basic_data.hip.cpp
Scheduler/sched_region.hip.cpp
Scheduler/simplified_aco_ds.hip.cpp
Wrapper/OptimizingScheduler.hip.cpp
Scheduler/buffers.cpp
Scheduler/config.cpp
Scheduler/enumerator.cpp
Scheduler/graph_trans.cpp
Scheduler/hist_table.cpp
Scheduler/logger.cpp
Scheduler/reg_alloc.cpp
Scheduler/utilities.cpp
Scheduler/relaxed_sched.cpp
Scheduler/stats.cpp
Wrapper/OptSchedMachineWrapper.cpp
Wrapper/OptSchedDDGWrapperBasic.cpp
Wrapper/OptSchedGenericTarget.cpp)
SET(OPT_SCHED_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/lib)
SET(OPT_SCHED_TARGET_DEPS "LLVMCodeGen")
set(llvm_subproject TRUE)
function(check_if_AMDGPU_supported)
IF(${PACKAGE_VERSION} VERSION_LESS "7.0")
message(WARNING "OptSched requries LLVM version >= 7.0 to build the AMDGPU scheduler.")
SET(AMDGPU_SUPPORTED False PARENT_SCOPE)
ELSE()
SET(AMDGPU_SUPPORTED True PARENT_SCOPE)
ENDIF()
endfunction(check_if_AMDGPU_supported)
# Only build and include AMDGPU functionality if it is being targeted.
IF("AMDGPU" IN_LIST LLVM_TARGETS_TO_BUILD)
check_if_AMDGPU_supported()
IF(${AMDGPU_SUPPORTED})
SET(OPT_SCHED_TARGET_DEPS ${OPT_SCHED_TARGET_DEPS} AMDGPUCommonTableGen)
SET(OPT_SCHED_SRCS ${OPT_SCHED_SRCS} Wrapper/AMDGPU/GCNOptSched.cpp
Wrapper/AMDGPU/OptSchedGCNTarget.cpp
Wrapper/AMDGPU/OptSchedDDGWrapperGCN.cpp)
SET(OPT_SCHED_INCLUDE_DIRS ${OPT_SCHED_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/lib
${LLVM_MAIN_SRC_DIR}/lib/Target/AMDGPU
${CMAKE_CURRENT_BINARY_DIR}/../../lib/Target/AMDGPU
${CMAKE_CURRENT_BINARY_DIR}/..)
ENDIF()
ENDIF()
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}" ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include_directories(${OPT_SCHED_INCLUDE_DIRS})
add_definitions(${OPTSCHED_EXTRA_DEFINITIONS})
link_directories(${OPTSCHED_EXTRA_LINK_LIBRARIES})
add_subdirectory(lib)