mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 12:21:27 +01:00
# Motivation As mentioned in [[RFC] Intel GPU Runtime Upstreaming](https://github.com/pytorch/pytorch/issues/114842), The first runtime component we would like to upstream is `Device` which contains the device management functions of Intel GPU's runtime. To facilitate the code review, we split the code changes into 4 PRs. This is one of the 4 PRs and covers the changes under `c10`. # Design Intel GPU device is a wrapper of sycl device on which kernels can be executed. In our design, we will maintain a sycl device pool containing all the GPU devices of the current machine, and manage the status of the device pool by PyTorch. The thread local safe is considered in this design. The corresponding C++ files related to `Device` will be placed in c10/xpu folder. And we provide the c10 device runtime APIs, like - `c10::xpu::device_count` - `c10::xpu::set_device` - ... # Additional Context In our plan, 4 PRs should be submitted to PyTorch for `Device`: 1. for c10 2. for aten 3. for python frontend 4. for lazy initialization shared with CUDA Pull Request resolved: https://github.com/pytorch/pytorch/pull/116019 Approved by: https://github.com/gujinghui, https://github.com/jgong5, https://github.com/EikanWang, https://github.com/malfet
71 lines
1.7 KiB
CMake
71 lines
1.7 KiB
CMake
# This will define the following variables:
|
||
# SYCL_FOUND : True if the system has the SYCL library.
|
||
# SYCL_INCLUDE_DIR : Include directories needed to use SYCL.
|
||
# SYCL_LIBRARY_DIR :The path to the SYCL library.
|
||
# SYCL_LIBRARY : SYCL library fullname.
|
||
|
||
include(FindPackageHandleStandardArgs)
|
||
|
||
set(SYCL_ROOT "")
|
||
if(DEFINED ENV{SYCL_ROOT})
|
||
set(SYCL_ROOT $ENV{SYCL_ROOT})
|
||
elseif(DEFINED ENV{CMPLR_ROOT})
|
||
set(SYCL_ROOT $ENV{CMPLR_ROOT})
|
||
endif()
|
||
|
||
string(COMPARE EQUAL "${SYCL_ROOT}" "" nosyclfound)
|
||
if(nosyclfound)
|
||
set(SYCL_FOUND False)
|
||
set(SYCL_REASON_FAILURE "SYCL library not set!!")
|
||
set(SYCL_NOT_FOUND_MESSAGE "${SYCL_REASON_FAILURE}")
|
||
return()
|
||
endif()
|
||
|
||
# Find include path from binary.
|
||
find_file(
|
||
SYCL_INCLUDE_DIR
|
||
NAMES include
|
||
HINTS ${SYCL_ROOT}
|
||
NO_DEFAULT_PATH
|
||
)
|
||
|
||
# Find include/sycl path from include path.
|
||
find_file(
|
||
SYCL_INCLUDE_SYCL_DIR
|
||
NAMES sycl
|
||
HINTS ${SYCL_ROOT}/include/
|
||
NO_DEFAULT_PATH
|
||
)
|
||
|
||
# Due to the unrecognized compilation option `-fsycl` in other compiler.
|
||
list(APPEND SYCL_INCLUDE_DIR ${SYCL_INCLUDE_SYCL_DIR})
|
||
|
||
# Find library directory from binary.
|
||
find_file(
|
||
SYCL_LIBRARY_DIR
|
||
NAMES lib lib64
|
||
HINTS ${SYCL_ROOT}
|
||
NO_DEFAULT_PATH
|
||
)
|
||
|
||
# Find SYCL library fullname.
|
||
find_library(
|
||
SYCL_LIBRARY
|
||
NAMES sycl
|
||
HINTS ${SYCL_LIBRARY_DIR}
|
||
NO_DEFAULT_PATH
|
||
)
|
||
|
||
if((NOT SYCL_INCLUDE_DIR) OR (NOT SYCL_LIBRARY_DIR) OR (NOT SYCL_LIBRARY))
|
||
set(SYCL_FOUND False)
|
||
set(SYCL_REASON_FAILURE "SYCL library is incomplete!!")
|
||
set(SYCL_NOT_FOUND_MESSAGE "${SYCL_REASON_FAILURE}")
|
||
return()
|
||
endif()
|
||
|
||
find_package_handle_standard_args(
|
||
SYCL
|
||
FOUND_VAR SYCL_FOUND
|
||
REQUIRED_VARS SYCL_INCLUDE_DIR SYCL_LIBRARY_DIR SYCL_LIBRARY
|
||
REASON_FAILURE_MESSAGE "${SYCL_REASON_FAILURE}")
|