Skip to content
This repository was archived by the owner on Jul 1, 2023. It is now read-only.

Commit cd1b7bc

Browse files
authored
build: remove support for building without X10 (#1000)
X10 is now supports all the targets. It was part of the 0.9 release. Remove the non-X10 paths as that is no longer really tested.
1 parent 5f5f09e commit cd1b7bc

File tree

8 files changed

+86
-149
lines changed

8 files changed

+86
-149
lines changed

CMakeLists.txt

+61-80
Original file line numberDiff line numberDiff line change
@@ -22,94 +22,75 @@ set(CMAKE_CXX_STANDARD 14)
2222
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
2323
set(CMAKE_Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/swift)
2424

25-
option(BUILD_X10 "enable the x10 tensor library" OFF)
2625
option(USE_BUNDLED_X10
2726
"Use the x10 library bundled in the active Swift toolchain" OFF)
2827
option(USE_BUNDLED_CTENSORFLOW
2928
"Use the CTensorFlow module bundled in the active Swift toolchain" OFF)
3029

31-
if(BUILD_X10)
32-
find_package(X10)
33-
if(NOT X10_FOUND AND NOT USE_BUNDLED_X10)
34-
include(ExternalProject)
30+
find_package(X10)
31+
if(NOT X10_FOUND AND NOT USE_BUNDLED_X10)
32+
include(ExternalProject)
3533

36-
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
37-
set(VISIBILITY_FLAGS "")
38-
else()
39-
set(VISIBILITY_FLAGS --cxxopt=-fvisibility=hidden --cxxopt=-fvisibility-inlines-hidden)
40-
endif()
34+
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
35+
set(VISIBILITY_FLAGS "")
36+
else()
37+
set(VISIBILITY_FLAGS --cxxopt=-fvisibility=hidden --cxxopt=-fvisibility-inlines-hidden)
38+
endif()
4139

42-
ExternalProject_Add(libtensorflow
43-
GIT_REPOSITORY
44-
git://github.com/tensorflow/tensorflow
45-
GIT_TAG
46-
r2.2
47-
UPDATE_DISCONNECTED
48-
TRUE
49-
CONFIGURE_COMMAND
50-
COMMAND
51-
${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/Sources/CX10 <SOURCE_DIR>/swift_bindings
52-
COMMAND
53-
${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/Sources/x10/xla_client <SOURCE_DIR>/tensorflow/compiler/xla/xla_client
54-
COMMAND
55-
${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/Sources/x10/xla_tensor <SOURCE_DIR>/tensorflow/compiler/tf2xla/xla_tensor
56-
COMMAND
57-
# Note that the configure script is affected by the following environment variables:
58-
# TF_CUDA_VERSION
59-
# TF_NEED_CUDA
60-
# TF_CUDNN_VERSION
61-
# CUDA_TOOLKIT_PATH
62-
# CUDNN_INSTALL_PATH
63-
sh -c "yes '' | <SOURCE_DIR>/configure"
64-
BUILD_COMMAND
65-
COMMAND
66-
rm -rf <SOURCE_DIR>/bazel-bin # ${CMAKE_COMMAND} -E rm -Rrf <SOURCE_DIR>/bazel-bin
67-
COMMAND
68-
bazel build ${VISIBILITY_FLAGS} -c opt --define framework_shared_object=false //tensorflow/compiler/tf2xla/xla_tensor:x10 --nocheck_visibility
69-
COMMAND
70-
bazel shutdown
71-
INSTALL_COMMAND
72-
"" # we do not do any installation, we fetch out the artifacts manually
73-
BUILD_IN_SOURCE
74-
TRUE
75-
BUILD_BYPRODUCTS
76-
<SOURCE_DIR>/bazel-bin/tensorflow/compiler/tf2xla/xla_tensor/${CMAKE_SHARED_LIBRARY_PREFIX}x10${CMAKE_SHARED_LIBRARY_SUFFIX}
77-
USES_TERMINAL_BUILD
78-
TRUE
79-
STEP_TARGETS
80-
build)
81-
ExternalProject_Get_Property(libtensorflow SOURCE_DIR)
40+
ExternalProject_Add(libtensorflow
41+
GIT_REPOSITORY
42+
git://github.com/tensorflow/tensorflow
43+
GIT_TAG
44+
r2.2
45+
UPDATE_DISCONNECTED
46+
TRUE
47+
CONFIGURE_COMMAND
48+
COMMAND
49+
${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/Sources/CX10 <SOURCE_DIR>/swift_bindings
50+
COMMAND
51+
${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/Sources/x10/xla_client <SOURCE_DIR>/tensorflow/compiler/xla/xla_client
52+
COMMAND
53+
${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/Sources/x10/xla_tensor <SOURCE_DIR>/tensorflow/compiler/tf2xla/xla_tensor
54+
COMMAND
55+
# Note that the configure script is affected by the following environment variables:
56+
# TF_CUDA_VERSION
57+
# TF_NEED_CUDA
58+
# TF_CUDNN_VERSION
59+
# CUDA_TOOLKIT_PATH
60+
# CUDNN_INSTALL_PATH
61+
sh -c "yes '' | <SOURCE_DIR>/configure"
62+
BUILD_COMMAND
63+
COMMAND
64+
rm -rf <SOURCE_DIR>/bazel-bin # ${CMAKE_COMMAND} -E rm -Rrf <SOURCE_DIR>/bazel-bin
65+
COMMAND
66+
bazel build ${VISIBILITY_FLAGS} -c opt --define framework_shared_object=false //tensorflow/compiler/tf2xla/xla_tensor:x10 --nocheck_visibility
67+
COMMAND
68+
bazel shutdown
69+
INSTALL_COMMAND
70+
"" # we do not do any installation, we fetch out the artifacts manually
71+
BUILD_IN_SOURCE
72+
TRUE
73+
BUILD_BYPRODUCTS
74+
<SOURCE_DIR>/bazel-bin/tensorflow/compiler/tf2xla/xla_tensor/${CMAKE_SHARED_LIBRARY_PREFIX}x10${CMAKE_SHARED_LIBRARY_SUFFIX}
75+
USES_TERMINAL_BUILD
76+
TRUE
77+
STEP_TARGETS
78+
build)
79+
ExternalProject_Get_Property(libtensorflow SOURCE_DIR)
8280

83-
set(X10_LIBRARY ${SOURCE_DIR}/bazel-bin/tensorflow/compiler/tf2xla/xla_tensor/${CMAKE_SHARED_LIBRARY_PREFIX}x10${CMAKE_SHARED_LIBRARY_SUFFIX})
84-
set(X10_INCLUDE_DIRS "${SOURCE_DIR};${SOURCE_DIR}/bazel-bin;${SOURCE_DIR}/bazel-libtensorflow/external/com_google_absl;${SOURCE_DIR}/bazel-libtensorflow/external/com_google_protobuf/src;${SOURCE_DIR}/bazel-libtensorflow/external/eigen_archive")
85-
add_library(x10 IMPORTED UNKNOWN)
86-
set_target_properties(x10 PROPERTIES
87-
IMPORTED_LOCATION ${X10_LIBRARY}
88-
INTERFACE_INCLUDE_DIRECTORIES "${X10_INCLUDE_DIRS}")
89-
add_dependencies(x10
90-
libtensorflow-build)
81+
set(X10_LIBRARY ${SOURCE_DIR}/bazel-bin/tensorflow/compiler/tf2xla/xla_tensor/${CMAKE_SHARED_LIBRARY_PREFIX}x10${CMAKE_SHARED_LIBRARY_SUFFIX})
82+
set(X10_INCLUDE_DIRS "${SOURCE_DIR};${SOURCE_DIR}/bazel-bin;${SOURCE_DIR}/bazel-libtensorflow/external/com_google_absl;${SOURCE_DIR}/bazel-libtensorflow/external/com_google_protobuf/src;${SOURCE_DIR}/bazel-libtensorflow/external/eigen_archive")
83+
add_library(x10 IMPORTED UNKNOWN)
84+
set_target_properties(x10 PROPERTIES
85+
IMPORTED_LOCATION ${X10_LIBRARY}
86+
INTERFACE_INCLUDE_DIRECTORIES "${X10_INCLUDE_DIRS}")
87+
add_dependencies(x10
88+
libtensorflow-build)
9189

92-
get_target_property(DIRECTORIES x10 INTERFACE_INCLUDE_DIRECTORIES)
93-
foreach(directory ${DIRECTORIES})
94-
file(MAKE_DIRECTORY ${directory})
95-
endforeach()
96-
endif()
97-
endif()
98-
99-
if(BUILD_X10)
100-
if(NOT X10_FOUND AND NOT USE_BUNDLED_X10)
101-
add_library(tensorflow UNKNOWN IMPORTED)
102-
set_target_properties(tensorflow PROPERTIES
103-
IMPORTED_LOCATION ${X10_LIBRARY}
104-
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}")
105-
else()
106-
add_library(tensorflow UNKNOWN IMPORTED)
107-
set_target_properties(tensorflow PROPERTIES
108-
IMPORTED_LOCATION ${X10_LIBRARY}
109-
INTERFACE_INCLUDE_DIRECTORIES "${X10_INCLUDE_DIRS}")
110-
endif()
111-
else()
112-
find_package(TensorFlow REQUIRED)
90+
get_target_property(DIRECTORIES x10 INTERFACE_INCLUDE_DIRECTORIES)
91+
foreach(directory ${DIRECTORIES})
92+
file(MAKE_DIRECTORY ${directory})
93+
endforeach()
11394
endif()
11495

11596
find_package(dispatch CONFIG QUIET)
@@ -126,7 +107,7 @@ if(BUILD_TESTING)
126107
add_subdirectory(Tests)
127108
endif()
128109

129-
if(BUILD_X10 AND NOT X10_FOUND AND NOT USE_BUNDLED_X10)
110+
if(NOT X10_FOUND AND NOT USE_BUNDLED_X10)
130111
get_swift_host_os(host_os)
131112
install(FILES ${SOURCE_DIR}/bazel-bin/tensorflow/compiler/tf2xla/xla_tensor/${CMAKE_SHARED_LIBRARY_PREFIX}x10${CMAKE_SHARED_LIBRARY_SUFFIX}
132113
DESTINATION lib/swift/${host_os})

Dockerfile

-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ RUN cmake
5656
-D CMAKE_BUILD_TYPE=Release \
5757
-D CMAKE_INSTALL_PREFIX=/swift-tensorflow-toolchain/usr \
5858
-D CMAKE_Swift_COMPILER=/swift-tensorflow-toolchain/usr/bin/swiftc \
59-
-D BUILD_X10=YES \
6059
-G Ninja \
6160
-S /swift-apis
6261
RUN cmake --build /BinaryCache/tensorflow-swift-apis --verbose

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ This will build X10 as part of the build. Ensure that you do not have the
127127
x10 modules in the toolchain that you are using to develop here.
128128

129129
```shell
130-
cmake -B out -D BUILD_X10=YES -G Ninja -S swift-apis
130+
cmake -B out -G Ninja -S swift-apis
131131
cmake --build out
132132
```
133133

@@ -136,7 +136,7 @@ using the bundled X10 in the toolchain using
136136
`-D USE_BUNDLED_X10=YES -D USE_BUNDLED_CTENSORFLOW=YES`:
137137

138138
```shell
139-
cmake -B out -D BUILD_X10=YES -D USE_BUNDLED_CTENSORFLOW=YES -D USE_BUNDLED_X10=YES -G Ninja -S swift-apis
139+
cmake -B out -D USE_BUNDLED_CTENSORFLOW=YES -D USE_BUNDLED_X10=YES -G Ninja -S swift-apis
140140
cmake --build out
141141
```
142142

Sources/CMakeLists.txt

+2-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,5 @@ add_subdirectory(CTensorFlow)
22
add_subdirectory(third_party/Experimental)
33
add_subdirectory(Tensor)
44
add_subdirectory(TensorFlow)
5-
if(BUILD_X10)
6-
add_subdirectory(CX10)
7-
add_subdirectory(x10)
8-
endif()
5+
add_subdirectory(CX10)
6+
add_subdirectory(x10)

Sources/CTensorFlow/CMakeLists.txt

+7-12
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,16 @@ if(NOT USE_BUNDLED_CTENSORFLOW)
33
target_include_directories(CTensorFlow INTERFACE
44
${CMAKE_CURRENT_SOURCE_DIR})
55
endif()
6-
if(BUILD_X10)
7-
target_link_directories(CTensorFlow INTERFACE
8-
$<TARGET_FILE_DIR:x10>)
9-
target_link_libraries(CTensorFlow INTERFACE
10-
x10)
11-
else()
12-
target_link_directories(CTensorFlow INTERFACE
13-
$<TARGET_FILE_DIR:tensorflow>)
14-
target_link_libraries(CTensorFlow INTERFACE
15-
tensorflow)
16-
endif()
6+
target_link_directories(CTensorFlow INTERFACE
7+
$<TARGET_FILE_DIR:x10>)
8+
target_link_libraries(CTensorFlow INTERFACE
9+
x10)
10+
11+
list(GET X10_INCLUDE_DIRS 0 X10_SOURCE_DIR)
1712

1813
install(FILES module.modulemap CTensorFlow.h
1914
DESTINATION lib/swift/tensorflow)
20-
install(DIRECTORY $<TARGET_PROPERTY:tensorflow,INTERFACE_INCLUDE_DIRECTORIES>/tensorflow/c
15+
install(DIRECTORY ${X10_SOURCE_DIR}/tensorflow/c
2116
DESTINATION lib/swift/tensorflow
2217
FILES_MATCHING
2318
PATTERN c_api.h

Sources/TensorFlow/CMakeLists.txt

+13-18
Original file line numberDiff line numberDiff line change
@@ -70,25 +70,20 @@ add_library(TensorFlow SHARED
7070
Optimizers/MomentumBased.swift
7171
Optimizers/Optimizer.swift
7272
Optimizers/SGD.swift)
73-
if (BUILD_X10)
74-
target_sources(TensorFlow PRIVATE
75-
../x10/swift_bindings/apis/CrossReplicaSum.swift
76-
../x10/swift_bindings/apis/DeviceScope.swift
77-
../x10/swift_bindings/apis/RawOpsManual.swift
73+
target_sources(TensorFlow PRIVATE
74+
../x10/swift_bindings/apis/CrossReplicaSum.swift
75+
../x10/swift_bindings/apis/DeviceScope.swift
76+
../x10/swift_bindings/apis/RawOpsManual.swift
7877

79-
../x10/swift_bindings/Device.swift
80-
../x10/swift_bindings/XLAScalarType.swift
81-
../x10/swift_bindings/XLATensor.swift)
82-
target_compile_definitions(TensorFlow PRIVATE
83-
USING_X10_BACKEND
84-
DEFAULT_BACKEND_EAGER)
85-
target_link_libraries(TensorFlow PRIVATE
86-
CX10
87-
x10)
88-
else()
89-
target_sources(TensorFlow PRIVATE
90-
Core/Device.swift)
91-
endif()
78+
../x10/swift_bindings/Device.swift
79+
../x10/swift_bindings/XLAScalarType.swift
80+
../x10/swift_bindings/XLATensor.swift)
81+
target_compile_definitions(TensorFlow PRIVATE
82+
USING_X10_BACKEND
83+
DEFAULT_BACKEND_EAGER)
84+
target_link_libraries(TensorFlow PRIVATE
85+
CX10
86+
x10)
9287
set_target_properties(TensorFlow PROPERTIES
9388
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY}
9489
OUTPUT_NAME swiftTensorFlow)

Tests/CMakeLists.txt

+1-3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,4 @@ add_test(NAME SwiftAPIsTests
2323
set_tests_properties(SwiftAPIsTests PROPERTIES
2424
ENVIRONMENT LD_LIBRARY_PATH=$<TARGET_FILE_DIR:Tensor>:$<TARGET_FILE_DIR:TensorFlow>)
2525

26-
if(BUILD_X10)
27-
add_subdirectory(x10)
28-
endif()
26+
add_subdirectory(x10)

cmake/modules/FindTensorFlow.cmake

-29
This file was deleted.

0 commit comments

Comments
 (0)