# Data Parallel Control (dpctl)
#
# Copyright 2020-2024 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
**Data Parallel Control (dpctl)** is a Python abstraction layer over SYCL.
Dpctl implements a subset of SYCL's API providing wrappers for the
SYCL runtime classes described in :sycl_runtime_classes:`Section 4.6 <>` of
the :sycl_spec_2020:`SYCL 2020 spec <>`.
"""
__author__ = "Intel Corp."
import os
import os.path
from ._device_selection import select_device_with_aspects
from ._sycl_context import SyclContext, SyclContextCreationError
from ._sycl_device import (
SyclDevice,
SyclDeviceCreationError,
SyclSubDeviceCreationError,
)
from ._sycl_device_factory import (
get_devices,
get_num_devices,
has_accelerator_devices,
has_cpu_devices,
has_gpu_devices,
select_accelerator_device,
select_cpu_device,
select_default_device,
select_gpu_device,
)
from ._sycl_event import SyclEvent
from ._sycl_platform import SyclPlatform, get_platforms, lsplatform
from ._sycl_queue import (
SyclKernelInvalidRangeError,
SyclKernelSubmitError,
SyclQueue,
SyclQueueCreationError,
)
from ._sycl_queue_manager import get_device_cached_queue
from ._sycl_timer import SyclTimer
from ._version import get_versions
from .enum_types import (
backend_type,
device_type,
event_status_type,
global_mem_cache_type,
)
__all__ = [
"SyclContext",
"SyclContextCreationError",
]
__all__ += [
"SyclDevice",
"SyclDeviceCreationError",
"SyclSubDeviceCreationError",
]
__all__ += [
"get_devices",
"select_accelerator_device",
"select_cpu_device",
"select_default_device",
"select_gpu_device",
"select_host_device",
"select_device_with_aspects",
"get_num_devices",
"has_cpu_devices",
"has_gpu_devices",
"has_accelerator_devices",
"has_host_device",
]
__all__ += [
"SyclEvent",
"SyclTimer",
]
__all__ += [
"get_platforms",
"lsplatform",
"SyclPlatform",
]
__all__ += [
"SyclQueue",
"SyclKernelInvalidRangeError",
"SyclKernelSubmitError",
"SyclQueueCreationError",
]
__all__ += [
"get_device_cached_queue",
]
__all__ += [
"device_type",
"backend_type",
"event_status_type",
"global_mem_cache_type",
]
__all__ += [
"get_include",
]
# add submodules
__all__ += [
"memory",
"program",
"tensor",
"utils",
]
if hasattr(os, "add_dll_directory"):
# Include folder containing DPCTLSyclInterface.dll to search path
os.add_dll_directory(os.path.dirname(__file__))
[docs]def get_include():
r"""
Return the directory that contains the dpctl \*.h header files.
Extension modules that need to be compiled against dpctl should use
this function to locate the appropriate include directory.
"""
return os.path.join(os.path.dirname(__file__), "include")
__version__ = get_versions()["version"]
del get_versions