Skip to content

Commit 78e5179

Browse files
committed
Update cmakelist.txt
1 parent 351408a commit 78e5179

File tree

1 file changed

+151
-104
lines changed

1 file changed

+151
-104
lines changed

CMakeLists.txt

Lines changed: 151 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,128 +1,175 @@
1-
21
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
32

4-
if (DEFINED ENV{TRITON_INTEL_LLVM_DIR})
5-
MESSAGE(STATUS "[intel_xpu_backend]: using user provide llvm path")
6-
else ()
7-
8-
if (DEFINED ENV{TRITON_CODEGEN_INTEL_XPU_BACKEND})
9-
MESSAGE(STATUS "[intel_xpu_backend]: using intel_llvm")
3+
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.24)
4+
cmake_policy(SET CMP0135 NEW)
5+
endif()
106

11-
SET(TRITON_INTEL_LLVM_DIR $ENV{HOME}/.triton/intel_llvm)
12-
MESSAGE(STATUS "[intel_xpu_backend]: set intel llvm path ${TRITON_INTEL_LLVM_DIR}")
13-
if (EXISTS ${TRITON_INTEL_LLVM_DIR}/lib/cmake)
14-
MESSAGE(STATUS "[intel_xpu_backend]: using previous exists llvm")
7+
if(DEFINED ENV{TRITON_INTEL_LLVM_DIR})
8+
message(STATUS "[intel_xpu_backend]: using user provide llvm path")
159
else()
16-
include(FetchContent)
17-
function(download_file url)
18-
cmake_policy(SET CMP0135 NEW)
19-
FetchContent_Declare(intel-llvm
20-
URL ${url}
21-
SOURCE_DIR ${TRITON_INTEL_LLVM_DIR}
22-
)
23-
24-
FetchContent_Populate(intel-llvm)
25-
endfunction(download_file)
26-
27-
set(LLVM_DOWNLOAD_URL https://github.com/intel/intel-xpu-backend-for-triton/releases/download/llvm_pkg_v0.1/llvm+mlir-17.0.0-x86_64-linux-gnu-ubuntu-18.04-release.tar.xz)
28-
set(OS_INFO_FILE "/etc/os-release")
29-
MESSAGE(STATUS "[intel_xpu_backend]: downloading intel llvm for intel_xpu_backend, path ${TRITON_INTEL_LLVM_DIR}")
30-
if(EXISTS ${OS_INFO_FILE})
31-
file(STRINGS ${OS_INFO_FILE} OS_INFO_KEY_LIST REGEX "^(ID|VERSION_ID)")
32-
set(OS_ID "")
33-
set(OS_VERSION_ID "")
34-
foreach(_os_info ${OS_INFO_KEY_LIST})
35-
if("${_os_info}" MATCHES "^(ID)=(.*)$")
36-
string(TOLOWER "${CMAKE_MATCH_2}" OS_ID)
37-
elseif("${_os_info}" MATCHES "(VERSION_ID)=(.*)$")
38-
string(TOLOWER "${CMAKE_MATCH_2}" OS_VERSION_ID)
39-
string(REGEX REPLACE "^\"(.*)\"$" "\\1" OS_VERSION_ID "${OS_VERSION_ID}")
40-
endif()
41-
endforeach()
10+
if(DEFINED ENV{TRITON_CODEGEN_INTEL_XPU_BACKEND})
11+
message(STATUS "[intel_xpu_backend]: using intel_llvm")
12+
13+
set(TRITON_INTEL_LLVM_DIR $ENV{HOME}/.triton/intel_llvm)
14+
message(
15+
STATUS "[intel_xpu_backend]: set intel llvm path ${TRITON_INTEL_LLVM_DIR}"
16+
)
17+
if(EXISTS ${TRITON_INTEL_LLVM_DIR}/lib/cmake)
18+
message(STATUS "[intel_xpu_backend]: using previous exists llvm")
19+
else()
20+
include(FetchContent)
21+
function(download_file url)
22+
cmake_policy(SET CMP0135 NEW)
23+
24+
FetchContent_Declare(intel-llvm URL ${url} SOURCE_DIR
25+
${TRITON_INTEL_LLVM_DIR})
26+
27+
FetchContent_Populate(intel-llvm)
28+
endfunction(download_file)
29+
30+
# Default llvm package
31+
set(LLVM_DOWNLOAD_URL
32+
https://github.com/intel/intel-xpu-backend-for-triton/releases/download/llvm_pkg_v0.1/llvm+mlir-17.0.0-x86_64-linux-gnu-ubuntu-18.04-release.tar.xz
33+
)
34+
35+
set(ENV_USE_LLVM_ASSERT "false")
36+
if(DEFINED ENV{TRITON_USE_ASSERT_ENABLED_LLVM})
37+
set(ENV_USE_LLVM_ASSERT "$ENV{TRITON_USE_ASSERT_ENABLED_LLVM}")
38+
string(TOLOWER ${ENV_USE_LLVM_ASSERT} ENV_USE_LLVM_ASSERT)
39+
message(STATUS "[intel_xpu_backend]: using intel llvm with assert version for UT")
40+
endif()
41+
if(ENV_USE_LLVM_ASSERT STREQUAL "true")
42+
set(LLVM_DOWNLOAD_URL
43+
https://github.com/intel/intel-xpu-backend-for-triton/releases/download/llvm_pkg_v0.1/llvm+mlir-17.0.0-x86_64-linux-gnu-ubuntu-18.04-assert.tar.xz
44+
)
45+
endif()
46+
47+
set(OS_INFO_FILE "/etc/os-release")
48+
message(
49+
STATUS
50+
"[intel_xpu_backend]: downloading intel llvm for intel_xpu_backend, path ${TRITON_INTEL_LLVM_DIR}"
51+
)
52+
if(EXISTS ${OS_INFO_FILE})
53+
file(STRINGS ${OS_INFO_FILE} OS_INFO_KEY_LIST REGEX "^(ID|VERSION_ID)=")
54+
set(OS_ID "")
55+
set(OS_VERSION_ID "")
56+
foreach(_os_info ${OS_INFO_KEY_LIST})
57+
if("${_os_info}" MATCHES "^(ID)=(.*)$")
58+
string(TOLOWER "${CMAKE_MATCH_2}" OS_ID)
59+
string(REGEX REPLACE "\"" "" OS_ID ${OS_ID})
60+
elseif("${_os_info}" MATCHES "(VERSION_ID)=(.*)$")
61+
string(TOLOWER "${CMAKE_MATCH_2}" OS_VERSION_ID)
62+
string(REGEX REPLACE "\"" "" OS_VERSION_ID ${OS_VERSION_ID})
63+
endif()
64+
endforeach()
65+
66+
if("${OS_ID}" STREQUAL "centos")
67+
if("${OS_VERSION_ID}" STREQUAL "7")
68+
if(ENV_USE_LLVM_ASSERT STREQUAL "true")
69+
set(LLVM_DOWNLOAD_URL
70+
https://github.com/intel/intel-xpu-backend-for-triton/releases/download/llvm_pkg_v0.1/llvm+mlir-17.0.0-x86_64-linux-gnu-centos-7-assert.tar.xz
71+
)
72+
73+
else()
74+
set(LLVM_DOWNLOAD_URL
75+
https://github.com/intel/intel-xpu-backend-for-triton/releases/download/llvm_pkg_v0.1/llvm+mlir-17.0.0-x86_64-linux-gnu-centos-7-release.tar.xz
76+
)
77+
78+
endif()
79+
message(
80+
STATUS
81+
"[intel_xpu_backend]: downloading intel llvm for ${OS_ID} ${OS_VERSION_ID}"
82+
)
83+
endif()
84+
endif()
85+
endif()
86+
87+
message(
88+
STATUS
89+
"[intel_xpu_backend]: downloading intel llvm from ${LLVM_DOWNLOAD_URL}"
90+
)
91+
download_file(${LLVM_DOWNLOAD_URL})
92+
endif()
4293

43-
if("${OS_ID}" STREQUAL "ubuntu")
44-
if("${OS_VERSION_ID}" STREQUAL "22.04")
45-
set(LLVM_DOWNLOAD_URL https://github.com/intel/intel-xpu-backend-for-triton/releases/download/llvm_pkg_v0.1/llvm+mlir-17.0.0-x86_64-linux-gnu-ubuntu-22.04-release.tar.xz)
46-
MESSAGE(STATUS "[intel_xpu_backend]: downloading intel llvm for ${OS_ID} ${OS_VERSION_ID}")
47-
endif()
48-
elseif("${OS_ID}" STREQUAL "centos")
49-
if("${OS_VERSION_ID}" STREQUAL "7")
50-
set(LLVM_DOWNLOAD_URL https://github.com/intel/intel-xpu-backend-for-triton/releases/download/llvm_pkg_v0.1/llvm+mlir-17.0.0-x86_64-linux-gnu-centos-7-release.tar.xz)
51-
MESSAGE(STATUS "[intel_xpu_backend]: downloading intel llvm for ${OS_ID} ${OS_VERSION_ID}")
94+
message(
95+
STATUS
96+
"[intel_xpu_backend]: Triton uses LLVM version ${LLVM_PACKAGE_VERSION} with revision ${LLVM_GIT_REVISION}"
97+
)
98+
message(
99+
STATUS
100+
"[intel_xpu_backend]: Use the LLVM version with revision to re-config for the intel_xpu_backend"
101+
)
102+
# hints from
103+
# https://stackoverflow.com/questions/10205986/how-to-capture-cmake-command-line-arguments
104+
# Propagate the CMake vars to the intel xpu backend
105+
106+
set(CMAKE_ARGS "${CMAKE_ARGS};-DLLVM_DIR=${TRITON_INTEL_LLVM_DIR}")
107+
set(CMAKE_ARGS
108+
"${CMAKE_ARGS};-DLLVM_INCLUDE_DIRS=${TRITON_INTEL_LLVM_DIR}/include")
109+
set(CMAKE_ARGS
110+
"${CMAKE_ARGS};-DLLVM_LIBRARY_DIR=${TRITON_INTEL_LLVM_DIR}/lib")
111+
112+
else()
113+
message(STATUS "[intel_xpu_backend]: using original llvm ")
114+
115+
set(XPU_BACKEND_RECURSIVE ON)
52116
endif()
53117
endif()
54-
endif()
55-
56-
MESSAGE(STATUS "[intel_xpu_backend]: downloading intel llvm from ${LLVM_DOWNLOAD_URL}")
57-
download_file(${LLVM_DOWNLOAD_URL})
58-
endif()
59-
MESSAGE(STATUS "[intel_xpu_backend]: Triton uses LLVM version ${LLVM_PACKAGE_VERSION} with revision ${LLVM_GIT_REVISION}")
60-
MESSAGE(STATUS "[intel_xpu_backend]: Use the LLVM version with revision to re-config for the intel_xpu_backend")
61-
62-
# hints from https://stackoverflow.com/questions/10205986/how-to-capture-cmake-command-line-arguments
63-
# Propagate the CMake vars to the intel xpu backend
64-
65-
set(CMAKE_ARGS "${CMAKE_ARGS};-DLLVM_DIR=${TRITON_INTEL_LLVM_DIR}")
66-
set(CMAKE_ARGS "${CMAKE_ARGS};-DLLVM_INCLUDE_DIRS=${TRITON_INTEL_LLVM_DIR}/include")
67-
set(CMAKE_ARGS "${CMAKE_ARGS};-DLLVM_LIBRARY_DIR=${TRITON_INTEL_LLVM_DIR}/lib")
68-
69-
70-
else ()
71-
MESSAGE(STATUS "[intel_xpu_backend]: using original llvm ")
72-
73-
set(XPU_BACKEND_RECURSIVE ON)
74-
endif()
75-
endif()
76118

77119
if(XPU_BACKEND_RECURSIVE)
78-
set(TRITON_BUILD_PYTHON_MODULE ON)
79-
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
80-
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include) # Tablegen'd files
120+
set(TRITON_BUILD_PYTHON_MODULE ON)
121+
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
122+
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include) # Tablegen'd files
81123

82-
add_subdirectory(include)
83-
add_subdirectory(lib)
84-
add_subdirectory(python)
124+
add_subdirectory(include)
125+
add_subdirectory(lib)
126+
add_subdirectory(python)
85127
else()
86-
87-
88-
89-
get_cmake_property(CACHE_VARS CACHE_VARIABLES)
90-
foreach(CACHE_VAR ${CACHE_VARS})
91-
get_property(CACHE_VAR_HELPSTRING CACHE ${CACHE_VAR} PROPERTY HELPSTRING)
92-
get_property(CACHE_VAR_TYPE CACHE ${CACHE_VAR} PROPERTY TYPE)
128+
get_cmake_property(CACHE_VARS CACHE_VARIABLES)
129+
foreach(CACHE_VAR ${CACHE_VARS})
130+
get_property(
131+
CACHE_VAR_HELPSTRING
132+
CACHE ${CACHE_VAR}
133+
PROPERTY HELPSTRING)
134+
get_property(
135+
CACHE_VAR_TYPE
136+
CACHE ${CACHE_VAR}
137+
PROPERTY TYPE)
93138
if(CACHE_VAR_TYPE STREQUAL "UNINITIALIZED")
94-
set(CACHE_VAR_TYPE)
139+
set(CACHE_VAR_TYPE)
95140
else()
96-
set(CACHE_VAR_TYPE :${CACHE_VAR_TYPE})
141+
set(CACHE_VAR_TYPE :${CACHE_VAR_TYPE})
97142
endif()
98143

99144
if(CACHE_VAR STREQUAL "TRITON_BUILD_TUTORIALS")
100-
set(CMAKE_ARGS "${CMAKE_ARGS};-D${CACHE_VAR}${CACHE_VAR_TYPE}=OFF")
145+
set(CMAKE_ARGS "${CMAKE_ARGS};-D${CACHE_VAR}${CACHE_VAR_TYPE}=OFF")
101146
elseif(CACHE_VAR STREQUAL "TRITON_BUILD_PYTHON_MODULE")
102-
set(CMAKE_ARGS "${CMAKE_ARGS};-D${CACHE_VAR}${CACHE_VAR_TYPE}=OFF")
147+
# We still need the Python module, since there are cross-dependencies.
148+
set(CMAKE_ARGS "${CMAKE_ARGS};-D${CACHE_VAR}${CACHE_VAR_TYPE}=ON")
103149
elseif(CACHE_VAR STREQUAL "LLVM_LIBRARY_DIR")
104-
continue()
150+
continue()
105151
elseif(CACHE_VAR STREQUAL "LLVM_DIR")
106-
continue()
152+
continue()
107153
elseif(CACHE_VAR STREQUAL "LLVM_INCLUDE_DIRS")
108-
continue()
154+
continue()
109155
else()
110-
set(CMAKE_ARGS "${CMAKE_ARGS};-D${CACHE_VAR}${CACHE_VAR_TYPE}=${${CACHE_VAR}}")
156+
# Keep ; semantic by replacing it with \\;
157+
string(REPLACE ";" "\\;" CACHE_VAR_VAL "${${CACHE_VAR}}")
158+
set(CMAKE_ARGS
159+
"${CMAKE_ARGS};-D${CACHE_VAR}${CACHE_VAR_TYPE}=${CACHE_VAR_VAL}")
111160
endif()
112-
endforeach()
113-
114-
execute_process(COMMAND ${CMAKE_COMMAND}
115-
${CMAKE_ARGS}
116-
-DXPU_BACKEND_RECURSIVE=ON
117-
-S ${PROJECT_SOURCE_DIR}
118-
-B ${CMAKE_CURRENT_BINARY_DIR}/triton)
119-
120-
add_custom_target(intel_xpu_backend_for_triton ALL
121-
COMMAND
122-
${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} --target intel_xpu_backend_for_triton
123-
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/triton
124-
COMMENT "Building intel_xpu_backend_for_triton"
125-
VERBATIM
126-
USES_TERMINAL)
161+
endforeach()
162+
163+
execute_process(
164+
COMMAND ${CMAKE_COMMAND} ${CMAKE_ARGS} -DXPU_BACKEND_RECURSIVE=ON -S
165+
${PROJECT_SOURCE_DIR} -B ${CMAKE_CURRENT_BINARY_DIR}/triton)
166+
167+
add_custom_target(
168+
intel_xpu_backend_for_triton ALL
169+
COMMAND ${CMAKE_COMMAND} --build . -j --config ${CMAKE_BUILD_TYPE} --target
170+
intel_xpu_backend_for_triton
171+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/triton
172+
COMMENT "Building intel_xpu_backend_for_triton"
173+
VERBATIM USES_TERMINAL)
127174

128175
endif()

0 commit comments

Comments
 (0)