1
- if (Codegen_GPU_cmake_included )
1
+ if (Codegen_XPU_cmake_included )
2
2
return ()
3
3
endif ()
4
- set (Codegen_GPU_cmake_included true )
4
+ set (Codegen_XPU_cmake_included true )
5
5
6
- set (BUILD_TORCH_XPU_ATEN_GENERATED "${CMAKE_BINARY_DIR} /xpu/ATen/ " )
6
+ set (BUILD_TORCH_XPU_ATEN_GENERATED "${CMAKE_BINARY_DIR} /xpu/ATen" )
7
7
file (MAKE_DIRECTORY ${BUILD_TORCH_XPU_ATEN_GENERATED} )
8
8
9
- set (RegisterXPU_PATH ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterXPU_0.cpp)
10
- set (RegisterSparseXPU_PATH ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterSparseXPU_0.cpp)
11
- set (RegisterSparseCsrXPU_PATH ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterSparseCsrXPU_0.cpp)
12
- set (RegisterNestedTensorXPU_PATH ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterNestedTensorXPU_0.cpp)
13
- set (XPUFallback_PATH ${TORCH_XPU_OPS_ROOT} /src/ATen/native/xpu/XPUFallback.template)
9
+ set (RegisterXPU_GENERATED ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterXPU_0.cpp)
10
+ set (RegisterSparseXPU_GENERATED ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterSparseXPU_0.cpp)
11
+ set (RegisterSparseCsrXPU_GENERATED ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterSparseCsrXPU_0.cpp)
12
+ set (RegisterNestedTensorXPU_GENERATED ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterNestedTensorXPU_0.cpp)
13
+ set (XPUFallback_TEMPLATE ${TORCH_XPU_OPS_ROOT} /src/ATen/native/xpu/XPUFallback.template)
14
+ set (XPU_AOTI_INSTALL_DIR ${TORCH_ROOT} /torch/csrc/inductor/aoti_torch/generated /extend)
15
+ set (XPU_AOTI_SHIM_HEADER ${XPU_AOTI_INSTALL_DIR} /c_shim_xpu.h)
16
+ set (XPU_AOTI_SHIM_SOURCE ${XPU_AOTI_INSTALL_DIR} /c_shim_xpu.cpp)
14
17
15
18
if (WIN32 )
16
19
set (FILE_DISPLAY_CMD type )
17
20
# replace forward slash with back slash for compatibility with 'type' command on Windows
18
- string (REPLACE "/" "\\ " RegisterXPU_PATH_BACKSLASH "${RegisterXPU_PATH } " )
19
- string (REPLACE "/" "\\ " XPUFallback_PATH_BACKSLASH "${XPUFallback_PATH } " )
20
- set (REGISTER_FALLBACK_CMD ${FILE_DISPLAY_CMD} ${XPUFallback_PATH_BACKSLASH } ">>" ${RegisterXPU_PATH_BACKSLASH } )
21
+ string (REPLACE "/" "\\ " RegisterXPU_GENERATED_BACKSLASH "${RegisterXPU_GENERATED } " )
22
+ string (REPLACE "/" "\\ " XPUFallback_TEMPLATE_BACKSLASH "${XPUFallback_TEMPLATE } " )
23
+ set (REGISTER_FALLBACK_CMD ${FILE_DISPLAY_CMD} ${XPUFallback_TEMPLATE_BACKSLASH } ">>" ${RegisterXPU_GENERATED_BACKSLASH } )
21
24
else ()
22
25
set (FILE_DISPLAY_CMD cat)
23
- set (REGISTER_FALLBACK_CMD ${FILE_DISPLAY_CMD} ${XPUFallback_PATH } ">>" ${RegisterXPU_PATH } )
26
+ set (REGISTER_FALLBACK_CMD ${FILE_DISPLAY_CMD} ${XPUFallback_TEMPLATE } ">>" ${RegisterXPU_GENERATED } )
24
27
endif ()
25
28
26
- function (GEN_BACKEND file_yaml)
27
- set (generated_files "" )
28
- foreach (f ${ARGN} )
29
- list (APPEND generated_files "${BUILD_TORCH_XPU_ATEN_GENERATED} /${f} " )
30
- endforeach ()
31
- file (GLOB_RECURSE depended_files ${TORCH_XPU_OPS_ROOT} /yaml/${file_yaml} )
32
- add_custom_command (
33
- OUTPUT ${generated_files}
34
- COMMAND
35
- "${PYTHON_EXECUTABLE} " -m torchgen.gen_backend_stubs
36
- --output_dir ${BUILD_TORCH_XPU_ATEN_GENERATED}
37
- --source_yaml ${TORCH_XPU_OPS_ROOT} /yaml/${file_yaml}
38
- COMMAND
39
- ${REGISTER_FALLBACK_CMD}
40
- ${SIMPLE_TRACE}
41
- WORKING_DIRECTORY ${TORCH_ROOT}
42
- DEPENDS
43
- ${depended_files}
44
- ${TORCH_XPU_OPS_ROOT} /yaml/${file_yaml}
45
- ${XPUFallback_PATH}
46
- )
47
- endfunction (GEN_BACKEND)
48
-
49
-
50
- set (RegisterXPU_PATH ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterXPU_0.cpp)
51
- set (RegisterSparseXPU_PATH ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterSparseXPU_0.cpp)
52
- set (RegisterSparseCsrXPU_PATH ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterSparseCsrXPU_0.cpp)
53
- set (RegisterNestedTensorXPU_PATH ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterNestedTensorXPU_0.cpp)
54
- set (XPUFallback_PATH ${TORCH_XPU_OPS_ROOT} /src/ATen/native/xpu/XPUFallback.template)
55
- set (XPU_AOTI_INSTALL_DIR ${TORCH_ROOT} /torch/csrc/inductor/aoti_torch/generated /extend)
56
29
function (GEN_XPU file_yaml)
57
30
set (generated_files "" )
58
31
foreach (f ${ARGN} )
59
32
list (APPEND generated_files "${f} " )
60
33
endforeach ()
61
- file (GLOB_RECURSE depend_files ${TORCH_XPU_OPS_ROOT} /yaml/${file_yaml} )
62
- set (CODEGEN_TEMPLATE ${TORCH_XPU_OPS_ROOT} /yaml/)
34
+ set (CODEGEN_XPU_YAML_DIR ${TORCH_XPU_OPS_ROOT} /yaml)
63
35
64
36
# Codegen prepare process
65
37
if (WIN32 )
66
- string (REPLACE "/" "\\ " DestPATH "${CODEGEN_TEMPLATE} templates" )
38
+ string (REPLACE "/" "\\ " DestPATH "${CODEGEN_XPU_YAML_DIR} / templates" )
67
39
string (REPLACE "/" "\\ " SrcPATH "${CMAKE_SOURCE_DIR} /aten/src/ATen/templates" )
68
40
execute_process (COMMAND cmd /c xcopy ${SrcPATH} ${DestPATH} /E /H /C /I /Y > nul)
69
- string (REPLACE "/" "\\ " RegisterXPU_PATH_BACKSLASH "${RegisterXPU_PATH} " )
70
- string (REPLACE "/" "\\ " XPUFallback_PATH_BACKSLASH "${XPUFallback_PATH} " )
71
- set (REGISTER_FALLBACK_CMD ${FILE_DISPLAY_CMD} ${XPUFallback_PATH_BACKSLASH} ">>" ${RegisterXPU_PATH_BACKSLASH} )
72
41
else ()
73
- execute_process (COMMAND ln -s ${CMAKE_SOURCE_DIR} /aten/src/ATen/templates ${CODEGEN_TEMPLATE} ) # soft link to pytorch templates
74
- set (REGISTER_FALLBACK_CMD ${FILE_DISPLAY_CMD} ${XPUFallback_PATH} ">>" ${RegisterXPU_PATH} )
42
+ execute_process (COMMAND ln -s ${CMAKE_SOURCE_DIR} /aten/src/ATen/templates ${CODEGEN_XPU_YAML_DIR} ) # soft link to pytorch templates
75
43
endif ()
76
- add_custom_command (
77
- OUTPUT ${generated_files}
78
- COMMAND
44
+
45
+ set (XPU_CODEGEN_COMMAND
79
46
"${PYTHON_EXECUTABLE} " -m torchgen.gen
80
- --source -path ${TORCH_XPU_OPS_ROOT} /yaml/
47
+ --source -path ${CODEGEN_XPU_YAML_DIR}
81
48
--install -dir ${BUILD_TORCH_XPU_ATEN_GENERATED}
82
49
--per-operator-headers
83
- --static -dispatch-backend
84
50
--backend-whitelist XPU SparseXPU SparseCsrXPU NestedTensorXPU
85
- # --xpu: generate in-tree RegisterXPU_0.cpp for in-tree OPs
86
51
--xpu
52
+ )
53
+
54
+ add_custom_command (
55
+ COMMENT "Generating XPU ATen Codegen..."
56
+ OUTPUT ${generated_files}
57
+ COMMAND
58
+ ${XPU_CODEGEN_COMMAND}
59
+ --static -dispatch-backend
87
60
# --update-aoti-c-shim: generate extend/c_shim_xpu.h
88
61
--update-aoti-c-shim
89
62
# --exten-aoti-c-shim: specifiy the extend/c_shim_xpu
@@ -99,12 +72,11 @@ function(GEN_XPU file_yaml)
99
72
COMMAND "${PYTHON_EXECUTABLE} " ${TORCH_XPU_OPS_ROOT} /tools/codegen/remove_headers.py --register_xpu_path ${RegisterSparseXPU_PATH}
100
73
COMMAND "${PYTHON_EXECUTABLE} " ${TORCH_XPU_OPS_ROOT} /tools/codegen/remove_headers.py --register_xpu_path ${RegisterSparseCsrXPU_PATH}
101
74
COMMAND "${PYTHON_EXECUTABLE} " ${TORCH_XPU_OPS_ROOT} /tools/codegen/remove_headers.py --register_xpu_path ${RegisterNestedTensorXPU_PATH}
102
- ${SIMPLE_TRACE}
103
75
WORKING_DIRECTORY ${TORCH_ROOT}
104
76
DEPENDS
105
- ${depended_files }
106
- ${TORCH_XPU_OPS_ROOT} /yaml/native/ ${file_yaml }
107
- ${XPUFallback_PATH}
77
+ ${CODEGEN_XPU_YAML_DIR} /native/ ${file_yaml }
78
+ ${XPUFallback_TEMPLATE }
79
+ ${TORCH_XPU_OPS_ROOT} /tools/codegen/install_xpu_headers.py
108
80
)
109
81
110
82
# Post codegen delete the copied templates folder only on Windows.
@@ -118,30 +90,29 @@ function(GEN_XPU file_yaml)
118
90
endif ()
119
91
endfunction (GEN_XPU)
120
92
121
- # GEN_BACKEND(
122
- # xpu_functions.yaml
123
- # XPUNativeFunctions.h
124
- # RegisterXPU_0.cpp)
125
-
126
93
GEN_XPU(
127
94
native_functions.yaml
128
95
${BUILD_TORCH_XPU_ATEN_GENERATED} /XPUFunctions.h
129
- ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterXPU_0.cpp
130
- ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterSparseXPU_0.cpp
131
- ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterSparseCsrXPU_0.cpp
132
- ${BUILD_TORCH_XPU_ATEN_GENERATED} /RegisterNestedTensorXPU_0.cpp
133
- ${XPU_AOTI_INSTALL_DIR} /c_shim_xpu.h
134
- ${XPU_AOTI_INSTALL_DIR} /c_shim_xpu.cpp
96
+ ${BUILD_TORCH_XPU_ATEN_GENERATED} /XPUFunctions_inl.h
97
+ ${RegisterXPU_GENERATED}
98
+ ${RegisterSparseXPU_GENERATED}
99
+ ${RegisterSparseCsrXPU_GENERATED}
100
+ ${RegisterNestedTensorXPU_GENERATED}
101
+ ${XPU_AOTI_SHIM_HEADER}
102
+ ${XPU_AOTI_SHIM_SOURCE}
135
103
)
136
104
137
-
138
105
# The c_shim_xpu.cpp needs include files in ${CMAKE_BINARY_DIR}/xpu/ATen/ops/*.h)
139
106
# The include path is auto generated as "#include <ATen/ops/*.h">
140
107
# To follow the design of aoti codegen, here ${CMAKE_BINARY_DIR}/xpu is added to
141
108
# $TORCH_XPU_OPS_INCLUDE_DIRS, so that "#include <ATen/ops/*.h>" works.
142
109
list (APPEND TORCH_XPU_OPS_INCLUDE_DIRS ${CMAKE_BINARY_DIR} /xpu)
143
110
144
- list (APPEND xpu_generated_src ${RegisterXPU_PATH} ${RegisterSparseXPU_PATH} ${RegisterSparseCsrXPU_PATH} ${RegisterNestedTensorXPU_PATH} )
145
- list (APPEND xpu_generated_src ${XPU_AOTI_INSTALL_DIR} /c_shim_xpu.cpp)
146
- add_custom_target (TORCH_XPU_GEN_TARGET DEPENDS ${xpu_generated_src} )
111
+ list (APPEND xpu_generated_src
112
+ ${RegisterXPU_GENERATED}
113
+ ${RegisterSparseXPU_GENERATED}
114
+ ${RegisterSparseCsrXPU_GENERATED}
115
+ ${RegisterNestedTensorXPU_GENERATED}
116
+ ${XPU_AOTI_SHIM_SOURCE}
117
+ )
147
118
set (ATen_XPU_GEN_SRCS ${xpu_generated_src} )
0 commit comments